<?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>207795</bug_id>
          
          <creation_ts>2020-02-14 14:54:58 -0800</creation_ts>
          <short_desc>Stop using QTKit for rendering WK1 video fullscreen controls</short_desc>
          <delta_ts>2020-03-10 15:06:48 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly 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=208156</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="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jonlee</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1619239</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-02-14 14:54:58 -0800</bug_when>
    <thetext>Stop using QTKit for rendering WK1 video fullscreen controls</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619241</commentid>
    <comment_count>1</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-02-14 14:55:45 -0800</bug_when>
    <thetext>&lt;rdar://problem/48894915&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619251</commentid>
    <comment_count>2</comment_count>
      <attachid>390828</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-02-14 15:05:03 -0800</bug_when>
    <thetext>Created attachment 390828
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619605</commentid>
    <comment_count>3</comment_count>
      <attachid>390828</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2020-02-17 02:05:18 -0800</bug_when>
    <thetext>Comment on attachment 390828
Patch

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

&gt; Source/WebKitLegacy/mac/ChangeLog:12
&gt; +        move the fullscreen winodw to a separate space. This requires subclassing AVPlayerView so that

window</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619706</commentid>
    <comment_count>4</comment_count>
      <attachid>390931</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-02-17 10:13:31 -0800</bug_when>
    <thetext>Created attachment 390931
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619715</commentid>
    <comment_count>5</comment_count>
      <attachid>390931</attachid>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2020-02-17 10:29:17 -0800</bug_when>
    <thetext>Comment on attachment 390931
Patch

Seems to break the build:

iOS:
PAL/pal/spi/cocoa/AVKitSPI.h:33:33: error: cannot find interface declaration for &apos;UIResponder&apos;, superclass of &apos;AVPlayerController&apos;
https://ews-build.webkit.org/#/builders/23/builds/10800/steps/7/logs/errors

macOS:
clang: error: no such file or directory: &apos;/Volumes/Data/worker/macOS-Mojave-Release-Build-EWS/build/Source/WebKitLegacy/mac/WebView/WebVideoFullscreenHUDWindowController.mm&apos;
https://ews-build.webkit.org/#/builders/33/builds/3067/steps/7/logs/errors</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619743</commentid>
    <comment_count>6</comment_count>
      <attachid>390942</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-02-17 11:02:37 -0800</bug_when>
    <thetext>Created attachment 390942
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619772</commentid>
    <comment_count>7</comment_count>
      <attachid>390957</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-02-17 11:58:29 -0800</bug_when>
    <thetext>Created attachment 390957
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619854</commentid>
    <comment_count>8</comment_count>
      <attachid>390970</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-02-17 13:42:21 -0800</bug_when>
    <thetext>Created attachment 390970
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1620940</commentid>
    <comment_count>9</comment_count>
      <attachid>390970</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2020-02-19 16:40:34 -0800</bug_when>
    <thetext>Comment on attachment 390970
Patch

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

&gt; Source/WebKitLegacy/mac/WebView/WebVideoFullscreenController.mm:193
&gt; +//    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationDidChangeScreenParameters:) name:NSApplicationDidChangeScreenParametersNotification object:NSApp];

please remove.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621899</commentid>
    <comment_count>10</comment_count>
      <attachid>391468</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-02-22 14:34:50 -0800</bug_when>
    <thetext>Created attachment 391468
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621953</commentid>
    <comment_count>11</comment_count>
      <attachid>391468</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-22 21:46:02 -0800</bug_when>
    <thetext>Comment on attachment 391468
Patch for landing

Clearing flags on attachment: 391468

Committed r257189: &lt;https://trac.webkit.org/changeset/257189&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390828</attachid>
            <date>2020-02-14 15:05:03 -0800</date>
            <delta_ts>2020-02-17 10:13:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207795-20200214150502.patch</filename>
            <type>text/plain</type>
            <size>77570</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2NTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTU3Yzk0NDI5ZDdhMzBj
MWRiNGUxMTVlMDA1ODVhMDRlMTdkNTZlZi4uZmFlN2M4MzgxZjg3MjY3YzliNTM4MDE4MTVmNTBk
MjU5YTJkNGZkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIwLTAyLTE0ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFN0b3AgdXNpbmcgUVRLaXQg
Zm9yIHJlbmRlcmluZyBXSzEgdmlkZW8gZnVsbHNjcmVlbiBjb250cm9scworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3Nzk1CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS80ODg5NDkxNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBEcml2ZS1ieSBmaXhlczoKKworICAgICAgICAtIERvbid0IHNldCB0aGUg
dmlkZW8gbGF5ZXIgdG8gbm90LXZpc2libGUgd2hlbiBpbiB2aWRlbyBmdWxsc2NyZWVuIG1vZGUu
CisgICAgICAgIC0gRXhwb3J0IHByZXZpb3VzbHkgdW4tZXhwb3J0ZWQgbWV0aG9kcy4KKyAgICAg
ICAgLSBNYWtlIHNvbWUgaW9zLW9ubHkgY2xhc3NlcyBhdmFpbGFibGUgb24gbWFjLgorICAgICAg
ICAtIEFkZCBhIGNvdXBsZSBwcmV2aW91c2x5IHVuaW1wbGVtZW50ZWQgcHJvcGVydGllcyB0byBX
ZWJBVlBsYXllckNvbnRyb2xsZXIgbmVlZGVkIGJ5IEFWS2l0LgorICAgICAgICAtIFdlYkNvcmVG
dWxsc2NyZWVuV2luZG93IGRvZXNuJ3QgZGVwZW5kIG9uIEZVTExTQ1JFRU5fQVBJLgorCisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
Ojp2aXNpYmlsaXR5U3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1l
bnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNldFZpZGVvRnVsbHNj
cmVlbkxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlQVZLaXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlQVZLaXQubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VB
VktpdDo6ZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9X
ZWJBVlBsYXllckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViQVZQbGF5
ZXJDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgY2FuU2Vl
a0ZyYW1lQmFja3dhcmRdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIGNhblNl
ZWtGcmFtZUZvcndhcmRdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZUZ1bGxTY3Jl
ZW5XaW5kb3cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZUZ1bGxTY3JlZW5XaW5k
b3cubW06CisKIDIwMjAtMDItMTMgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAK
ICAgICAgICAgTWVkaWFUb29sYm94IG1heSBub3QgYmUgYXZhaWxhYmxlOyBjaGVjayBiZWZvcmUg
Y2FsbGluZyBNVE92ZXJyaWRlU2hvdWxkUGxheUhEUlZpZGVvKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmlu
ZGV4IDg5MGE4NDM4ZmEwZjA2NzU3NmQ1MGE3OTRmZDJlMTBiMzYwYTU1MTMuLjFlYmU3OTZlNmE2
YWM1N2UyOGI2OGE3YTUyZjgwZTRiOTIzYmY4ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE2IEBACisyMDIwLTAyLTE0ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgor
CisgICAgICAgIFN0b3AgdXNpbmcgUVRLaXQgZm9yIHJlbmRlcmluZyBXSzEgdmlkZW8gZnVsbHNj
cmVlbiBjb250cm9scworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA3Nzk1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80ODg5NDkxNT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBBTC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhbC9zcGkvY29jb2EvQVZLaXRTUEkuaDoKKyAg
ICAgICAgKiBwYWwvc3BpL21hYy9OU1dpbmRvd1NQSS5oOgorICAgICAgICAqIHBhbC9zcGkvbWFj
L1FUS2l0U1BJLmg6IFJlbW92ZWQuCisKIDIwMjAtMDItMTIgIFJ5YW4gSGFkZGFkICA8cnlhbmhh
ZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjI1NjAx
MC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBlNjA3NDRmZjRiMjczMTBkMDJmZTAy
YjkxN2RmMDk0NTIzNGVhM2MwLi5mNDBiNGZiYzJiNzZmZTA0NDBmN2UxNzA2NDk5ZWQyYzg2MThl
NWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzYgQEAKKzIwMjAt
MDItMTQgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcCB1
c2luZyBRVEtpdCBmb3IgcmVuZGVyaW5nIFdLMSB2aWRlbyBmdWxsc2NyZWVuIGNvbnRyb2xzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc3OTUKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ4ODk0OTE1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFN3aXRjaCB0byB1c2luZyBBVlBsYXllclZpZXcgaW5z
dGVhZCBvZiBRVEhVRCB0byByZW5kZXIgb3VyIGZ1bGxzY3JlZW4gY29udHJvbHMuCisKKyAgICAg
ICAgSW4gYWRkaXRpb24sIHN3aXRjaCB0byBhIG1vZGVybiBOU1dpbmRvdyBmdWxsc2NyZWVuIEFQ
SSwgd2l0aCBjdXN0b20sIHNtb290aCBhbmltYXRpb25zIHdoaWNoIAorICAgICAgICBtb3ZlIHRo
ZSBmdWxsc2NyZWVuIHdpbm9kdyB0byBhIHNlcGFyYXRlIHNwYWNlLiBUaGlzIHJlcXVpcmVzIHN1
YmNsYXNzaW5nIEFWUGxheWVyVmlldyBzbyB0aGF0CisgICAgICAgIGZ1bGxzY3JlZW4gdG9nZ2xp
bmcgd2lsbCBzaWduYWwgdG8gdGhlIGNvbnRyb2xsZXIsIHNvIHRoYXQgb3VyIGZ1bGxzY3JlZW4g
YnV0dG9uIGFuZCB0aGUgaW5saW5lCisgICAgICAgIHZlcnNpb24gb2Ygc2FtZSBkb24ndCBnZXQg
b3V0IG9mIHN5bmMuIEJlY2F1c2UgQVZQbGF5ZXJWaWV3IHJlcXVpcmVzIGFuIEFWUGxheWVyIGlu
IG9yZGVyIHRvCisgICAgICAgIGRpc3BsYXkgdGhlIHZpZGVvIGxheWVyLCBhbmQgd2Ugd29uJ3Qg
bmVjZXNzYXJpbHkgaGF2ZSBhbiBBVlBsYXllciBmb3IgTVNFLWJhY2tlZCB2aWRlb3MsIGluc3Rl
YWQKKyAgICAgICAgaW5zdGFsbCBhIGN1c3RvbSBvdmVybGF5IHZpZXcgaW5zaWRlIHRoZSBBVlBs
YXllclZpZXcgaW4gd2hpY2ggdG8gaG9zdCB0aGUgZnVsbHNjcmVlbiB2aWRlbyBsYXllci4KKwor
ICAgICAgICAqIFdlYlZpZXcvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5oOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbToKKyAgICAgICAgKC1b
V2ViT3ZlcmxheUxheWVyIGxheW91dFN1YmxheWVyc10pOgorICAgICAgICAoV2ViQVZQbGF5ZXJW
aWV3X2RlbGVnYXRlKToKKyAgICAgICAgKFdlYkFWUGxheWVyVmlld19zZXREZWxlZ2F0ZSk6Cisg
ICAgICAgIChXZWJBVlBsYXllclZpZXdfaXNGdWxsU2NyZWVuKToKKyAgICAgICAgKFdlYkFWUGxh
eWVyVmlld19lbnRlckZ1bGxTY3JlZW4pOgorICAgICAgICAoV2ViQVZQbGF5ZXJWaWV3X2V4aXRG
dWxsU2NyZWVuKToKKyAgICAgICAgKGFsbG9jV2ViQVZQbGF5ZXJWaWV3SW5zdGFuY2UpOgorICAg
ICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIGluaXRdKToKKyAgICAgICAgKC1b
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciBkZWFsbG9jXSk6CisgICAgICAgICgtW1dlYlZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgZnVsbHNjcmVlbldpbmRvd10pOgorICAgICAgICAoLVtX
ZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIHdpbmRvd0RpZExvYWRdKToKKyAgICAgICAgKC1b
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciBzZXRWaWRlb0VsZW1lbnQ6XSk6CisgICAgICAg
ICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgZW50ZXJGdWxsc2NyZWVuOl0pOgorICAg
ICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIGV4aXRGdWxsc2NyZWVuXSk6Cisg
ICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgYXBwbGljYXRpb25EaWRSZXNp
Z25BY3RpdmU6XSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgX3Jl
cXVlc3RFeGl0XSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgX3Jl
cXVlc3RFbnRlcl0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIGNh
bmNlbE9wZXJhdGlvbjpdKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ciBwbGF5ZXJWaWV3SXNGdWxsU2NyZWVuOl0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyIHBsYXllclZpZXdSZXF1ZXN0RW50ZXJGdWxsc2NyZWVuOl0pOgorICAgICAg
ICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIHBsYXllclZpZXdSZXF1ZXN0RXhpdEZ1
bGxzY3JlZW46XSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgY3Vz
dG9tV2luZG93c1RvRW50ZXJGdWxsU2NyZWVuRm9yV2luZG93Ol0pOgorICAgICAgICAoLVtXZWJW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIHdpbmRvdzpzdGFydEN1c3RvbUFuaW1hdGlvblRvRW50
ZXJGdWxsU2NyZWVuV2l0aER1cmF0aW9uOl0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyIGN1c3RvbVdpbmRvd3NUb0V4aXRGdWxsU2NyZWVuRm9yV2luZG93Ol0pOgor
ICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIHdpbmRvdzpzdGFydEN1c3Rv
bUFuaW1hdGlvblRvRXhpdEZ1bGxTY3JlZW5XaXRoRHVyYXRpb246XSk6CisgICAgICAgICgtW1dl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgd2luZG93RGlkRW50ZXJGdWxsU2NyZWVuOl0pOgor
ICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIHdpbmRvd1dpbGxFeGl0RnVs
bFNjcmVlbjpdKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciB3aW5k
b3dEaWRFeGl0RnVsbFNjcmVlbjpdKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlciBjbGVhckZhZGVBbmltYXRpb25dKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlciB3aW5kb3dEaWRFeGl0RnVsbHNjcmVlbl0pOiBEZWxldGVk
LgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIHdpbmRvd0RpZEVudGVy
RnVsbHNjcmVlbl0pOiBEZWxldGVkLgorICAgICAgICAoZnJhbWVFeHBhbmRlZFRvUmF0aW9PZkZy
YW1lKTogRGVsZXRlZC4KKyAgICAgICAgKGNyZWF0ZUJhY2tncm91bmRGdWxsc2NyZWVuV2luZG93
KTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciBzZXR1
cEZhZGVBbmltYXRpb25JZk5lZWRlZEFuZEZhZGVJbjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1b
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciBhcHBsaWNhdGlvbkRpZENoYW5nZVNjcmVlblBh
cmFtZXRlcnM6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXIgdXBkYXRlTWVudUFuZERvY2tGb3JGdWxsc2NyZWVuXSk6IERlbGV0ZWQuCisgICAgICAg
ICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgcmVxdWVzdEV4aXRGdWxsc2NyZWVuV2l0
aEFuaW1hdGlvbjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlciByZXF1ZXN0RXhpdEZ1bGxzY3JlZW5dKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2Vi
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciBmYWRlSFVESW5dKTogRGVsZXRlZC4KKyAgICAgICAg
KC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciBvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOm9m
T2JqZWN0OmNoYW5nZTpjb250ZXh0Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyIHJhdGVDaGFuZ2VkOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtX
ZWJWaWRlb0Z1bGxzY3JlZW5XaW5kb3cgaW5pdFdpdGhDb250ZW50UmVjdDpzdHlsZU1hc2s6YmFj
a2luZzpkZWZlcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuV2lu
ZG93IGRlYWxsb2NdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuV2lu
ZG93IHJlc2lnbkZpcnN0UmVzcG9uZGVyXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlZpZGVv
RnVsbHNjcmVlbldpbmRvdyBjYW5CZWNvbWVLZXlXaW5kb3ddKTogRGVsZXRlZC4KKyAgICAgICAg
KC1bV2ViVmlkZW9GdWxsc2NyZWVuV2luZG93IG1vdXNlRG93bjpdKTogRGVsZXRlZC4KKyAgICAg
ICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuV2luZG93IGNhbmNlbE9wZXJhdGlvbjpdKTogRGVsZXRl
ZC4KKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuV2luZG93IGFuaW1hdGVkUmVzaXplRGlk
RW5kXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbldpbmRvdyBhbmlt
YXRlRnJvbVJlY3Q6dG9SZWN0OndpdGhTdWJBbmltYXRpb246Y29udHJvbGxlckFjdGlvbjpdKTog
RGVsZXRlZC4KKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuV2luZG93IGFuaW1hdGlvbkRp
ZEVuZDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuV2luZG93IG1v
dXNlTW92ZWQ6XSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViVmlldy9XZWJWaWRlb0Z1bGxzY3Jl
ZW5IVURXaW5kb3dDb250cm9sbGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogV2ViVmlldy9XZWJW
aWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1tOiBSZW1vdmVkLgorCiAyMDIwLTAy
LTEzICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIHJvbGxpbmcgb3V0IHIyNTUxNTgsIDI1NTQwNSBhbmQgcjI1NTQ4NgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDM4ZDdm
YTllNWQwOWMyY2Q5ZDhjNjA4ZWJhMzhlNzA1MDRhMzA5NmEuLmQyZTBjODIwOTEzZDU0YzYwMGQ4
ZjE0YTIwYWEzZThjNDA1NDUzODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTk1LDcgKzk1LDYgQEAKIAkJMEM3Nzg1OUMxRjQ1
MTMwRjAwRjRFQkI2IC8qIE5TVmlld1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEM3Nzg1ODMxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TVmlld1NQSS5o
ICovOyB9OwogCQkwQzc3ODU5RDFGNDUxMzBGMDBGNEVCQjYgLyogTlNXaW5kb3dTUEkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBDNzc4NTg0MUY0NTEz
MEYwMEY0RUJCNiAvKiBOU1dpbmRvd1NQSS5oICovOyB9OwogCQkwQzc3ODU5RTFGNDUxMzBGMDBG
NEVCQjYgLyogUElQU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwQzc3ODU4NTFGNDUxMzBGMDBGNEVCQjYgLyogUElQU1BJLmggKi87IH07Ci0JCTBD
Nzc4NTlGMUY0NTEzMEYwMEY0RUJCNiAvKiBRVEtpdFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEM3Nzg1ODYxRjQ1MTMwRjAwRjRFQkI2IC8qIFFU
S2l0U1BJLmggKi87IH07CiAJCTBDNzc4NUEwMUY0NTEzMEYwMEY0RUJCNiAvKiBRdWlja0xvb2tN
YWNTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBD
Nzc4NTg3MUY0NTEzMEYwMEY0RUJCNiAvKiBRdWlja0xvb2tNYWNTUEkuaCAqLzsgfTsKIAkJMEM3
Nzg1QTExRjQ1MTMwRjAwRjRFQkI2IC8qIFRlbGVwaG9ueVV0aWxpdGllc1NQSS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEM3Nzg1ODgxRjQ1MTMwRjAw
RjRFQkI2IC8qIFRlbGVwaG9ueVV0aWxpdGllc1NQSS5oICovOyB9OwogCQkwQ0Y5OUNBNDFGNzM2
Mzc1MDA3RUU3OTMgLyogTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBDMDBDRkQxMUY2OENFNDYwMEFBQzI2RCAv
KiBNZWRpYVRpbWVBVkZvdW5kYXRpb24uY3BwICovOyB9OwpAQCAtMjYzLDcgKzI2Miw2IEBACiAJ
CTBDNzc4NTgzMUY0NTEzMEYwMEY0RUJCNiAvKiBOU1ZpZXdTUEkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTlNWaWV3U1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBDNzc4NTg0MUY0NTEzMEYwMEY0RUJCNiAvKiBOU1dpbmRvd1NQSS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBOU1dpbmRvd1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwQzc3ODU4NTFGNDUxMzBGMDBGNEVCQjYgLyogUElQU1BJLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBJUFNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQkwQzc3ODU4NjFGNDUxMzBGMDBGNEVCQjYgLyogUVRLaXRTUEkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUVRLaXRTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEM3Nzg1ODcxRjQ1MTMwRjAwRjRFQkI2IC8qIFF1aWNrTG9va01hY1NQSS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdWlja0xvb2tNYWNTUEkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEM3Nzg1ODgxRjQ1MTMwRjAwRjRFQkI2IC8qIFRlbGVw
aG9ueVV0aWxpdGllc1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZWxl
cGhvbnlVdGlsaXRpZXNTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMENGOTlD
QTYxRjczODQzNjAwN0VFNzkzIC8qIENvcmVNZWRpYVNvZnRMaW5rLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvcmVNZWRpYVNvZnRMaW5rLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUxMCw3ICs1MDgsNiBAQAogCQkJCTBDNzc4NTgzMUY0NTEz
MEYwMEY0RUJCNiAvKiBOU1ZpZXdTUEkuaCAqLywKIAkJCQkwQzc3ODU4NDFGNDUxMzBGMDBGNEVC
QjYgLyogTlNXaW5kb3dTUEkuaCAqLywKIAkJCQkwQzc3ODU4NTFGNDUxMzBGMDBGNEVCQjYgLyog
UElQU1BJLmggKi8sCi0JCQkJMEM3Nzg1ODYxRjQ1MTMwRjAwRjRFQkI2IC8qIFFUS2l0U1BJLmgg
Ki8sCiAJCQkJMEM3Nzg1ODcxRjQ1MTMwRjAwRjRFQkI2IC8qIFF1aWNrTG9va01hY1NQSS5oICov
LAogCQkJCUExMTc1QjQ4MUY2QUZGOEUwMEM0QjlGMCAvKiBTcGVlY2hTeW50aGVzaXNTUEkuaCAq
LywKIAkJCQkwQzc3ODU4ODFGNDUxMzBGMDBGNEVCQjYgLyogVGVsZXBob255VXRpbGl0aWVzU1BJ
LmggKi8sCkBAIC04MTMsNyArODEwLDYgQEAKIAkJCQkwQzc3ODU5RTFGNDUxMzBGMDBGNEVCQjYg
LyogUElQU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTE3NUI0RTFGNkIzMzczMDBDNEI5RjAg
LyogUG9wdXBNZW51LmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzJEQTE1NjFGM0JFQjQ5MDBEQkMz
MTcgLyogcHRocmVhZFNQSS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEM3Nzg1OUYxRjQ1MTMwRjAw
RjRFQkI2IC8qIFFUS2l0U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzJEQTE1NzFGM0JFQjQ5
MDBEQkMzMTcgLyogUXVhcnR6Q29yZVNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEM3Nzg1QTAx
RjQ1MTMwRjAwRjRFQkI2IC8qIFF1aWNrTG9va01hY1NQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDQ1MEZDQTAyMUY1RjYwMjAwNERGQTU2IC8qIFF1aWNrTG9va1NvZnRMaW5rLmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0FWS2l0
U1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9BVktpdFNQSS5oCmluZGV4
IDA5NDY5OGExYmVmMzMyYWMwMGEzOWEyMjEzYzczODcxMDQ4ZjVkN2MuLmIxNDMzMTUwNDIwODc4
NDlhNjVhMjRmZGE0OTA4ODkzMmZkY2Y4YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvc3BpL2NvY29hL0FWS2l0U1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9z
cGkvY29jb2EvQVZLaXRTUEkuaApAQCAtMTc4LDYgKzE3OCwyMSBAQCBOU19BU1NVTUVfTk9OTlVM
TF9FTkQKICNlbmRpZiAvLyBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogI2VuZGlmIC8vIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAKKyNpZiBQTEFURk9STShNQUMpCisjaWYgVVNFKEFQUExFX0lOVEVS
TkFMX1NESykKKyNpbXBvcnQgPEFWS2l0L0FWUGxheWVyVmlld19Qcml2YXRlLmg+CisjZWxzZQor
I2ltcG9ydCA8QVZLaXQvQVZQbGF5ZXJWaWV3Lmg+CisKK0BpbnRlcmZhY2UgQVZQbGF5ZXJWaWV3
IChXZWJLaXRGdWxsc2NyZWVuU1BJKQorQHByb3BlcnR5IEFWUGxheWVyQ29udHJvbGxlciAqcGxh
eWVyQ29udHJvbGxlcjsKK0Bwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgaXNGdWxsU2NyZWVuOwor
LSAodm9pZCllbnRlckZ1bGxTY3JlZW46KGlkKXNlbmRlcjsKKy0gKHZvaWQpZXhpdEZ1bGxTY3Jl
ZW46KGlkKXNlbmRlcjsKK0BlbmQKKyNlbmRpZiAvLyBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQor
I2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKKwogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19U
QVJHRVQpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaWYgVVNFKEFQUExFX0lOVEVSTkFM
X1NESykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9OU1dpbmRv
d1NQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL05TV2luZG93U1BJLmgKaW5k
ZXggMDhhZjk1YTA0NGFkNjk5MDQyMDYyMTdhNGM0YTc1MDAzMDlhNGExMy4uYzU2OTQyNGFjOWZi
ZDRmNGJhMWRhZTI5NzY2ZjFkMGI2NDBhMGU3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9zcGkvbWFjL05TV2luZG93U1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9zcGkvbWFjL05TV2luZG93U1BJLmgKQEAgLTQwLDcgKzQwLDggQEAKIC0gKGlkKV9vbGRGaXJz
dFJlc3BvbmRlckJlZm9yZUJlY29taW5nOwogLSAoaWQpX25ld0ZpcnN0UmVzcG9uZGVyQWZ0ZXJS
ZXNpZ25pbmc7CiAtICh2b2lkKV9zZXRDdXJzb3JGb3JNb3VzZUxvY2F0aW9uOihOU1BvaW50KXBv
aW50OwotCistICh2b2lkKWV4aXRGdWxsU2NyZWVuTW9kZTooaWQpc2VuZGVyOworLSAodm9pZCll
bnRlckZ1bGxTY3JlZW5Nb2RlOihpZClzZW5kZXI7CiBAZW5kCiAKIGVudW0gewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL1FUS2l0U1BJLmggYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL3NwaS9tYWMvUVRLaXRTUEkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDRiYjI0OTYyNzA4NTcyOWYxNWJhMTRiNDI4YTRlNzBmMmY2YmJjNC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL3NwaS9tYWMvUVRLaXRTUEkuaAorKysgL2Rldi9udWxsCkBAIC0xLDE1MCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9T
REspCi0KLSNpbXBvcnQgPFFUS2l0L1FUSFVEQmFja2dyb3VuZFZpZXdfUHJpdmF0ZS5oPgotI2lt
cG9ydCA8UVRLaXQvUVRLaXRfUHJpdmF0ZS5oPgotI2ltcG9ydCA8UVRLaXQvUVRVdGlsaXRpZXNf
UHJpdmF0ZS5oPgotCi0jZWxzZQotCi1lbnVtIHsKLSAgICBrUVRUaW1lSXNJbmRlZmluaXRlID0g
MSA8PCAwCi19OwotCi10eXBlZGVmIHN0cnVjdCB7Ci0gICAgbG9uZyBsb25nIHRpbWVWYWx1ZTsK
LSAgICBsb25nIHRpbWVTY2FsZTsKLSAgICBsb25nIGZsYWdzOwotfSBRVFRpbWU7Ci0KLXR5cGVk
ZWYgc3RydWN0IHsKLSAgICBRVFRpbWUgdGltZTsKLSAgICBRVFRpbWUgZHVyYXRpb247Ci19IFFU
VGltZVJhbmdlOwotCi10eXBlZGVmIGVudW0gewotICAgIFFUSW5jbHVkZUNvbW1vblR5cGVzID0g
MCwKLSAgICBRVEluY2x1ZGVPbmx5RmlnTWVkaWFGaWxlVHlwZXMgPSAxIDw8IDgsCi19IFFUTW92
aWVGaWxlVHlwZU9wdGlvbnM7Ci0KLWVudW0gewotICAgIFFUTW92aWVUeXBlVW5rbm93biA9IDAs
Ci0gICAgUVRNb3ZpZVR5cGVMb2NhbCwKLSAgICBRVE1vdmllVHlwZUZhc3RTdGFydCwKLSAgICBR
VE1vdmllVHlwZUxpdmVTdHJlYW0sCi0gICAgUVRNb3ZpZVR5cGVTdG9yZWRTdHJlYW0KLX07Ci0K
LUBjbGFzcyBRVFRyYWNrOwotCi1AaW50ZXJmYWNlIFFUTWVkaWEgOiBOU09iamVjdAotCi0tIChp
ZClhdHRyaWJ1dGVGb3JLZXk6KE5TU3RyaW5nICopYXR0cmlidXRlS2V5OwotCi1AZW5kCi0KLUBp
bnRlcmZhY2UgUVRNb3ZpZSA6IE5TT2JqZWN0IDxOU0NvZGluZywgTlNDb3B5aW5nPgotCi0rIChO
U0FycmF5ICopbW92aWVGaWxlVHlwZXM6KFFUTW92aWVGaWxlVHlwZU9wdGlvbnMpdHlwZXM7Ci0K
LSsgKHZvaWQpZGlzYWJsZUNvbXBvbmVudDooQ29tcG9uZW50RGVzY3JpcHRpb24pY29tcG9uZW50
OwotCi0tIChpZClpbml0V2l0aEF0dHJpYnV0ZXM6KE5TRGljdGlvbmFyeSAqKWF0dHJpYnV0ZXMg
ZXJyb3I6KE5TRXJyb3IgKiopZXJyb3JQdHI7Ci0KLS0gKHZvaWQpcGxheTsKLS0gKHZvaWQpc3Rv
cDsKLQotLSAoUVRUaW1lKWR1cmF0aW9uOwotCi0tIChRVFRpbWUpY3VycmVudFRpbWU7Ci0tICh2
b2lkKXNldEN1cnJlbnRUaW1lOihRVFRpbWUpdGltZTsKLQotLSAoZmxvYXQpcmF0ZTsKLS0gKHZv
aWQpc2V0UmF0ZTooZmxvYXQpcmF0ZTsKLQotLSAoZmxvYXQpdm9sdW1lOwotLSAodm9pZClzZXRW
b2x1bWU6KGZsb2F0KXZvbHVtZTsKLQotLSAoTlNEaWN0aW9uYXJ5ICopbW92aWVBdHRyaWJ1dGVz
OwotCi0tIChpZClhdHRyaWJ1dGVGb3JLZXk6KE5TU3RyaW5nICopYXR0cmlidXRlS2V5OwotLSAo
dm9pZClzZXRBdHRyaWJ1dGU6KGlkKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilhdHRyaWJ1dGVL
ZXk7Ci0KLS0gKE5TQXJyYXkgKil0cmFja3M7Ci0KLS0gKE5TQXJyYXkgKilhbHRlcm5hdGVHcm91
cFR5cGVzOwotLSAoTlNBcnJheSAqKWFsdGVybmF0ZXNGb3JNZWRpYVR5cGU6KE5TU3RyaW5nICop
dHlwZTsKLS0gKHZvaWQpZGVzZWxlY3RBbHRlcm5hdGVHcm91cFRyYWNrOihRVFRyYWNrICopYWx0
ZXJuYXRlVHJhY2s7Ci0tICh2b2lkKXNlbGVjdEFsdGVybmF0ZUdyb3VwVHJhY2s6KFFUVHJhY2sg
KilhbHRlcm5hdGVUcmFjazsKLQotLSAoTlNVUkwgKilVUkw7Ci0tIChVSW50MzIpbW92aWVUeXBl
OwotCi1AZW5kCi0KLUBpbnRlcmZhY2UgUVRNb3ZpZUxheWVyIDogQ0FMYXllcgotCi0tICh2b2lk
KXNldE1vdmllOihRVE1vdmllICopbW92aWU7Ci0tIChRVE1vdmllICopbW92aWU7Ci0KLUBlbmQK
LQotQGludGVyZmFjZSBOU1ZhbHVlIChOU1ZhbHVlUVRUaW1lUmFuZ2VFeHRlbnNpb25zKQotKyAo
TlNWYWx1ZSAqKXZhbHVlV2l0aFFUVGltZVJhbmdlOihRVFRpbWVSYW5nZSlyYW5nZTsKLS0gKFFU
VGltZVJhbmdlKVFUVGltZVJhbmdlVmFsdWU7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgUVRUcmFjayA6
IE5TT2JqZWN0Ci0KLS0gKFFUTWVkaWEgKiltZWRpYTsKLQotLSAoQk9PTClpc0VuYWJsZWQ7Ci0t
ICh2b2lkKXNldEVuYWJsZWQ6KEJPT0wpZW5hYmxlZDsKLQotLSAoaWQpYXR0cmlidXRlRm9yS2V5
OihOU1N0cmluZyAqKWF0dHJpYnV0ZUtleTsKLQotQGVuZAotCi1AaW50ZXJmYWNlIFFUSFVEQmFj
a2dyb3VuZFZpZXcgOiBOU1ZpZXcKLQotLSAodm9pZClzZXRDb250ZW50Qm9yZGVyUG9zaXRpb246
KENHRmxvYXQpY29udGVudEJvcmRlclBvc2l0aW9uOwotCi1AZW5kCi0KLUBpbnRlcmZhY2UgUVRV
dGlsaXRpZXMgOiBOU09iamVjdAotCi0rIChpZClxdFV0aWxpdGllczsKLQotLSAoTlNBcnJheSAq
KXNpdGVzSW5Eb3dubG9hZENhY2hlOwotLSAodm9pZCljbGVhckRvd25sb2FkQ2FjaGU7Ci0tICh2
b2lkKWNsZWFyRG93bmxvYWRDYWNoZUZvclNpdGU6KE5TU3RyaW5nICopc2l0ZTsKLQotQGVuZAot
Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IGE3
M2JjMGI0YzJmZWViMzEzZGZlNzc1Yzg4ZDhlYTlkMDk5YTBiZjUuLjI1NDI5ZDQ2YjFhZTY5Yjhh
MDdlYTU5NGJhMTA3MWU3YWI0YmM2NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcApAQCAtNTc4OSw3ICs1Nzg5LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpt
ZWRpYVZvbHVtZURpZENoYW5nZSgpCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dmlzaWJpbGl0
eVN0YXRlQ2hhbmdlZCgpCiB7Ci0gICAgYm9vbCBlbGVtZW50SXNIaWRkZW4gPSBkb2N1bWVudCgp
LmhpZGRlbigpICYmIG1fdmlkZW9GdWxsc2NyZWVuTW9kZSAhPSBWaWRlb0Z1bGxzY3JlZW5Nb2Rl
UGljdHVyZUluUGljdHVyZTsKKyAgICBib29sIGVsZW1lbnRJc0hpZGRlbiA9IGRvY3VtZW50KCku
aGlkZGVuKCkgJiYgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlID09IFZpZGVvRnVsbHNjcmVlbk1vZGVO
b25lOwogICAgIGlmIChlbGVtZW50SXNIaWRkZW4gPT0gbV9lbGVtZW50SXNIaWRkZW4pCiAgICAg
ICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCA1
NTIyZjhjZTUyYTAzOTc3MDg2ZWJkNjAzOTRiNmI5YTgxMmU1ODViLi5jODhiNTczYzUzODY4OTA0
MThmYzMwMzA0ZThiOWRiMjg2NDg4ZGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaApAQCAtMTgxLDcgKzE4MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFByZXBhcmVk
VG9SZXR1cm5WaWRlb0xheWVyVG9JbmxpbmUoYm9vbCk7CiAgICAgdm9pZCB3YWl0Rm9yUHJlcGFy
ZWRGb3JJbmxpbmVUaGVuKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
ID0gW10geyB9KTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSB8fCAoUExBVEZPUk0oTUFDKSAm
JiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQotICAgIHZvaWQgc2V0VmlkZW9GdWxs
c2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciosIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyID0gW10geyB9KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpZGVv
RnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlciA9IFtdIHsgfSk7CiAjaWZkZWYgX19PQkpDX18KICAgICBQbGF0Zm9y
bUxheWVyKiB2aWRlb0Z1bGxzY3JlZW5MYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9GdWxs
c2NyZWVuTGF5ZXIuZ2V0KCk7IH0KICNlbmRpZgpAQCAtNDQ2LDcgKzQ0Niw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKFZpZGVvRnVsbHNjcmVlbk1v
ZGUpOwogCiAgICAgdm9pZCBlbnRlckZ1bGxzY3JlZW4oVmlkZW9GdWxsc2NyZWVuTW9kZSk7Ci0g
ICAgdm9pZCBlbnRlckZ1bGxzY3JlZW4oKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGVudGVyRnVsbHNjcmVlbigpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
ZXhpdEZ1bGxzY3JlZW4oKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpZGVvRnVsbHNj
cmVlblN0YW5kYnkoYm9vbCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1BsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0LmgKaW5kZXggN2RlZTE1Mjdl
ZjIzOTVmOWU2YmNlMGNjY2JlYmJkZTc0ZDZkZTc0ZC4uYjRlYWU0ZDMxZTFkN2E0NjQ0M2JiNzk1
MzE5NGY1NTQ2NjRlMzFlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1BsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1BsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0LmgKQEAgLTI2LDcgKzI2LDcg
QEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorI2lmIEhBVkUo
QVZLSVQpCiAKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiSFRNTE1lZGlh
RWxlbWVudEVudW1zLmgiCkBAIC00MCwxMSArNDAsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKLU9CSkNfQ0xBU1MgV2ViQVZQbGF5ZXJD
b250cm9sbGVyOwotT0JKQ19DTEFTUyBBVlBsYXllclZpZXdDb250cm9sbGVyOwotT0JKQ19DTEFT
UyBVSVZpZXdDb250cm9sbGVyOwotT0JKQ19DTEFTUyBVSVdpbmRvdzsKLU9CSkNfQ0xBU1MgVUlW
aWV3OworQGNsYXNzIFdlYkFWUGxheWVyQ29udHJvbGxlcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgSW50UmVjdDsKQEAgLTkyLDUgKzg4LDQgQEAgcHJvdGVjdGVkOgogCiB9CiAKLSNl
bmRpZgotCisjZW5kaWYgLy8gSEFWRShBVktJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5tbQppbmRl
eCBmY2FiMjZmYmI3MmRlYjk4OTNkMjVlMmZjZGJiOWExZDE1OTczY2JlLi45ZjI3NmVhOWJjYjhh
NDdmODAwMTYzNTE5Y2UwNzFiOWY0OTAwMmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Lm1tCkBA
IC0yNyw3ICsyNyw2IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZUFWS2l0LmgiCiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2lmIEhB
VkUoQVZLSVQpCiAKICNpbXBvcnQgIkxvZ2dpbmcuaCIKQEAgLTE4NSw5ICsxODQsOSBAQCB2b2lk
IFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRp
b25zQ2hhbmdlZChjb25zdCBWZQogdm9pZCBQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6
ZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQoYm9vbCBlbmFibGVkLCBQbGF5YmFja1Nlc3Npb25Nb2Rl
bDo6RXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUgdGFyZ2V0VHlwZSwgY29uc3QgU3RyaW5nJiBs
b2NhbGl6ZWREZXZpY2VOYW1lKQogewogICAgIEFWUGxheWVyQ29udHJvbGxlckV4dGVybmFsUGxh
eWJhY2tUeXBlIGV4dGVybmFsUGxheWJhY2tUeXBlID0gQVZQbGF5ZXJDb250cm9sbGVyRXh0ZXJu
YWxQbGF5YmFja1R5cGVOb25lOwotICAgIGlmICh0YXJnZXRUeXBlID09IFBsYXliYWNrU2Vzc2lv
bk1vZGVsOjpUYXJnZXRUeXBlQWlyUGxheSkKKyAgICBpZiAoZW5hYmxlZCAmJiB0YXJnZXRUeXBl
ID09IFBsYXliYWNrU2Vzc2lvbk1vZGVsOjpUYXJnZXRUeXBlQWlyUGxheSkKICAgICAgICAgZXh0
ZXJuYWxQbGF5YmFja1R5cGUgPSBBVlBsYXllckNvbnRyb2xsZXJFeHRlcm5hbFBsYXliYWNrVHlw
ZUFpclBsYXk7Ci0gICAgZWxzZSBpZiAodGFyZ2V0VHlwZSA9PSBQbGF5YmFja1Nlc3Npb25Nb2Rl
bDo6VGFyZ2V0VHlwZVRWT3V0KQorICAgIGVsc2UgaWYgKGVuYWJsZWQgJiYgdGFyZ2V0VHlwZSA9
PSBQbGF5YmFja1Nlc3Npb25Nb2RlbDo6VGFyZ2V0VHlwZVRWT3V0KQogICAgICAgICBleHRlcm5h
bFBsYXliYWNrVHlwZSA9IEFWUGxheWVyQ29udHJvbGxlckV4dGVybmFsUGxheWJhY2tUeXBlVFZP
dXQ7CiAKICAgICBXZWJBVlBsYXllckNvbnRyb2xsZXIqIHBsYXllckNvbnRyb2xsZXIgPSBtX3Bs
YXllckNvbnRyb2xsZXIuZ2V0KCk7CkBAIC0yMzEsNCArMjMwLDMgQEAgdm9pZCBQbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2VBVktpdDo6bW9kZWxEZXN0cm95ZWQoKQogfQogCiAjZW5kaWYgLy8gSEFW
RShBVktJVCkKLSNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkFWUGxheWVyQ29udHJvbGxlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkFWUGxheWVyQ29udHJvbGxlci5oCmluZGV4IGE2Mzlh
OTgxZmZjMGIwNjJkYTYzMGM4MWJlYTRiZGRiZjJmNjM2YTEuLjg5NDBkMDJjMzkwMzZhMzMwNDk2
NjdkZWQzMThlYjk2Zjc1ZDEyMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9XZWJBVlBsYXllckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvV2ViQVZQbGF5ZXJDb250cm9sbGVyLmgKQEAgLTIzLDcgKzIzLDcgQEAKICAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEhBVkUoQVZLSVQpCisj
aWYgSEFWRShBVktJVCkKIAogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9BVktpdFNQSS5oPgogCkBA
IC0zNiw3ICszNiw3IEBAIGNsYXNzIFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OwogQHBy
b3BlcnR5IChyZXRhaW4pIE5TU3RyaW5nICpsb2NhbGl6ZWREaXNwbGF5TmFtZTsKIEBlbmQKIAot
QGludGVyZmFjZSBXZWJBVlBsYXllckNvbnRyb2xsZXIgOiBOU09iamVjdCB7CitXRUJDT1JFX0VY
UE9SVCBAaW50ZXJmYWNlIFdlYkFWUGxheWVyQ29udHJvbGxlciA6IE5TT2JqZWN0IHsKICAgICBX
ZWJBVk1lZGlhU2VsZWN0aW9uT3B0aW9uICpfY3VycmVudEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRp
b247CiAgICAgV2ViQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqX2N1cnJlbnRMZWdpYmxlTWVkaWFT
ZWxlY3Rpb25PcHRpb247CiAgICAgQk9PTCBfcGljdHVyZUluUGljdHVyZUludGVycnVwdGVkOwpA
QCAtNTIsNiArNTIsOSBAQCBjbGFzcyBQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDsKIEBw
cm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgY2FuU2Vla1RvQmVnaW5uaW5nOwogQHByb3BlcnR5IChy
ZWFkb25seSkgQk9PTCBjYW5TZWVrVG9FbmQ7CiBAcHJvcGVydHkgKHJlYWRvbmx5KSBCT09MIGlz
U2NydWJiaW5nOworQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBjYW5TZWVrRnJhbWVCYWNrd2Fy
ZDsKK0Bwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgY2FuU2Vla0ZyYW1lRm9yd2FyZDsKK0Bwcm9w
ZXJ0eSAocmVhZG9ubHkpIEJPT0wgaGFzQ29udGVudENoYXB0ZXJzOwogCiBAcHJvcGVydHkgQk9P
TCBjYW5QbGF5OwogQHByb3BlcnR5IChnZXR0ZXI9aXNQbGF5aW5nKSBCT09MIHBsYXlpbmc7CkBA
IC0xMDAsNCArMTAzLDMgQEAgY2xhc3MgUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ7CiBA
ZW5kCiAKICNlbmRpZgotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
V2ViQVZQbGF5ZXJDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dl
YkFWUGxheWVyQ29udHJvbGxlci5tbQppbmRleCBkNTliYTg3ODc3ZWM0YzhhOGM2NmMxODBiMWU3
NWNhYjE5ZDQ0NGRhLi4yMjk3NzVjNmNiNTA1M2I5YTU0ZTNjMDljNGJjY2Y1M2NhOTc4ZGI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQVZQbGF5ZXJDb250cm9s
bGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJBVlBsYXllckNvbnRy
b2xsZXIubW0KQEAgLTI3LDcgKzI3LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAi
V2ViQVZQbGF5ZXJDb250cm9sbGVyLmgiCiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBI
QVZFKEFWS0lUKQorI2lmIEhBVkUoQVZLSVQpCiAKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBv
cnQgIlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0LmgiCkBAIC0zOTcsNiArMzk3LDE2IEBA
IC0gKHZvaWQpc2Vla0NoYXB0ZXJGb3J3YXJkOihpZClzZW5kZXIKICAgICBbc2VsZiBzZWVrVG9F
bmQ6c2VuZGVyXTsKIH0KIAorLSAoQk9PTCljYW5TZWVrRnJhbWVCYWNrd2FyZAoreworICAgIHJl
dHVybiBZRVM7Cit9CisKKy0gKEJPT0wpY2FuU2Vla0ZyYW1lRm9yd2FyZAoreworICAgIHJldHVy
biBZRVM7Cit9CisKIC0gKEJPT0wpaGFzTWVkaWFTZWxlY3Rpb25PcHRpb25zCiB7CiAgICAgcmV0
dXJuIFtzZWxmIGhhc0F1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zXSB8fCBbc2VsZiBoYXNMZWdp
YmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zXTsKQEAgLTY1MCw1ICs2NjAsNSBAQCAtICh2b2lkKWRl
YWxsb2MKIAogQGVuZAogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNlbmRpZiAv
LyBIQVZFKEFWS0lUKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
V2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9X
ZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5oCmluZGV4IDIxMWNjZWExZTRkNDM1NmE1OTA3MDE2N2Fl
ZGRmOTBjMmM1MDA4NTAuLjYyOTdiMGRiZjc4ZDZiYjIxYTQ0YjUyMjNhY2I1Njc4MzRkOGQ1ZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlRnVsbFNjcmVl
bldpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlRnVsbFNj
cmVlbldpbmRvdy5oCkBAIC0yMywxNCArMjMsMTEgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYkNvcmVGdWxsU2NyZWVuV2luZG93X2gKLSNk
ZWZpbmUgV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3dfaAorI3ByYWdtYSBvbmNlCiAKLSNpZiBFTkFC
TEUoRlVMTFNDUkVFTl9BUEkpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQorI2lmICFQTEFURk9S
TShJT1NfRkFNSUxZKQogCiBXRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNlIFdlYkNvcmVGdWxsU2Ny
ZWVuV2luZG93IDogTlNXaW5kb3cKIEBlbmQKIAotI2VuZGlmIC8vIEVOQUJMRShGVUxMU0NSRUVO
X0FQSSkKLQotI2VuZGlmIC8vIFdlYkNvcmVGdWxsU2NyZWVuV2luZG93X2gKKyNlbmRpZiAvLyBQ
TEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1dlYkNvcmVGdWxsU2NyZWVuV2luZG93Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1dlYkNvcmVGdWxsU2NyZWVuV2luZG93Lm1tCmluZGV4IGFhNjhlMDEzZmI0YzgyMDIxMmI3
MGI0ZDBhMGRiMDgyNjkyMzk4ODIuLjM1MzI1NTlkOTIyNzAzZWY3ZTMyMTA5M2I0NzVhOTk0NGIw
MDljMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlRnVs
bFNjcmVlbldpbmRvdy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29y
ZUZ1bGxTY3JlZW5XaW5kb3cubW0KQEAgLTI1LDcgKzI1LDcgQEAKIAogI2ltcG9ydCAiY29uZmln
LmgiCiAKLSNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpICYmICFQTEFURk9STShJT1NfRkFNSUxZ
KQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJXZWJDb3JlRnVsbFNjcmVl
bldpbmRvdy5oIgogCkBAIC0xMDEsNCArMTAxLDQgQEAgLSAodm9pZClzZXRTdHlsZU1hc2s6KE5T
VUludGVnZXIpc3R5bGVNYXNrCiB9CiBAZW5kCiAKLSNlbmRpZiAvLyBFTkFCTEUoRlVMTFNDUkVF
Tl9BUEkpCisjZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIu
aCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlci5oCmluZGV4IGU4ZmI1NjI5NTA5NWJmMzdhNGQyODgwNzUwNDZmMzViZGQyZTA4NWEu
LjlhNjRhNjBjYzNiNWJlYjE4NzIyMjFhNTI2MTlmYTJmMjJjMjMyMjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlci5oCkBAIC0zMywxNCArMzMsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgSFRNTFZpZGVvRWxlbWVudDsKIH0KIAotQGNsYXNzIFdlYlZpZGVvRnVsbHNjcmVlbkhV
RFdpbmRvd0NvbnRyb2xsZXI7CiBAY2xhc3MgV2ViV2luZG93RmFkZUFuaW1hdGlvbjsKIAogQGlu
dGVyZmFjZSBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIDogTlNXaW5kb3dDb250cm9sbGVy
IHsKICAgICBSZWZQdHI8V2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudD4gX3ZpZGVvRWxlbWVudDsK
IAogICAgIE5TV2luZG93ICpfYmFja2dyb3VuZEZ1bGxzY3JlZW5XaW5kb3c7IC8vIChyZXRhaW4p
Ci0gICAgV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlciAqX2h1ZENvbnRyb2xs
ZXI7IC8vIChyZXRhaW4pCiAKICAgICBXZWJXaW5kb3dGYWRlQW5pbWF0aW9uICpfZmFkZUFuaW1h
dGlvbjsgLy8gKHJldGFpbikKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLm1tCmluZGV4IDc2
YmI0NzZhYjA0NDAxZDgzODRlMGE3YzdmMmMxMGU2ZjBjZGI2ZmIuLmQ2MDViNzBjODdmYTkzYTYz
ZWVlY2NiNDk3YmM0ZDM3YWQ0NjJjYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW0K
QEAgLTI3LDI4ICsyNywxMTMgQEAKIAogI2lmIEVOQUJMRShWSURFTykgJiYgUExBVEZPUk0oTUFD
KQogCi0jaW1wb3J0ICJXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLmgiCi0j
aW1wb3J0ICJXZWJXaW5kb3dBbmltYXRpb24uaCIKICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBs
YXllci5oPgotI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWUGxheWVyTGF5ZXIuaD4KLSNpbXBvcnQg
PENhcmJvbi9DYXJib24uaD4KICNpbXBvcnQgPFdlYkNvcmUvSFRNTFZpZGVvRWxlbWVudC5oPgor
I2ltcG9ydCA8V2ViQ29yZS9QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5oPgorI2ltcG9y
dCA8V2ViQ29yZS9QbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5oPgorI2ltcG9ydCA8
V2ViQ29yZS9XZWJBVlBsYXllckNvbnRyb2xsZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvV2ViQ29y
ZUZ1bGxTY3JlZW5XaW5kb3cuaD4KKyNpbXBvcnQgPG9iamMvbWVzc2FnZS5oPgogI2ltcG9ydCA8
b2JqYy9ydW50aW1lLmg+Ci0jaW1wb3J0IDxwYWwvc3lzdGVtL1NsZWVwRGlzYWJsZXIuaD4KKyNp
bXBvcnQgPHBhbC9zcGkvY29jb2EvQVZLaXRTUEkuaD4KKyNpbXBvcnQgPHBhbC9zcGkvbWFjL05T
V2luZG93U1BJLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKKyNpbXBvcnQgPHBhbC9j
Zi9Db3JlTWVkaWFTb2Z0TGluay5oPgogI2ltcG9ydCA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNv
ZnRMaW5rLmg+CiAKK1NPRlRMSU5LX0FWS0lUX0ZSQU1FV09SSygpCitTT0ZUX0xJTktfQ0xBU1Mo
QVZLaXQsIEFWUGxheWVyVmlldykKKwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVH
SU4KIAotQGludGVyZmFjZSBXZWJWaWRlb0Z1bGxzY3JlZW5XaW5kb3cgOiBOU1dpbmRvdzxOU0Fu
aW1hdGlvbkRlbGVnYXRlPiB7Ci0gICAgU0VMIF9jb250cm9sbGVyQWN0aW9uT25BbmltYXRpb25F
bmQ7Ci0gICAgV2ViV2luZG93U2NhbGVBbmltYXRpb24gKl9mdWxsc2NyZWVuQW5pbWF0aW9uOyAv
LyAocmV0YWluKQorQGludGVyZmFjZSBBVlBsYXllclZpZXcgKFNlY3JldFN0dWZmKQorQHByb3Bl
cnR5IChub25hdG9taWMsIGFzc2lnbikgQk9PTCBzaG93c0F1ZGlvT25seUluZGljYXRvclZpZXc7
CitAZW5kCisKK0BpbnRlcmZhY2UgV2ViT3ZlcmxheUxheWVyIDogQ0FMYXllcgorQGVuZAorCitA
aW1wbGVtZW50YXRpb24gV2ViT3ZlcmxheUxheWVyCistICh2b2lkKWxheW91dFN1YmxheWVycwor
eworICAgIGZvciAoQ0FMYXllciogbGF5ZXIgaW4gc2VsZi5zdWJsYXllcnMpCisgICAgICAgIGxh
eWVyLmZyYW1lID0gc2VsZi5ib3VuZHM7CiB9Ci0tICh2b2lkKWFuaW1hdGVGcm9tUmVjdDooTlNS
ZWN0KXN0YXJ0UmVjdCB0b1JlY3Q6KE5TUmVjdCllbmRSZWN0IHdpdGhTdWJBbmltYXRpb246KE5T
QW5pbWF0aW9uICopc3ViQW5pbWF0aW9uIGNvbnRyb2xsZXJBY3Rpb246KFNFTCljb250cm9sbGVy
QWN0aW9uOwogQGVuZAogCi1AaW50ZXJmYWNlIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIg
KCkgPFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXJEZWxlZ2F0ZT4KK0BjbGFz
cyBXZWJBVlBsYXllclZpZXc7CisKK0Bwcm90b2NvbCBXZWJBVlBsYXllclZpZXdEZWxlZ2F0ZQor
LSAoQk9PTClwbGF5ZXJWaWV3SXNGdWxsU2NyZWVuOihXZWJBVlBsYXllclZpZXcqKXBsYXllclZp
ZXc7CistICh2b2lkKXBsYXllclZpZXdSZXF1ZXN0RW50ZXJGdWxsc2NyZWVuOihXZWJBVlBsYXll
clZpZXcqKXBsYXllclZpZXc7CistICh2b2lkKXBsYXllclZpZXdSZXF1ZXN0RXhpdEZ1bGxzY3Jl
ZW46KFdlYkFWUGxheWVyVmlldyopcGxheWVyVmlldzsKK0BlbmQKKworQGludGVyZmFjZSBXZWJB
VlBsYXllclZpZXcgOiBBVlBsYXllclZpZXcKK0Bwcm9wZXJ0eSAod2VhaykgaWQ8V2ViQVZQbGF5
ZXJWaWV3RGVsZWdhdGU+IGRlbGVnYXRlOworQGVuZAorCitzdGF0aWMgaWQ8V2ViQVZQbGF5ZXJW
aWV3RGVsZWdhdGU+IFdlYkFWUGxheWVyVmlld19kZWxlZ2F0ZShpZCBhU2VsZiwgU0VMKQorewor
ICAgIHZvaWQqIGRlbGVnYXRlID0gbmlsOworICAgIG9iamVjdF9nZXRJbnN0YW5jZVZhcmlhYmxl
KGFTZWxmLCAiX3dlYkRlbGVnYXRlIiwgJmRlbGVnYXRlKTsKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8aWQ8V2ViQVZQbGF5ZXJWaWV3RGVsZWdhdGU+PihkZWxlZ2F0ZSk7Cit9CisKK3N0YXRpYyB2
b2lkIFdlYkFWUGxheWVyVmlld19zZXREZWxlZ2F0ZShpZCBhU2VsZiwgU0VMLCBpZDxXZWJBVlBs
YXllclZpZXdEZWxlZ2F0ZT4gZGVsZWdhdGUpCit7CisgICAgb2JqZWN0X3NldEluc3RhbmNlVmFy
aWFibGUoYVNlbGYsICJfd2ViRGVsZWdhdGUiLCBkZWxlZ2F0ZSk7Cit9CisKK3N0YXRpYyBCT09M
IFdlYkFWUGxheWVyVmlld19pc0Z1bGxTY3JlZW4oaWQgYVNlbGYsIFNFTCkKK3sKKyAgICBXZWJB
VlBsYXllclZpZXcgKnBsYXllclZpZXcgPSBhU2VsZjsKKyAgICByZXR1cm4gW3BsYXllclZpZXcu
ZGVsZWdhdGUgcGxheWVyVmlld0lzRnVsbFNjcmVlbjpwbGF5ZXJWaWV3XTsKK30KKworc3RhdGlj
IHZvaWQgV2ViQVZQbGF5ZXJWaWV3X2VudGVyRnVsbFNjcmVlbihpZCBhU2VsZiwgU0VMLCBpZCBz
ZW5kZXIpCit7CisgICAgV2ViQVZQbGF5ZXJWaWV3ICpwbGF5ZXJWaWV3ID0gYVNlbGY7CisgICAg
W3BsYXllclZpZXcuZGVsZWdhdGUgcGxheWVyVmlld1JlcXVlc3RFbnRlckZ1bGxzY3JlZW46cGxh
eWVyVmlld107Cit9CisKK3N0YXRpYyB2b2lkIFdlYkFWUGxheWVyVmlld19leGl0RnVsbFNjcmVl
bihpZCBhU2VsZiwgU0VMLCBpZCBzZW5kZXIpCit7CisgICAgV2ViQVZQbGF5ZXJWaWV3ICpwbGF5
ZXJWaWV3ID0gYVNlbGY7CisgICAgW3BsYXllclZpZXcuZGVsZWdhdGUgcGxheWVyVmlld1JlcXVl
c3RFeGl0RnVsbHNjcmVlbjpwbGF5ZXJWaWV3XTsKK30KKworc3RhdGljIFdlYkFWUGxheWVyVmll
dyAqYWxsb2NXZWJBVlBsYXllclZpZXdJbnN0YW5jZSgpCit7CisgICAgc3RhdGljIENsYXNzIHRo
ZUNsYXNzID0gbmlsOworICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOworICAg
IGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKKyAgICAgICAgQVNTRVJUKGdldEFWUGxheWVy
Vmlld0NsYXNzKCkpOworICAgICAgICBDbGFzcyBhQ2xhc3MgPSBvYmpjX2FsbG9jYXRlQ2xhc3NQ
YWlyKGdldEFWUGxheWVyVmlld0NsYXNzKCksICJXZWJBVlBsYXllclZpZXciLCAwKTsKKyAgICAg
ICAgdGhlQ2xhc3MgPSBhQ2xhc3M7CisgICAgICAgIGNsYXNzX2FkZE1ldGhvZCh0aGVDbGFzcywg
QHNlbGVjdG9yKHNldERlbGVnYXRlOiksIChJTVApV2ViQVZQbGF5ZXJWaWV3X3NldERlbGVnYXRl
LCAidkA6QCIpOworICAgICAgICBjbGFzc19hZGRNZXRob2QodGhlQ2xhc3MsIEBzZWxlY3Rvcihk
ZWxlZ2F0ZSksIChJTVApV2ViQVZQbGF5ZXJWaWV3X2RlbGVnYXRlLCAiQEA6Iik7CisgICAgICAg
IGNsYXNzX2FkZE1ldGhvZCh0aGVDbGFzcywgQHNlbGVjdG9yKGlzRnVsbFNjcmVlbiksIChJTVAp
V2ViQVZQbGF5ZXJWaWV3X2lzRnVsbFNjcmVlbiwgIkJAOiIpOworICAgICAgICBjbGFzc19hZGRN
ZXRob2QodGhlQ2xhc3MsIEBzZWxlY3RvcihlbnRlckZ1bGxTY3JlZW46KSwgKElNUClXZWJBVlBs
YXllclZpZXdfZW50ZXJGdWxsU2NyZWVuLCAidkA6QCIpOworICAgICAgICBjbGFzc19hZGRNZXRo
b2QodGhlQ2xhc3MsIEBzZWxlY3RvcihleGl0RnVsbFNjcmVlbjopLCAoSU1QKVdlYkFWUGxheWVy
Vmlld19leGl0RnVsbFNjcmVlbiwgInZAOkAiKTsKKworICAgICAgICBjbGFzc19hZGRJdmFyKHRo
ZUNsYXNzLCAiX3dlYkRlbGVnYXRlIiwgc2l6ZW9mKGlkKSwgbG9nMihzaXplb2YoaWQpKSwgIkAi
KTsKKyAgICAgICAgY2xhc3NfYWRkSXZhcih0aGVDbGFzcywgIl93ZWJJc0Z1bGxTY3JlZW4iLCBz
aXplb2YoQk9PTCksIGxvZzIoc2l6ZW9mKEJPT0wpKSwgIkIiKTsKKworICAgICAgICBvYmpjX3Jl
Z2lzdGVyQ2xhc3NQYWlyKHRoZUNsYXNzKTsKKyAgICB9KTsKKyAgICByZXR1cm4gKFdlYkFWUGxh
eWVyVmlldyAqKVt0aGVDbGFzcyBhbGxvY107Cit9CisKK0BpbnRlcmZhY2UgV2ViVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlciAoKSA8V2ViQVZQbGF5ZXJWaWV3RGVsZWdhdGUsIE5TV2luZG93RGVs
ZWdhdGU+IHsKKyAgICBSZWZQdHI8V2ViQ29yZTo6UGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVs
ZW1lbnQ+IF9wbGF5YmFja01vZGVsOworICAgIFJlZlB0cjxXZWJDb3JlOjpQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2VBVktpdD4gX3BsYXliYWNrSW50ZXJmYWNlOworICAgIFJldGFpblB0cjxOU1Zp
ZXc+IF9jb250ZW50T3ZlcmxheTsKKyAgICBCT09MIF9pc0Z1bGxTY3JlZW47Cit9CitAcHJvcGVy
dHkgKHJlYWRvbmx5KSBXZWJDb3JlRnVsbFNjcmVlbldpbmRvdyogZnVsbHNjcmVlbldpbmRvdzsK
K0Bwcm9wZXJ0eSAocmVhZG9ubHkpIFdlYkFWUGxheWVyVmlldyogcGxheWVyVmlldzsKIEBlbmQK
IAogQGltcGxlbWVudGF0aW9uIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIKQEAgLTU2LDQx
ICsxNDEsNTYgQEAgQGltcGxlbWVudGF0aW9uIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIK
IC0gKGlkKWluaXQKIHsKICAgICAvLyBEbyBub3QgZGVmZXIgd2luZG93IGNyZWF0aW9uLCB0byBt
YWtlIHN1cmUgLXdpbmRvd051bWJlciBpcyBjcmVhdGVkIChuZWVkZWQgYnkgV2ViV2luZG93U2Nh
bGVBbmltYXRpb24pLgotICAgIE5TV2luZG93ICp3aW5kb3cgPSBbW1dlYlZpZGVvRnVsbHNjcmVl
bldpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpOU1plcm9SZWN0IHN0eWxlTWFzazpO
U0JvcmRlcmxlc3NXaW5kb3dNYXNrIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZl
cjpOT107CisgICAgTlNXaW5kb3cgKndpbmRvdyA9IFtbV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cg
YWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6TlNaZXJvUmVjdCBzdHlsZU1hc2s6KE5TV2luZG93
U3R5bGVNYXNrRnVsbFNpemVDb250ZW50VmlldyB8IE5TV2luZG93U3R5bGVNYXNrUmVzaXphYmxl
KSBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6Tk9dOworICAgIFt3aW5kb3cg
c2V0Q29sbGVjdGlvbkJlaGF2aW9yOihbd2luZG93IGNvbGxlY3Rpb25CZWhhdmlvcl0gfCBOU1dp
bmRvd0NvbGxlY3Rpb25CZWhhdmlvckZ1bGxTY3JlZW5QcmltYXJ5KV07CisgICAgd2luZG93LmRl
bGVnYXRlID0gc2VsZjsKICAgICBzZWxmID0gW3N1cGVyIGluaXRXaXRoV2luZG93OndpbmRvd107
CiAgICAgW3dpbmRvdyByZWxlYXNlXTsKICAgICBpZiAoIXNlbGYpCiAgICAgICAgIHJldHVybiBu
aWw7CisgICAgX3BsYXliYWNrTW9kZWwgPSBXZWJDb3JlOjpQbGF5YmFja1Nlc3Npb25Nb2RlbE1l
ZGlhRWxlbWVudDo6Y3JlYXRlKCk7CisgICAgX3BsYXliYWNrSW50ZXJmYWNlID0gV2ViQ29yZTo6
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OmNyZWF0ZSgqX3BsYXliYWNrTW9kZWwpOwor
ICAgIF9jb250ZW50T3ZlcmxheSA9IGFkb3B0TlMoW1tOU1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6TlNaZXJvUmVjdF0pOworICAgIF9jb250ZW50T3ZlcmxheS5nZXQoKS5sYXllckNvbnRlbnRz
UmVkcmF3UG9saWN5ID0gTlNWaWV3TGF5ZXJDb250ZW50c1JlZHJhd05ldmVyOworICAgIF9jb250
ZW50T3ZlcmxheS5nZXQoKS5sYXllciA9IFtbW1dlYk92ZXJsYXlMYXllciBhbGxvY10gaW5pdF0g
YXV0b3JlbGVhc2VdOworICAgIFtfY29udGVudE92ZXJsYXkgc2V0V2FudHNMYXllcjpZRVNdOwor
ICAgIFtfY29udGVudE92ZXJsYXkgc2V0QXV0b3Jlc2l6aW5nTWFzazooTlNWaWV3V2lkdGhTaXph
YmxlIHwgTlNWaWV3SGVpZ2h0U2l6YWJsZSldOwogICAgIFtzZWxmIHdpbmRvd0RpZExvYWRdOwor
CiAgICAgcmV0dXJuIHNlbGY7Ci0gICAgCiB9CiAtICh2b2lkKWRlYWxsb2MKIHsKICAgICBBU1NF
UlQoIV9iYWNrZ3JvdW5kRnVsbHNjcmVlbldpbmRvdyk7CiAgICAgQVNTRVJUKCFfZmFkZUFuaW1h
dGlvbik7Ci0gICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSByZW1vdmVP
YnNlcnZlcjpzZWxmXTsKKyAgICBfcGxheWVyVmlldy5kZWxlZ2F0ZSA9IG5pbDsKKyAgICBfcGxh
eWJhY2tNb2RlbCA9IG5pbDsKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKLS0gKFdlYlZpZGVv
RnVsbHNjcmVlbldpbmRvdyAqKWZ1bGxzY3JlZW5XaW5kb3cKKy0gKFdlYkNvcmVGdWxsU2NyZWVu
V2luZG93ICopZnVsbHNjcmVlbldpbmRvdwogewotICAgIHJldHVybiAoV2ViVmlkZW9GdWxsc2Ny
ZWVuV2luZG93ICopW3N1cGVyIHdpbmRvd107CisgICAgcmV0dXJuIChXZWJDb3JlRnVsbFNjcmVl
bldpbmRvdyAqKVtzdXBlciB3aW5kb3ddOwogfQogCiAtICh2b2lkKXdpbmRvd0RpZExvYWQKIHsK
ICAgICBhdXRvIHdpbmRvdyA9IFtzZWxmIGZ1bGxzY3JlZW5XaW5kb3ddOwotICAgIGF1dG8gY29u
dGVudFZpZXcgPSBbd2luZG93IGNvbnRlbnRWaWV3XTsKIAogICAgIFt3aW5kb3cgc2V0SGFzU2hh
ZG93OllFU107IC8vIFRoaXMgaXMgbmljZXIgd2l0aCBhIHNoYWRvdy4KICAgICBbd2luZG93IHNl
dExldmVsOk5TUG9wVXBNZW51V2luZG93TGV2ZWwtMV07CiAKLSAgICBbY29udGVudFZpZXcgc2V0
TGF5ZXI6W0NBTGF5ZXIgbGF5ZXJdXTsKLSAgICBbY29udGVudFZpZXcgc2V0V2FudHNMYXllcjpZ
RVNdOworICAgIF9wbGF5ZXJWaWV3ID0gW2FsbG9jV2ViQVZQbGF5ZXJWaWV3SW5zdGFuY2UoKSBp
bml0V2l0aEZyYW1lOndpbmRvdy5jb250ZW50TGF5b3V0UmVjdF07CisgICAgX3BsYXllclZpZXcu
Y29udHJvbHNTdHlsZSA9IEFWUGxheWVyVmlld0NvbnRyb2xzU3R5bGVOb25lOworICAgIF9wbGF5
ZXJWaWV3LnNob3dzRnVsbFNjcmVlblRvZ2dsZUJ1dHRvbiA9IFlFUzsKKyAgICBfcGxheWVyVmll
dy5zaG93c0F1ZGlvT25seUluZGljYXRvclZpZXcgPSBOTzsKKyAgICBfcGxheWVyVmlldy5kZWxl
Z2F0ZSA9IHNlbGY7CisgICAgd2luZG93LmNvbnRlbnRWaWV3ID0gX3BsYXllclZpZXc7CisgICAg
W19jb250ZW50T3ZlcmxheSBzZXRGcmFtZTpfcGxheWVyVmlldy5jb250ZW50T3ZlcmxheVZpZXcu
Ym91bmRzXTsKKyAgICBbX3BsYXllclZpZXcuY29udGVudE92ZXJsYXlWaWV3IGFkZFN1YnZpZXc6
X2NvbnRlbnRPdmVybGF5LmdldCgpXTsKIAotICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVm
YXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoYXBwbGljYXRp
b25EaWRSZXNpZ25BY3RpdmU6KSBuYW1lOk5TQXBwbGljYXRpb25EaWRSZXNpZ25BY3RpdmVOb3Rp
ZmljYXRpb24gb2JqZWN0Ok5TQXBwXTsKLSAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1
bHRDZW50ZXJdIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGFwcGxpY2F0aW9u
RGlkQ2hhbmdlU2NyZWVuUGFyYW1ldGVyczopIG5hbWU6TlNBcHBsaWNhdGlvbkRpZENoYW5nZVNj
cmVlblBhcmFtZXRlcnNOb3RpZmljYXRpb24gb2JqZWN0Ok5TQXBwXTsKKy8vICAgIFtbTlNOb3Rp
ZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpA
c2VsZWN0b3IoYXBwbGljYXRpb25EaWRSZXNpZ25BY3RpdmU6KSBuYW1lOk5TQXBwbGljYXRpb25E
aWRSZXNpZ25BY3RpdmVOb3RpZmljYXRpb24gb2JqZWN0Ok5TQXBwXTsKKy8vICAgIFtbTlNOb3Rp
ZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpA
c2VsZWN0b3IoYXBwbGljYXRpb25EaWRDaGFuZ2VTY3JlZW5QYXJhbWV0ZXJzOikgbmFtZTpOU0Fw
cGxpY2F0aW9uRGlkQ2hhbmdlU2NyZWVuUGFyYW1ldGVyc05vdGlmaWNhdGlvbiBvYmplY3Q6TlNB
cHBdOwogfQogCiAtIChOYWtlZFB0cjxXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50Pil2aWRlb0Vs
ZW1lbnQKQEAgLTEwNyw3NSArMjA3LDI3IEBAIC0gKHZvaWQpc2V0VmlkZW9FbGVtZW50OihOYWtl
ZFB0cjxXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50Pil2aWRlb0VsZW1lbnQKIAogICAgIGlmICgh
W3NlbGYgaXNXaW5kb3dMb2FkZWRdKQogICAgICAgICByZXR1cm47Ci0gICAgYXV0byBjb3JlUGxh
eWVyID0gdmlkZW9FbGVtZW50LT5wbGF5ZXIoKTsKLSAgICBpZiAoIWNvcmVQbGF5ZXIpCi0gICAg
ICAgIHJldHVybjsKLSAgICBhdXRvIHBsYXllciA9IGNvcmVQbGF5ZXItPm9iakNBVkZvdW5kYXRp
b25BVlBsYXllcigpOwotICAgIGlmICghcGxheWVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBh
dXRvIGNvbnRlbnRWaWV3ID0gW1tzZWxmIGZ1bGxzY3JlZW5XaW5kb3ddIGNvbnRlbnRWaWV3XTsK
LQotICAgIGF1dG8gbGF5ZXIgPSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZQbGF5ZXJMYXllckluc3Rh
bmNlKCkgaW5pdF0pOwotICAgIFtsYXllciBzZXRQbGF5ZXI6cGxheWVyXTsKLQotICAgIFtjb250
ZW50VmlldyBzZXRMYXllcjpsYXllci5nZXQoKV07Ci0KLSAgICAvLyBGSVhNRTogVGhlIHdpbmRv
d0RpZExvYWQgbWV0aG9kIGFscmVhZHkgY2FsbGVkIHRoaXMsIHNvIGl0IHNob3VsZAotICAgIC8v
IG5vdCBiZSBuZWNlc3NhcnkgdG8gZG8gaXQgYWdhaW4gaGVyZS4KLSAgICBbY29udGVudFZpZXcg
c2V0V2FudHNMYXllcjpZRVNdOwogCi0gICAgLy8gRklYTUU6IFRoaXMgY2FuIGJlIGNhbGxlZCBt
dWx0aXBsZSB0aW1lcywgYW5kIHdvbid0IG5lY2Vzc2FyaWx5IGJlCi0gICAgLy8gYmFsYW5jZWQg
YnkgY2FsbHMgdG8gd2luZG93RGlkRXhpdEZ1bGxzY3JlZW4gaW4gc29tZSBjYXNlcywgc28gaXQK
LSAgICAvLyB3b3VsZCBiZSBiZXR0ZXIgdG8gY2hhbmdlIHRoaW5ncyBzbyB0aGUgb2JzZXJ2ZXIg
aXMgcmVsaWFibHkgYWRkZWQKLSAgICAvLyBvbmx5IG9uY2UgYW5kIGd1YXJhbnRlZWQgcmVtb3Zl
ZCBldmVuIGluIHVudXN1YWwgZWRnZSBjYXNlcy4KLSAgICBbcGxheWVyIGFkZE9ic2VydmVyOnNl
bGYgZm9yS2V5UGF0aDpAInJhdGUiIG9wdGlvbnM6MCBjb250ZXh0Om51bGxwdHJdOworICAgIF9w
bGF5YmFja01vZGVsLT5zZXRNZWRpYUVsZW1lbnQodmlkZW9FbGVtZW50KTsKKyAgICBzZWxmLnBs
YXllclZpZXcucGxheWVyQ29udHJvbGxlciA9IChBVlBsYXllckNvbnRyb2xsZXIqKV9wbGF5YmFj
a0ludGVyZmFjZS0+cGxheWVyQ29udHJvbGxlcigpOwogfQogCi0tIChDR0Zsb2F0KWNsZWFyRmFk
ZUFuaW1hdGlvbgotewotICAgIFtfZmFkZUFuaW1hdGlvbiBzdG9wQW5pbWF0aW9uXTsKLSAgICBD
R0Zsb2F0IHByZXZpb3VzQWxwaGEgPSBbX2ZhZGVBbmltYXRpb24gY3VycmVudEFscGhhXTsKLSAg
ICBbX2ZhZGVBbmltYXRpb24gc2V0V2luZG93Om5pbF07Ci0gICAgW19mYWRlQW5pbWF0aW9uIHJl
bGVhc2VdOwotICAgIF9mYWRlQW5pbWF0aW9uID0gbmlsOwotICAgIHJldHVybiBwcmV2aW91c0Fs
cGhhOwotfQotCi0tICh2b2lkKXdpbmRvd0RpZEV4aXRGdWxsc2NyZWVuCistICh2b2lkKWVudGVy
RnVsbHNjcmVlbjooTlNTY3JlZW4gKilzY3JlZW4KIHsKLSAgICBDQUxheWVyICpsYXllciA9IFtb
W3NlbGYgd2luZG93XSBjb250ZW50Vmlld10gbGF5ZXJdOwotICAgIGlmIChbbGF5ZXIgaXNLaW5k
T2ZDbGFzczpQQUw6OmdldEFWUGxheWVyTGF5ZXJDbGFzcygpXSkKLSAgICAgICAgW1soQVZQbGF5
ZXJMYXllciAqKWxheWVyIHBsYXllcl0gcmVtb3ZlT2JzZXJ2ZXI6c2VsZiBmb3JLZXlQYXRoOkAi
cmF0ZSJdOwotCi0gICAgW3NlbGYgY2xlYXJGYWRlQW5pbWF0aW9uXTsKLSAgICBbW3NlbGYgd2lu
ZG93XSBjbG9zZV07Ci0gICAgW3NlbGYgc2V0V2luZG93Om5pbF07Ci0gICAgW3NlbGYgdXBkYXRl
TWVudUFuZERvY2tGb3JGdWxsc2NyZWVuXTsgICAKLSAgICBbX2h1ZENvbnRyb2xsZXIgc2V0RGVs
ZWdhdGU6bmlsXTsKLSAgICBbX2h1ZENvbnRyb2xsZXIgcmVsZWFzZV07Ci0gICAgX2h1ZENvbnRy
b2xsZXIgPSBuaWw7Ci0gICAgW19iYWNrZ3JvdW5kRnVsbHNjcmVlbldpbmRvdyBjbG9zZV07Ci0g
ICAgW19iYWNrZ3JvdW5kRnVsbHNjcmVlbldpbmRvdyByZWxlYXNlXTsKLSAgICBfYmFja2dyb3Vu
ZEZ1bGxzY3JlZW5XaW5kb3cgPSBuaWw7Ci0gICAgCi0gICAgW3NlbGYgYXV0b3JlbGVhc2VdOyAv
LyBBc3NvY2lhdGVkIC1yZXRhaW4gaXMgaW4gLWV4aXRGdWxsc2NyZWVuLgotICAgIF9pc0VuZGlu
Z0Z1bGxzY3JlZW4gPSBOTzsKKyAgICBpZiAoIV92aWRlb0VsZW1lbnQpCisgICAgICAgIHJldHVy
bjsKKyAgICBbTlNBbmltYXRpb25Db250ZXh0IGJlZ2luR3JvdXBpbmddOworICAgIF92aWRlb0Vs
ZW1lbnQtPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKF9jb250ZW50T3ZlcmxheS5nZXQoKS5sYXll
ciwgW3NlbGYsIHByb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZildIHsKKyAgICAgICAgW3Nl
bGYuZnVsbHNjcmVlbldpbmRvdyBzZXRGcmFtZTpzZWxmLnZpZGVvRWxlbWVudFJlY3QgZGlzcGxh
eTpZRVNdOworICAgICAgICBbc2VsZi5mdWxsc2NyZWVuV2luZG93IG1ha2VLZXlBbmRPcmRlckZy
b250OnNlbGZdOworICAgICAgICBbc2VsZi5mdWxsc2NyZWVuV2luZG93IGVudGVyRnVsbFNjcmVl
bk1vZGU6c2VsZl07CisgICAgICAgIFtOU0FuaW1hdGlvbkNvbnRleHQgZW5kR3JvdXBpbmddOwor
ICAgIH0pOwogfQogCi0tICh2b2lkKXdpbmRvd0RpZEVudGVyRnVsbHNjcmVlbgorLSAodm9pZCll
eGl0RnVsbHNjcmVlbgogewotICAgIFtzZWxmIGNsZWFyRmFkZUFuaW1hdGlvbl07Ci0KLSAgICBB
U1NFUlQoIV9odWRDb250cm9sbGVyKTsKLSAgICBfaHVkQ29udHJvbGxlciA9IFtbV2ViVmlkZW9G
dWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlciBhbGxvY10gaW5pdF07Ci0gICAgW19odWRDb250
cm9sbGVyIHNldERlbGVnYXRlOnNlbGZdOwotCi0gICAgW3NlbGYgdXBkYXRlTWVudUFuZERvY2tG
b3JGdWxsc2NyZWVuXTsKLSAgICBbTlNDdXJzb3Igc2V0SGlkZGVuVW50aWxNb3VzZU1vdmVzOllF
U107Ci0gICAgCi0gICAgLy8gR2l2ZSB0aGUgSFVEIGtleWJvYXJkIGZvY3VzIGluaXRpYWxseQot
ICAgIFtfaHVkQ29udHJvbGxlciBmYWRlV2luZG93SW5dOworICAgIFtzZWxmLmZ1bGxzY3JlZW5X
aW5kb3cgZXhpdEZ1bGxTY3JlZW5Nb2RlOnNlbGZdOwogfQogCiAtIChOU1JlY3QpdmlkZW9FbGVt
ZW50UmVjdApAQCAtMTg0LDMyNCArMjM2LDEwNyBAQCAtIChOU1JlY3QpdmlkZW9FbGVtZW50UmVj
dAogfQogCiAtICh2b2lkKWFwcGxpY2F0aW9uRGlkUmVzaWduQWN0aXZlOihOU05vdGlmaWNhdGlv
biopbm90aWZpY2F0aW9uCi17ICAgCit7CiAgICAgVU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7
CiAgICAgTlNXaW5kb3cqIGZ1bGxzY3JlZW5XaW5kb3cgPSBbc2VsZiBmdWxsc2NyZWVuV2luZG93
XTsKIAogICAgIC8vIFJlcGxpY2F0ZSB0aGUgUXVpY2tUaW1lIFBsYXllciAoWCkgYmVoYXZpb3Ig
d2hlbiBsb3NpbmcgYWN0aXZlIGFwcGxpY2F0aW9uIHN0YXR1czoKLSAgICAvLyBJcyB0aGUgZnVs
bHNjcmVlbiBzY3JlZW4gdGhlIG1haW4gc2NyZWVuPyAoTm90ZTogdGhpcyBjb3ZlcnMgdGhlIGNh
c2Ugd2hlcmUgb25seSBhIAotICAgIC8vIHNpbmdsZSBzY3JlZW4gaXMgYXZhaWxhYmxlLikgIElz
IHRoZSBmdWxsc2NyZWVuIHNjcmVlbiBvbiB0aGUgY3VycmVudCBzcGFjZT8gSUZGIHNvLCAKLSAg
ICAvLyB0aGVuIGV4aXQgZnVsbHNjcmVlbiBtb2RlLiAgICAKKyAgICAvLyBJcyB0aGUgZnVsbHNj
cmVlbiBzY3JlZW4gdGhlIG1haW4gc2NyZWVuPyAoTm90ZTogdGhpcyBjb3ZlcnMgdGhlIGNhc2Ug
d2hlcmUgb25seSBhCisgICAgLy8gc2luZ2xlIHNjcmVlbiBpcyBhdmFpbGFibGUuKSAgSXMgdGhl
IGZ1bGxzY3JlZW4gc2NyZWVuIG9uIHRoZSBjdXJyZW50IHNwYWNlPyBJRkYgc28sCisgICAgLy8g
dGhlbiBleGl0IGZ1bGxzY3JlZW4gbW9kZS4KICAgICBpZiAoZnVsbHNjcmVlbldpbmRvdy5zY3Jl
ZW4gPT0gW05TU2NyZWVuIHNjcmVlbnNdWzBdICYmIGZ1bGxzY3JlZW5XaW5kb3cub25BY3RpdmVT
cGFjZSkKLSAgICAgICAgW3NlbGYgcmVxdWVzdEV4aXRGdWxsc2NyZWVuV2l0aEFuaW1hdGlvbjpO
T107Ci19Ci0KLQotLy8gTUFSSzogLQotLy8gTUFSSzogRXhwb3NlZCBJbnRlcmZhY2UKLQotc3Rh
dGljIE5TUmVjdCBmcmFtZUV4cGFuZGVkVG9SYXRpb09mRnJhbWUoTlNSZWN0IGZyYW1lVG9FeHBh
bmQsIE5TUmVjdCBmcmFtZSkKLXsKLSAgICAvLyBLZWVwIGEgY29uc3RyYWluZWQgYXNwZWN0IHJh
dGlvIGZvciB0aGUgZGVzdGluYXRpb24gd2luZG93Ci0gICAgTlNSZWN0IHJlc3VsdCA9IGZyYW1l
VG9FeHBhbmQ7Ci0gICAgQ0dGbG9hdCBuZXdSYXRpbyA9IGZyYW1lLnNpemUud2lkdGggLyBmcmFt
ZS5zaXplLmhlaWdodDsKLSAgICBDR0Zsb2F0IG9yaWdpbmFsUmF0aW8gPSBmcmFtZVRvRXhwYW5k
LnNpemUud2lkdGggLyBmcmFtZVRvRXhwYW5kLnNpemUuaGVpZ2h0OwotICAgIGlmIChuZXdSYXRp
byA+IG9yaWdpbmFsUmF0aW8pIHsKLSAgICAgICAgQ0dGbG9hdCBuZXdXaWR0aCA9IG5ld1JhdGlv
ICogZnJhbWVUb0V4cGFuZC5zaXplLmhlaWdodDsKLSAgICAgICAgQ0dGbG9hdCBkaWZmID0gbmV3
V2lkdGggLSBmcmFtZVRvRXhwYW5kLnNpemUud2lkdGg7Ci0gICAgICAgIHJlc3VsdC5zaXplLndp
ZHRoID0gbmV3V2lkdGg7Ci0gICAgICAgIHJlc3VsdC5vcmlnaW4ueCAtPSBkaWZmIC8gMjsKLSAg
ICB9IGVsc2UgewotICAgICAgICBDR0Zsb2F0IG5ld0hlaWdodCA9IGZyYW1lVG9FeHBhbmQuc2l6
ZS53aWR0aCAvIG5ld1JhdGlvOwotICAgICAgICBDR0Zsb2F0IGRpZmYgPSBuZXdIZWlnaHQgLSBm
cmFtZVRvRXhwYW5kLnNpemUuaGVpZ2h0OwotICAgICAgICByZXN1bHQuc2l6ZS5oZWlnaHQgPSBu
ZXdIZWlnaHQ7Ci0gICAgICAgIHJlc3VsdC5vcmlnaW4ueSAtPSBkaWZmIC8gMjsKLSAgICB9Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotc3RhdGljIE5TV2luZG93ICpjcmVhdGVCYWNrZ3JvdW5k
RnVsbHNjcmVlbldpbmRvdyhOU1JlY3QgZnJhbWUsIGludCBsZXZlbCkKLXsKLSAgICBOU1dpbmRv
dyAqd2luZG93ID0gW1tOU1dpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpmcmFtZSBz
dHlsZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVm
ZmVyZWQgZGVmZXI6Tk9dOwotICAgIFt3aW5kb3cgc2V0T3BhcXVlOllFU107Ci0gICAgW3dpbmRv
dyBzZXRCYWNrZ3JvdW5kQ29sb3I6W05TQ29sb3IgYmxhY2tDb2xvcl1dOwotICAgIFt3aW5kb3cg
c2V0TGV2ZWw6bGV2ZWxdOwotICAgIFt3aW5kb3cgc2V0UmVsZWFzZWRXaGVuQ2xvc2VkOk5PXTsK
LSAgICByZXR1cm4gd2luZG93OwotfQotCi0tICh2b2lkKXNldHVwRmFkZUFuaW1hdGlvbklmTmVl
ZGVkQW5kRmFkZUluOihCT09MKWZhZGVJbgotewotICAgIENHRmxvYXQgaW5pdGlhbEFscGhhID0g
ZmFkZUluID8gMCA6IDE7Ci0gICAgaWYgKF9mYWRlQW5pbWF0aW9uKSB7Ci0gICAgICAgIC8vIE1h
a2Ugc3VyZSB3ZSBzdXBwb3J0IHF1ZXVpbmcgYW5pbWF0aW9uIGlmIHRoZSBwcmV2aW91cyBvbmUg
aXNuJ3Qgb3ZlciB5ZXQKLSAgICAgICAgaW5pdGlhbEFscGhhID0gW3NlbGYgY2xlYXJGYWRlQW5p
bWF0aW9uXTsKLSAgICB9Ci0gICAgaWYgKCFfZm9yY2VEaXNhYmxlQW5pbWF0aW9uKQotICAgICAg
ICBfZmFkZUFuaW1hdGlvbiA9IFtbV2ViV2luZG93RmFkZUFuaW1hdGlvbiBhbGxvY10gaW5pdFdp
dGhEdXJhdGlvbjowLjIgd2luZG93Ol9iYWNrZ3JvdW5kRnVsbHNjcmVlbldpbmRvdyBpbml0aWFs
QWxwaGE6aW5pdGlhbEFscGhhIGZpbmFsQWxwaGE6ZmFkZUluID8gMSA6IDBdOwotfQotCi0tICh2
b2lkKWVudGVyRnVsbHNjcmVlbjooTlNTY3JlZW4gKilzY3JlZW4KLXsKLSAgICBpZiAoIXNjcmVl
bikKLSAgICAgICAgc2NyZWVuID0gW05TU2NyZWVuIG1haW5TY3JlZW5dOwotCi0gICAgTlNSZWN0
IGVuZEZyYW1lID0gW3NjcmVlbiBmcmFtZV07Ci0gICAgTlNSZWN0IGZyYW1lID0gZnJhbWVFeHBh
bmRlZFRvUmF0aW9PZkZyYW1lKFtzZWxmIHZpZGVvRWxlbWVudFJlY3RdLCBlbmRGcmFtZSk7Ci0K
LSAgICAvLyBDcmVhdGUgYSBibGFjayB3aW5kb3cgaWYgbmVlZGVkCi0gICAgaWYgKCFfYmFja2dy
b3VuZEZ1bGxzY3JlZW5XaW5kb3cpCi0gICAgICAgIF9iYWNrZ3JvdW5kRnVsbHNjcmVlbldpbmRv
dyA9IGNyZWF0ZUJhY2tncm91bmRGdWxsc2NyZWVuV2luZG93KFtzY3JlZW4gZnJhbWVdLCBbW3Nl
bGYgd2luZG93XSBsZXZlbF0tMSk7Ci0gICAgZWxzZQotICAgICAgICBbX2JhY2tncm91bmRGdWxs
c2NyZWVuV2luZG93IHNldEZyYW1lOltzY3JlZW4gZnJhbWVdIGRpc3BsYXk6Tk9dOwotCi0gICAg
W3NlbGYgc2V0dXBGYWRlQW5pbWF0aW9uSWZOZWVkZWRBbmRGYWRlSW46WUVTXTsKLSAgICBpZiAo
X2ZvcmNlRGlzYWJsZUFuaW1hdGlvbikgewotICAgICAgICAvLyBUaGlzIHdpbGwgZGlzYWJsZSBz
Y2FsZSBhbmltYXRpb24KLSAgICAgICAgZnJhbWUgPSBOU1plcm9SZWN0OwotICAgIH0KLSAgICBb
W3NlbGYgZnVsbHNjcmVlbldpbmRvd10gYW5pbWF0ZUZyb21SZWN0OmZyYW1lIHRvUmVjdDplbmRG
cmFtZSB3aXRoU3ViQW5pbWF0aW9uOl9mYWRlQW5pbWF0aW9uIGNvbnRyb2xsZXJBY3Rpb246QHNl
bGVjdG9yKHdpbmRvd0RpZEVudGVyRnVsbHNjcmVlbildOwotCi0gICAgW19iYWNrZ3JvdW5kRnVs
bHNjcmVlbldpbmRvdyBvcmRlcldpbmRvdzpOU1dpbmRvd0JlbG93IHJlbGF0aXZlVG86W1tzZWxm
IGZ1bGxzY3JlZW5XaW5kb3ddIHdpbmRvd051bWJlcl1dOwotfQotCi0tICh2b2lkKWV4aXRGdWxs
c2NyZWVuCi17Ci0gICAgaWYgKF9pc0VuZGluZ0Z1bGxzY3JlZW4pCi0gICAgICAgIHJldHVybjsK
LSAgICBfaXNFbmRpbmdGdWxsc2NyZWVuID0gWUVTOwotICAgIFtfaHVkQ29udHJvbGxlciBjbG9z
ZVdpbmRvd107Ci0KLSAgICBOU1JlY3QgZW5kRnJhbWUgPSBbc2VsZiB2aWRlb0VsZW1lbnRSZWN0
XTsKLQotICAgIFtzZWxmIHNldHVwRmFkZUFuaW1hdGlvbklmTmVlZGVkQW5kRmFkZUluOk5PXTsK
LSAgICBpZiAoX2ZvcmNlRGlzYWJsZUFuaW1hdGlvbikgewotICAgICAgICAvLyBUaGlzIHdpbGwg
ZGlzYWJsZSBzY2FsZSBhbmltYXRpb24KLSAgICAgICAgZW5kRnJhbWUgPSBOU1plcm9SZWN0Owot
ICAgIH0KLSAgICAKLSAgICAvLyBXZSBoYXZlIHRvIHJldGFpbiBvdXJzZWx2ZXMgYmVjYXVzZSB3
ZSB3YW50IHRvIGJlIGFsaXZlIGZvciB0aGUgZW5kIG9mIHRoZSBhbmltYXRpb24uCi0gICAgLy8g
SWYgb3VyIG93bmVyIHJlbGVhc2VzIHVzIHdlIGNvdWxkIGNyYXNoIGlmIHRoaXMgaXMgbm90IHRo
ZSBjYXNlLgotICAgIC8vIEJhbGFuY2VkIGluIHdpbmRvd0RpZEV4aXRGdWxsc2NyZWVuCi0gICAg
W3NlbGYgcmV0YWluXTsgICAgCi0KLSAgICBOU1JlY3Qgc3RhcnRGcmFtZSA9IFtbc2VsZiB3aW5k
b3ddIGZyYW1lXTsKLSAgICBlbmRGcmFtZSA9IGZyYW1lRXhwYW5kZWRUb1JhdGlvT2ZGcmFtZShl
bmRGcmFtZSwgc3RhcnRGcmFtZSk7Ci0KLSAgICBbW3NlbGYgZnVsbHNjcmVlbldpbmRvd10gYW5p
bWF0ZUZyb21SZWN0OnN0YXJ0RnJhbWUgdG9SZWN0OmVuZEZyYW1lIHdpdGhTdWJBbmltYXRpb246
X2ZhZGVBbmltYXRpb24gY29udHJvbGxlckFjdGlvbjpAc2VsZWN0b3Iod2luZG93RGlkRXhpdEZ1
bGxzY3JlZW4pXTsKKyAgICAgICAgW3NlbGYgX3JlcXVlc3RFeGl0XTsKIH0KIAotLSAodm9pZClh
cHBsaWNhdGlvbkRpZENoYW5nZVNjcmVlblBhcmFtZXRlcnM6KE5TTm90aWZpY2F0aW9uKilub3Rp
ZmljYXRpb24KLXsKLSAgICBVTlVTRURfUEFSQU0obm90aWZpY2F0aW9uKTsKLSAgICAvLyBUaGUg
dXNlciBtYXkgaGF2ZSBjaGFuZ2VkIHRoZSBtYWluIHNjcmVlbiBieSBtb3ZpbmcgdGhlIG1lbnUg
YmFyLCBvciB0aGV5IG1heSBoYXZlIGNoYW5nZWQKLSAgICAvLyB0aGUgRG9jaydzIHNpemUgb3Ig
bG9jYXRpb24sIG9yIHRoZXkgbWF5IGhhdmUgY2hhbmdlZCB0aGUgZnVsbHNjcmVlbiBzY3JlZW4n
cyBkaW1lbnNpb25zLiAgCi0gICAgLy8gVXBkYXRlIG91ciBwcmVzZW50YXRpb24gcGFyYW1ldGVy
cywgYW5kIGVuc3VyZSB0aGF0IHRoZSBmdWxsIHNjcmVlbiB3aW5kb3cgb2NjdXBpZXMgdGhlIAot
ICAgIC8vIGVudGlyZSBzY3JlZW46Ci0gICAgW3NlbGYgdXBkYXRlTWVudUFuZERvY2tGb3JGdWxs
c2NyZWVuXTsKLSAgICBbW3NlbGYgd2luZG93XSBzZXRGcmFtZTpbW1tzZWxmIHdpbmRvd10gc2Ny
ZWVuXSBmcmFtZV0gZGlzcGxheTpZRVNdOwotfQotCi0tICh2b2lkKXVwZGF0ZU1lbnVBbmREb2Nr
Rm9yRnVsbHNjcmVlbgotewotICAgIC8vIE5TQXBwbGljYXRpb25QcmVzZW50YXRpb25PcHRpb25z
IGlzIGF2YWlsYWJsZSBvbiA+IDEwLjYgb25seToKLSAgICBOU0FwcGxpY2F0aW9uUHJlc2VudGF0
aW9uT3B0aW9ucyBvcHRpb25zID0gTlNBcHBsaWNhdGlvblByZXNlbnRhdGlvbkRlZmF1bHQ7Ci0g
ICAgTlNTY3JlZW4qIGZ1bGxzY3JlZW5TY3JlZW4gPSBbW3NlbGYgd2luZG93XSBzY3JlZW5dOwot
Ci0gICAgaWYgKCFfaXNFbmRpbmdGdWxsc2NyZWVuKSB7Ci0gICAgICAgIC8vIEF1dG8taGlkZSB0
aGUgbWVudSBiYXIgaWYgdGhlIGZ1bGxzY3JlZW5TY3JlZW4gY29udGFpbnMgdGhlIG1lbnUgYmFy
OgotICAgICAgICAvLyBOT1RFOiBpZiB0aGUgZnVsbHNjcmVlblNjcmVlbiBjb250YWlucyB0aGUg
bWVudSBiYXIgYnV0IG5vdCB0aGUgZG9jaywgd2UgbXVzdCBzdGlsbCAKLSAgICAgICAgLy8gYXV0
by1oaWRlIHRoZSBkb2NrLCBvciBhbiBleGNlcHRpb24gd2lsbCBiZSB0aHJvd24uCi0gICAgICAg
IGlmIChbW05TU2NyZWVuIHNjcmVlbnNdIG9iamVjdEF0SW5kZXg6MF0gPT0gZnVsbHNjcmVlblNj
cmVlbikKLSAgICAgICAgICAgIG9wdGlvbnMgfD0gKE5TQXBwbGljYXRpb25QcmVzZW50YXRpb25B
dXRvSGlkZU1lbnVCYXIgfCBOU0FwcGxpY2F0aW9uUHJlc2VudGF0aW9uQXV0b0hpZGVEb2NrKTsK
LSAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGN1cnJlbnQgc2NyZWVuIGNvbnRhaW5zIHRoZSBkb2Nr
IGJ5IGNvbXBhcmluZyB0aGUgc2NyZWVuJ3MgZnJhbWUgdG8gaXRzCi0gICAgICAgIC8vIHZpc2li
bGVGcmFtZTsgaWYgYSBkb2NrIGlzIHByZXNlbnQsIHRoZSB2aXNpYmxlRnJhbWUgd2lsbCBkaWZm
ZXIuIElmIHRoZSBjdXJyZW50IHNjcmVlbgotICAgICAgICAvLyBjb250YWlucyB0aGUgZG9jaywg
aGlkZSBpdC4KLSAgICAgICAgZWxzZSBpZiAoIU5TRXF1YWxSZWN0cyhbZnVsbHNjcmVlblNjcmVl
biBmcmFtZV0sIFtmdWxsc2NyZWVuU2NyZWVuIHZpc2libGVGcmFtZV0pKQotICAgICAgICAgICAg
b3B0aW9ucyB8PSBOU0FwcGxpY2F0aW9uUHJlc2VudGF0aW9uQXV0b0hpZGVEb2NrOwotICAgIH0K
LQotICAgIE5TQXBwLnByZXNlbnRhdGlvbk9wdGlvbnMgPSBvcHRpb25zOwotfQotCi0vLyBNQVJL
OiAtCi0vLyBNQVJLOiBXaW5kb3cgY2FsbGJhY2sKLQogLSAodm9pZClfcmVxdWVzdEV4aXQKIHsK
LSAgICBpZiAoX3ZpZGVvRWxlbWVudCkKLSAgICAgICAgX3ZpZGVvRWxlbWVudC0+ZXhpdEZ1bGxz
Y3JlZW4oKTsKLSAgICBfZm9yY2VEaXNhYmxlQW5pbWF0aW9uID0gTk87Ci19Ci0KLS0gKHZvaWQp
cmVxdWVzdEV4aXRGdWxsc2NyZWVuV2l0aEFuaW1hdGlvbjooQk9PTClhbmltYXRpb24KLXsKLSAg
ICBpZiAoX2lzRW5kaW5nRnVsbHNjcmVlbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgX2ZvcmNl
RGlzYWJsZUFuaW1hdGlvbiA9ICFhbmltYXRpb247Ci0gICAgW3NlbGYgcGVyZm9ybVNlbGVjdG9y
OkBzZWxlY3RvcihfcmVxdWVzdEV4aXQpIHdpdGhPYmplY3Q6bmlsIGFmdGVyRGVsYXk6MF07Ci0K
KyAgICBbc2VsZi5mdWxsc2NyZWVuV2luZG93IGV4aXRGdWxsU2NyZWVuTW9kZTpzZWxmXTsKIH0K
IAotLSAodm9pZClyZXF1ZXN0RXhpdEZ1bGxzY3JlZW4KKy0gKHZvaWQpX3JlcXVlc3RFbnRlcgog
ewotICAgIFtzZWxmIHJlcXVlc3RFeGl0RnVsbHNjcmVlbldpdGhBbmltYXRpb246WUVTXTsKKyAg
ICBpZiAoX3ZpZGVvRWxlbWVudCkKKyAgICAgICAgX3ZpZGVvRWxlbWVudC0+ZW50ZXJGdWxsc2Ny
ZWVuKCk7CiB9CiAKLS0gKHZvaWQpZmFkZUhVREluCistICh2b2lkKWNhbmNlbE9wZXJhdGlvbjoo
aWQpc2VuZGVyCiB7Ci0gICAgW19odWRDb250cm9sbGVyIGZhZGVXaW5kb3dJbl07CisgICAgW3Nl
bGYgX3JlcXVlc3RFeGl0XTsKIH0KIAotLSAodm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOihO
U1N0cmluZyAqKWtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5TRGljdGlvbmFy
eSAqKWNoYW5nZSBjb250ZXh0Oih2b2lkICopY29udGV4dAorLSAoQk9PTClwbGF5ZXJWaWV3SXNG
dWxsU2NyZWVuOihXZWJBVlBsYXllclZpZXcqKXBsYXllclZpZXcKIHsKLSAgICBVTlVTRURfUEFS
QU0ob2JqZWN0KTsKLSAgICBVTlVTRURfUEFSQU0oY2hhbmdlKTsKLSAgICBVTlVTRURfUEFSQU0o
Y29udGV4dCk7Ci0KLSAgICBpZiAoW2tleVBhdGggaXNFcXVhbFRvOkAicmF0ZSJdKQotICAgICAg
ICBbc2VsZiByYXRlQ2hhbmdlZDpuaWxdOworICAgIHJldHVybiBfaXNGdWxsU2NyZWVuOwogfQog
Ci0tICh2b2lkKXJhdGVDaGFuZ2VkOihOU05vdGlmaWNhdGlvbiAqKXVudXNlZE5vdGlmaWNhdGlv
bgorLSAodm9pZClwbGF5ZXJWaWV3UmVxdWVzdEVudGVyRnVsbHNjcmVlbjooQVZQbGF5ZXJWaWV3
KilwbGF5ZXJWaWV3CiB7Ci0gICAgVU5VU0VEX1BBUkFNKHVudXNlZE5vdGlmaWNhdGlvbik7Ci0g
ICAgW19odWRDb250cm9sbGVyIHVwZGF0ZVJhdGVdOworICAgIFtzZWxmIF9yZXF1ZXN0RW50ZXJd
OwogfQogCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBXZWJWaWRlb0Z1bGxzY3JlZW5XaW5kb3cK
LQotLSAoaWQpaW5pdFdpdGhDb250ZW50UmVjdDooTlNSZWN0KWNvbnRlbnRSZWN0IHN0eWxlTWFz
azooTlNVSW50ZWdlcilhU3R5bGUgYmFja2luZzooTlNCYWNraW5nU3RvcmVUeXBlKWJ1ZmZlcmlu
Z1R5cGUgZGVmZXI6KEJPT0wpZmxhZworLSAodm9pZClwbGF5ZXJWaWV3UmVxdWVzdEV4aXRGdWxs
c2NyZWVuOihBVlBsYXllclZpZXcqKXBsYXllclZpZXcKIHsKLSAgICBVTlVTRURfUEFSQU0oYVN0
eWxlKTsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRXaXRoQ29udGVudFJlY3Q6Y29udGVudFJlY3Qg
c3R5bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01hc2sgYmFja2luZzpidWZmZXJpbmdUeXBlIGRl
ZmVyOmZsYWddOwotICAgIGlmICghc2VsZikKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBbc2Vs
ZiBzZXRPcGFxdWU6Tk9dOwotICAgIFtzZWxmIHNldEJhY2tncm91bmRDb2xvcjpbTlNDb2xvciBj
bGVhckNvbG9yXV07Ci0gICAgW3NlbGYgc2V0SWdub3Jlc01vdXNlRXZlbnRzOk5PXTsKLSAgICBb
c2VsZiBzZXRBY2NlcHRzTW91c2VNb3ZlZEV2ZW50czpZRVNdOwotICAgIHJldHVybiBzZWxmOwor
ICAgIFtzZWxmIF9yZXF1ZXN0RXhpdF07CiB9CiAKLS0gKHZvaWQpZGVhbGxvYworLSAobnVsbGFi
bGUgTlNBcnJheTxOU1dpbmRvdyAqPiAqKWN1c3RvbVdpbmRvd3NUb0VudGVyRnVsbFNjcmVlbkZv
cldpbmRvdzooTlNXaW5kb3cgKil3aW5kb3cKIHsKLSAgICBBU1NFUlQoIV9mdWxsc2NyZWVuQW5p
bWF0aW9uKTsKLSAgICBbc3VwZXIgZGVhbGxvY107CisgICAgcmV0dXJuIEBbc2VsZi5mdWxsc2Ny
ZWVuV2luZG93XTsKIH0KIAotLSAoQk9PTClyZXNpZ25GaXJzdFJlc3BvbmRlcgorLSAodm9pZCl3
aW5kb3c6KE5TV2luZG93ICopd2luZG93IHN0YXJ0Q3VzdG9tQW5pbWF0aW9uVG9FbnRlckZ1bGxT
Y3JlZW5XaXRoRHVyYXRpb246KE5TVGltZUludGVydmFsKWR1cmF0aW9uCiB7Ci0gICAgcmV0dXJu
IE5POworICAgIFtOU0FuaW1hdGlvbkNvbnRleHQgcnVuQW5pbWF0aW9uR3JvdXA6XihOU0FuaW1h
dGlvbkNvbnRleHQgKmNvbnRleHQpIHsKKyAgICAgICAgY29udGV4dC5hbGxvd3NJbXBsaWNpdEFu
aW1hdGlvbiA9IFlFUzsKKyAgICAgICAgY29udGV4dC5kdXJhdGlvbiA9IGR1cmF0aW9uOworICAg
ICAgICBbd2luZG93IHNldEZyYW1lOndpbmRvdy5zY3JlZW4uZnJhbWUgZGlzcGxheTpZRVNdOwor
ICAgIH0gY29tcGxldGlvbkhhbmRsZXI6TlVMTF07CiB9CiAKLS0gKEJPT0wpY2FuQmVjb21lS2V5
V2luZG93CistIChudWxsYWJsZSBOU0FycmF5PE5TV2luZG93ICo+ICopY3VzdG9tV2luZG93c1Rv
RXhpdEZ1bGxTY3JlZW5Gb3JXaW5kb3c6KE5TV2luZG93ICopd2luZG93CiB7Ci0gICAgcmV0dXJu
IE5POworICAgIHJldHVybiBAW3NlbGYuZnVsbHNjcmVlbldpbmRvd107CiB9CiAKLS0gKHZvaWQp
bW91c2VEb3duOihOU0V2ZW50ICopZXZlbnQKKy0gKHZvaWQpd2luZG93OihOU1dpbmRvdyAqKXdp
bmRvdyBzdGFydEN1c3RvbUFuaW1hdGlvblRvRXhpdEZ1bGxTY3JlZW5XaXRoRHVyYXRpb246KE5T
VGltZUludGVydmFsKWR1cmF0aW9uCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGV2ZW50KTsKKyAgICBb
TlNBbmltYXRpb25Db250ZXh0IHJ1bkFuaW1hdGlvbkdyb3VwOl4oTlNBbmltYXRpb25Db250ZXh0
ICpjb250ZXh0KSB7CisgICAgICAgIGNvbnRleHQuYWxsb3dzSW1wbGljaXRBbmltYXRpb24gPSBZ
RVM7CisgICAgICAgIGNvbnRleHQuZHVyYXRpb24gPSBkdXJhdGlvbjsKKyAgICAgICAgW3dpbmRv
dyBzZXRGcmFtZTpzZWxmLnZpZGVvRWxlbWVudFJlY3QgZGlzcGxheTpZRVNdOworICAgIH0gY29t
cGxldGlvbkhhbmRsZXI6TlVMTF07CiB9CiAKLS0gKHZvaWQpY2FuY2VsT3BlcmF0aW9uOihpZClz
ZW5kZXIKKy0gKHZvaWQpd2luZG93RGlkRW50ZXJGdWxsU2NyZWVuOihOU05vdGlmaWNhdGlvbiAq
KW5vdGlmaWNhdGlvbgogewotICAgIFVOVVNFRF9QQVJBTShzZW5kZXIpOwotICAgIFtbc2VsZiB3
aW5kb3dDb250cm9sbGVyXSByZXF1ZXN0RXhpdEZ1bGxzY3JlZW5dOworICAgIF9wbGF5ZXJWaWV3
LmNvbnRyb2xzU3R5bGUgPSBBVlBsYXllclZpZXdDb250cm9sc1N0eWxlRmxvYXRpbmc7CisgICAg
W19wbGF5ZXJWaWV3IHdpbGxDaGFuZ2VWYWx1ZUZvcktleTpAImlzRnVsbFNjcmVlbiJdOworICAg
IF9pc0Z1bGxTY3JlZW4gPSBZRVM7CisgICAgW19wbGF5ZXJWaWV3IGRpZENoYW5nZVZhbHVlRm9y
S2V5OkAiaXNGdWxsU2NyZWVuIl07CiB9CiAKLS0gKHZvaWQpYW5pbWF0ZWRSZXNpemVEaWRFbmQK
Ky0gKHZvaWQpd2luZG93V2lsbEV4aXRGdWxsU2NyZWVuOihOU05vdGlmaWNhdGlvbiAqKW5vdGlm
aWNhdGlvbgogewotICAgIGlmIChfY29udHJvbGxlckFjdGlvbk9uQW5pbWF0aW9uRW5kKQotICAg
ICAgICBbW3NlbGYgd2luZG93Q29udHJvbGxlcl0gcGVyZm9ybVNlbGVjdG9yOl9jb250cm9sbGVy
QWN0aW9uT25BbmltYXRpb25FbmRdOwotICAgIF9jb250cm9sbGVyQWN0aW9uT25BbmltYXRpb25F
bmQgPSBOVUxMOworICAgIF9wbGF5ZXJWaWV3LmNvbnRyb2xzU3R5bGUgPSBBVlBsYXllclZpZXdD
b250cm9sc1N0eWxlTm9uZTsKIH0KIAotLy8KLS8vIFRoaXMgZnVuY3Rpb24gd2lsbCBhbmltYXRl
IGEgY2hhbmdlIG9mIGZyYW1lIHJlY3RhbmdsZQotLy8gV2Ugc3VwcG9ydCBxdWV1aW5nIGFuaW1h
dGlvbiwgdGhhdCBtZWFucyB0aGF0IHdlJ2xsIGNvcnJlY3RseQotLy8gaW50ZXJydXB0IHRoZSBy
dW5uaW5nIGFuaW1hdGlvbiwgYW5kIHF1ZXVlIHRoZSBuZXh0IG9uZS4KLS8vCi0tICh2b2lkKWFu
aW1hdGVGcm9tUmVjdDooTlNSZWN0KXN0YXJ0UmVjdCB0b1JlY3Q6KE5TUmVjdCllbmRSZWN0IHdp
dGhTdWJBbmltYXRpb246KE5TQW5pbWF0aW9uICopc3ViQW5pbWF0aW9uIGNvbnRyb2xsZXJBY3Rp
b246KFNFTCljb250cm9sbGVyQWN0aW9uCistICh2b2lkKXdpbmRvd0RpZEV4aXRGdWxsU2NyZWVu
OihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgogewotICAgIF9jb250cm9sbGVyQWN0aW9u
T25BbmltYXRpb25FbmQgPSBjb250cm9sbGVyQWN0aW9uOwotCi0gICAgQk9PTCB3YXNBbmltYXRp
bmcgPSBOTzsKLSAgICBpZiAoX2Z1bGxzY3JlZW5BbmltYXRpb24pIHsKLSAgICAgICAgd2FzQW5p
bWF0aW5nID0gWUVTOworICAgIFtfcGxheWVyVmlldyB3aWxsQ2hhbmdlVmFsdWVGb3JLZXk6QCJp
c0Z1bGxTY3JlZW4iXTsKKyAgICBfaXNGdWxsU2NyZWVuID0gTk87CisgICAgW19wbGF5ZXJWaWV3
IGRpZENoYW5nZVZhbHVlRm9yS2V5OkAiaXNGdWxsU2NyZWVuIl07CiAKLSAgICAgICAgLy8gSW50
ZXJydXB0IGFueSBydW5uaW5nIGFuaW1hdGlvbi4KLSAgICAgICAgW19mdWxsc2NyZWVuQW5pbWF0
aW9uIHN0b3BBbmltYXRpb25dOwotCi0gICAgICAgIC8vIFNhdmUgdGhlIGN1cnJlbnQgcmVjdCB0
byBlbnN1cmUgYSBzbW9vdGggdHJhbnNpdGlvbi4KLSAgICAgICAgc3RhcnRSZWN0ID0gW19mdWxs
c2NyZWVuQW5pbWF0aW9uIGN1cnJlbnRGcmFtZV07Ci0gICAgICAgIFtfZnVsbHNjcmVlbkFuaW1h
dGlvbiByZWxlYXNlXTsKLSAgICAgICAgX2Z1bGxzY3JlZW5BbmltYXRpb24gPSBuaWw7Ci0gICAg
fQotICAgIAotICAgIGlmIChOU0lzRW1wdHlSZWN0KHN0YXJ0UmVjdCkgfHwgTlNJc0VtcHR5UmVj
dChlbmRSZWN0KSkgewotICAgICAgICAvLyBGYWtlbHkgZW5kIHRoZSBzdWJhbmltYXRpb24uCi0g
ICAgICAgIFtzdWJBbmltYXRpb24gc2V0Q3VycmVudFByb2dyZXNzOjFdOwotICAgICAgICAvLyBB
bmQgcmVtb3ZlIHRoZSB3ZWFrIGxpbmsgdG8gdGhlIHdpbmRvdy4KLSAgICAgICAgW3N1YkFuaW1h
dGlvbiBzdG9wQW5pbWF0aW9uXTsKLQotICAgICAgICBbc2VsZiBzZXRGcmFtZTplbmRSZWN0IGRp
c3BsYXk6Tk9dOwotICAgICAgICBbc2VsZiBtYWtlS2V5QW5kT3JkZXJGcm9udDpzZWxmXTsKLSAg
ICAgICAgW3NlbGYgYW5pbWF0ZWRSZXNpemVEaWRFbmRdOworICAgIGlmICghX3ZpZGVvRWxlbWVu
dCkgeworICAgICAgICBbc2VsZi5mdWxsc2NyZWVuV2luZG93IGNsb3NlXTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIGlmICghd2FzQW5pbWF0aW5nKSB7Ci0gICAgICAgIC8vIFdlJ2xs
IGRvd25zY2FsZSB0aGUgd2luZG93IGR1cmluZyB0aGUgYW5pbWF0aW9uIGJhc2VkIG9uIHRoZSBo
aWdoZXIgcmVzb2x1dGlvbiByZWN0Ci0gICAgICAgIEJPT0wgaGlnaGVyUmVzb2x1dGlvbklzRW5k
UmVjdCA9IHN0YXJ0UmVjdC5zaXplLndpZHRoIDwgZW5kUmVjdC5zaXplLndpZHRoICYmIHN0YXJ0
UmVjdC5zaXplLmhlaWdodCA8IGVuZFJlY3Quc2l6ZS5oZWlnaHQ7Ci0gICAgICAgIFtzZWxmIHNl
dEZyYW1lOmhpZ2hlclJlc29sdXRpb25Jc0VuZFJlY3QgPyBlbmRSZWN0IDogc3RhcnRSZWN0IGRp
c3BsYXk6Tk9dOwotICAgIH0KLSAgICAKLSAgICBBU1NFUlQoIV9mdWxsc2NyZWVuQW5pbWF0aW9u
KTsKLSAgICBfZnVsbHNjcmVlbkFuaW1hdGlvbiA9IFtbV2ViV2luZG93U2NhbGVBbmltYXRpb24g
YWxsb2NdIGluaXRXaXRoSGludGVkRHVyYXRpb246MC4yIHdpbmRvdzpzZWxmIGluaXRhbEZyYW1l
OnN0YXJ0UmVjdCBmaW5hbEZyYW1lOmVuZFJlY3RdOwotICAgIFtfZnVsbHNjcmVlbkFuaW1hdGlv
biBzZXRTdWJBbmltYXRpb246c3ViQW5pbWF0aW9uXTsKLSAgICBbX2Z1bGxzY3JlZW5BbmltYXRp
b24gc2V0RGVsZWdhdGU6c2VsZl07Ci0gICAgCi0gICAgLy8gTWFrZSBzdXJlIHRoZSBhbmltYXRp
b24gaGFzIHNjYWxlZCB0aGUgd2luZG93IGJlZm9yZSBzaG93aW5nIGl0LgotICAgIFtfZnVsbHNj
cmVlbkFuaW1hdGlvbiBzZXRDdXJyZW50UHJvZ3Jlc3M6MF07Ci0gICAgW3NlbGYgbWFrZUtleUFu
ZE9yZGVyRnJvbnQ6c2VsZl07Ci0KLSAgICBbX2Z1bGxzY3JlZW5BbmltYXRpb24gc3RhcnRBbmlt
YXRpb25dOwotfQotCi0tICh2b2lkKWFuaW1hdGlvbkRpZEVuZDooTlNBbmltYXRpb24gKilhbmlt
YXRpb24KLXsKLSAgICBpZiAoIVtOU1RocmVhZCBpc01haW5UaHJlYWRdKSB7Ci0gICAgICAgIFtz
ZWxmIHBlcmZvcm1TZWxlY3Rvck9uTWFpblRocmVhZDpAc2VsZWN0b3IoYW5pbWF0aW9uRGlkRW5k
Oikgd2l0aE9iamVjdDphbmltYXRpb24gd2FpdFVudGlsRG9uZTpOT107Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgaWYgKGFuaW1hdGlvbiAhPSBfZnVsbHNjcmVlbkFuaW1hdGlvbikKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgLy8gVGhlIGFuaW1hdGlvbiBpcyBub3QgcmVhbGx5IG92ZXIg
YW5kIHdhcyBpbnRlcnJ1cHRlZAotICAgIC8vIERvbid0IHNlbmQgY29tcGxldGlvbiBldmVudHMu
Ci0gICAgaWYgKFthbmltYXRpb24gY3VycmVudFByb2dyZXNzXSA8IDEuMCkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgLy8gRW5zdXJlIHRoYXQgYW5pbWF0aW9uIChhbmQgc3ViYW5pbWF0aW9uKSBk
b24ndCBrZWVwCi0gICAgLy8gdGhlIHdlYWsgcmVmZXJlbmNlIHRvIHRoZSB3aW5kb3cgaXZhciB0
aGF0IG1heSBiZSBkZXN0cm95ZWQgZnJvbQotICAgIC8vIG5vdyBvbi4KLSAgICBbX2Z1bGxzY3Jl
ZW5BbmltYXRpb24gc2V0V2luZG93Om5pbF07Ci0KLSAgICBbX2Z1bGxzY3JlZW5BbmltYXRpb24g
YXV0b3JlbGVhc2VdOwotICAgIF9mdWxsc2NyZWVuQW5pbWF0aW9uID0gbmlsOwotCi0gICAgW3Nl
bGYgYW5pbWF0ZWRSZXNpemVEaWRFbmRdOwotfQotCi0tICh2b2lkKW1vdXNlTW92ZWQ6KE5TRXZl
bnQgKilldmVudAotewotICAgIFVOVVNFRF9QQVJBTShldmVudCk7Ci0gICAgW1tzZWxmIHdpbmRv
d0NvbnRyb2xsZXJdIGZhZGVIVURJbl07CisgICAgW05TQW5pbWF0aW9uQ29udGV4dCBiZWdpbkdy
b3VwaW5nXTsKKyAgICBfdmlkZW9FbGVtZW50LT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihuaWws
IFtzZWxmLCBwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpXSB7CisgICAgICAgIFtzZWxm
LmZ1bGxzY3JlZW5XaW5kb3cgY2xvc2VdOworICAgICAgICBbTlNBbmltYXRpb25Db250ZXh0IGVu
ZEdyb3VwaW5nXTsKKyAgICB9KTsKKyAgICBfdmlkZW9FbGVtZW50LT5leGl0RnVsbHNjcmVlbigp
OwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZjE4NGFkNDEwNmZjMTc4YjY3MjY2NTky
NWZiN2JkZmVhYmM1MmQ1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlkZW9GdWxsc2NyZWVu
SFVEV2luZG93Q29udHJvbGxlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpZiBFTkFCTEUoVklERU8pCi0KLSNpbXBvcnQgPEFwcEtpdC9OU0J1dHRvbi5o
PgotI2ltcG9ydCA8QXBwS2l0L05TQ29udHJvbC5oPgotI2ltcG9ydCA8QXBwS2l0L05TVGV4dEZp
ZWxkLmg+Ci0jaW1wb3J0IDxBcHBLaXQvTlNUcmFja2luZ0FyZWEuaD4KLSNpbXBvcnQgPEFwcEtp
dC9OU1dpbmRvdy5oPgotI2ltcG9ydCA8QXBwS2l0L05TV2luZG93Q29udHJvbGxlci5oPgotI2lt
cG9ydCA8d3RmL05ha2VkUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIEhUTUxW
aWRlb0VsZW1lbnQ7Ci19Ci0KLUBwcm90b2NvbCBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dD
b250cm9sbGVyRGVsZWdhdGU7Ci0KLUBpbnRlcmZhY2UgV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2lu
ZG93Q29udHJvbGxlciA6IE5TV2luZG93Q29udHJvbGxlciB7Ci0gICAgaWQgPFdlYlZpZGVvRnVs
bHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXJEZWxlZ2F0ZT4gX2RlbGVnYXRlOwotICAgIE5TVGlt
ZXIgKl90aW1lbGluZVVwZGF0ZVRpbWVyOwotICAgIE5TVHJhY2tpbmdBcmVhICpfYXJlYTsKLSAg
ICBCT09MIF9tb3VzZUlzSW5IVUQ7Ci0gICAgQk9PTCBfaXNFbmRpbmdGdWxsc2NyZWVuOwotICAg
IEJPT0wgX2lzU2NydWJiaW5nOwotCi0gICAgTlNDb250cm9sICpfdGltZWxpbmU7Ci0gICAgTlNU
ZXh0RmllbGQgKl9yZW1haW5pbmdUaW1lVGV4dDsKLSAgICBOU1RleHRGaWVsZCAqX2VsYXBzZWRU
aW1lVGV4dDsKLSAgICBOU0NvbnRyb2wgKl92b2x1bWVTbGlkZXI7Ci0gICAgTlNCdXR0b24gKl9w
bGF5QnV0dG9uOwotfQotCi0tIChpZCA8V2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJv
bGxlckRlbGVnYXRlPilkZWxlZ2F0ZTsKLS0gKHZvaWQpc2V0RGVsZWdhdGU6KGlkIDxXZWJWaWRl
b0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyRGVsZWdhdGU+KWRlbGVnYXRlOwotLSAodm9p
ZClmYWRlV2luZG93SW47Ci0tICh2b2lkKWZhZGVXaW5kb3dPdXQ7Ci0tICh2b2lkKWNsb3NlV2lu
ZG93OwotLSAodm9pZCl1cGRhdGVSYXRlOwotCi1AZW5kCi0KLUBwcm90b2NvbCBXZWJWaWRlb0Z1
bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyRGVsZWdhdGUgPE5TT2JqZWN0PgotLSAodm9pZCly
ZXF1ZXN0RXhpdEZ1bGxzY3JlZW47Ci0tIChOYWtlZFB0cjxXZWJDb3JlOjpIVE1MVmlkZW9FbGVt
ZW50Pil2aWRlb0VsZW1lbnQ7Ci1AZW5kCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9s
bGVyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWRlb0Z1bGxzY3Jl
ZW5IVURXaW5kb3dDb250cm9sbGVyLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBh
ZTdlNGEyOGEwOGJhMTk4Mjk4YTFkODQ4MjYwMmJmN2I1ZjJiMThlLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5tbQorKysgL2Rldi9u
dWxsCkBAIC0xLDczNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZiBFTkFCTEUoVklERU8pICYm
IFBMQVRGT1JNKE1BQykKLQotI2ltcG9ydCAiV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29u
dHJvbGxlci5oIgotCi0jaW1wb3J0IDxXZWJDb3JlL0Zsb2F0Q29udmVyc2lvbi5oPgotI2ltcG9y
dCA8V2ViQ29yZS9IVE1MVmlkZW9FbGVtZW50Lmg+Ci0jaW1wb3J0IDxwYWwvc3BpL2NnL0NvcmVH
cmFwaGljc1NQSS5oPgotI2ltcG9ydCA8cGFsL3NwaS9tYWMvUVRLaXRTUEkuaD4KLSNpbXBvcnQg
PHd0Zi9Tb2Z0TGlua2luZy5oPgotCi1TT0ZUX0xJTktfRlJBTUVXT1JLX09QVElPTkFMKFFUS2l0
KQotCi1TT0ZUX0xJTktfQ0xBU1NfT1BUSU9OQUwoUVRLaXQsIFFUSFVEQmFja2dyb3VuZFZpZXcp
Ci1TT0ZUX0xJTktfQ0xBU1NfT1BUSU9OQUwoUVRLaXQsIFFUSFVEQnV0dG9uKQotU09GVF9MSU5L
X0NMQVNTX09QVElPTkFMKFFUS2l0LCBRVEhVRFNsaWRlcikKLVNPRlRfTElOS19DTEFTU19PUFRJ
T05BTChRVEtpdCwgUVRIVURUaW1lbGluZSkKLQotI2RlZmluZSBRVEhVREJhY2tncm91bmRWaWV3
IGdldFFUSFVEQmFja2dyb3VuZFZpZXdDbGFzcygpCi0jZGVmaW5lIFFUSFVEQnV0dG9uIGdldFFU
SFVEQnV0dG9uQ2xhc3MoKQotI2RlZmluZSBRVEhVRFNsaWRlciBnZXRRVEhVRFNsaWRlckNsYXNz
KCkKLSNkZWZpbmUgUVRIVURUaW1lbGluZSBnZXRRVEhVRFRpbWVsaW5lQ2xhc3MoKQotCi1lbnVt
IGNsYXNzIE1lZGlhVUlDb250cm9sIHsKLSAgICBUaW1lbGluZSwKLSAgICBTbGlkZXIsCi0gICAg
UGxheVBhdXNlQnV0dG9uLAotICAgIEV4aXRGdWxsc2NyZWVuQnV0dG9uLAotICAgIFJld2luZEJ1
dHRvbiwKLSAgICBGYXN0Rm9yd2FyZEJ1dHRvbiwKLSAgICBWb2x1bWVVcEJ1dHRvbiwKLSAgICBW
b2x1bWVEb3duQnV0dG9uLAotfTsKLQotdXNpbmcgV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDsK
LXVzaW5nIFdlYkNvcmU6Om5hcnJvd1ByZWNpc2lvblRvRmxvYXQ7Ci0KLUBpbnRlcmZhY2UgV2Vi
VmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlciAoUHJpdmF0ZSkgPE5TV2luZG93RGVs
ZWdhdGU+Ci0KLS0gKHZvaWQpdXBkYXRlVGltZTsKLS0gKHZvaWQpdGltZWxpbmVQb3NpdGlvbkNo
YW5nZWQ6KGlkKXNlbmRlcjsKLS0gKGZsb2F0KWN1cnJlbnRUaW1lOwotLSAodm9pZClzZXRDdXJy
ZW50VGltZTooZmxvYXQpY3VycmVudFRpbWU7Ci0tIChkb3VibGUpZHVyYXRpb247Ci0KLS0gKHZv
aWQpdm9sdW1lQ2hhbmdlZDooaWQpc2VuZGVyOwotLSAoZmxvYXQpbWF4Vm9sdW1lOwotLSAoZmxv
YXQpdm9sdW1lOwotLSAodm9pZClzZXRWb2x1bWU6KGZsb2F0KXZvbHVtZTsKLS0gKHZvaWQpZGVj
cmVtZW50Vm9sdW1lOwotLSAodm9pZClpbmNyZW1lbnRWb2x1bWU7Ci0KLS0gKHZvaWQpdXBkYXRl
UGxheUJ1dHRvbjsKLS0gKHZvaWQpdG9nZ2xlUGxheWluZzooaWQpc2VuZGVyOwotLSAoQk9PTClw
bGF5aW5nOwotLSAodm9pZClzZXRQbGF5aW5nOihCT09MKXBsYXlpbmc7Ci0KLS0gKHZvaWQpcmV3
aW5kOihpZClzZW5kZXI7Ci0tICh2b2lkKWZhc3RGb3J3YXJkOihpZClzZW5kZXI7Ci0KLS0gKE5T
U3RyaW5nICopcmVtYWluaW5nVGltZVRleHQ7Ci0tIChOU1N0cmluZyAqKWVsYXBzZWRUaW1lVGV4
dDsKLQotLSAodm9pZClleGl0RnVsbHNjcmVlbjooaWQpc2VuZGVyOwotQGVuZAotCi1AaW50ZXJm
YWNlIFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvdyA6IE5TV2luZG93Ci1AZW5kCi0KLUBpbXBs
ZW1lbnRhdGlvbiBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3cKLQotLSAoaWQpaW5pdFdpdGhD
b250ZW50UmVjdDooTlNSZWN0KWNvbnRlbnRSZWN0IHN0eWxlTWFzazooTlNVSW50ZWdlcilhU3R5
bGUgYmFja2luZzooTlNCYWNraW5nU3RvcmVUeXBlKWJ1ZmZlcmluZ1R5cGUgZGVmZXI6KEJPT0wp
ZmxhZwotewotICAgIFVOVVNFRF9QQVJBTShhU3R5bGUpOwotICAgIHNlbGYgPSBbc3VwZXIgaW5p
dFdpdGhDb250ZW50UmVjdDpjb250ZW50UmVjdCBzdHlsZU1hc2s6TlNXaW5kb3dTdHlsZU1hc2tC
b3JkZXJsZXNzIGJhY2tpbmc6YnVmZmVyaW5nVHlwZSBkZWZlcjpmbGFnXTsKLSAgICBpZiAoIXNl
bGYpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBbc2VsZiBzZXRPcGFxdWU6Tk9dOwotICAg
IFtzZWxmIHNldEJhY2tncm91bmRDb2xvcjpbTlNDb2xvciBjbGVhckNvbG9yXV07Ci0gICAgW3Nl
bGYgc2V0TGV2ZWw6TlNQb3BVcE1lbnVXaW5kb3dMZXZlbF07Ci0gICAgW3NlbGYgc2V0QWNjZXB0
c01vdXNlTW92ZWRFdmVudHM6WUVTXTsKLSAgICBbc2VsZiBzZXRJZ25vcmVzTW91c2VFdmVudHM6
Tk9dOwotICAgIFtzZWxmIHNldE1vdmFibGVCeVdpbmRvd0JhY2tncm91bmQ6WUVTXTsKLQotICAg
IHJldHVybiBzZWxmOwotfQotCi0tIChCT09MKWNhbkJlY29tZUtleVdpbmRvdwotewotICAgIHJl
dHVybiBZRVM7Ci19Ci0KLS0gKHZvaWQpY2FuY2VsT3BlcmF0aW9uOihpZClzZW5kZXIKLXsKLSAg
ICBVTlVTRURfUEFSQU0oc2VuZGVyKTsKLSAgICBbW3NlbGYgd2luZG93Q29udHJvbGxlcl0gZXhp
dEZ1bGxzY3JlZW46c2VsZl07Ci19Ci0KLS0gKHZvaWQpY2VudGVyCi17Ci0gICAgTlNSZWN0IGh1
ZEZyYW1lID0gW3NlbGYgZnJhbWVdOwotICAgIE5TUmVjdCBzY3JlZW5GcmFtZSA9IFtbTlNTY3Jl
ZW4gbWFpblNjcmVlbl0gZnJhbWVdOwotICAgIFtzZWxmIHNldEZyYW1lVG9wTGVmdFBvaW50Ok5T
TWFrZVBvaW50KHNjcmVlbkZyYW1lLm9yaWdpbi54ICsgKHNjcmVlbkZyYW1lLnNpemUud2lkdGgg
LSBodWRGcmFtZS5zaXplLndpZHRoKSAvIDIsIHNjcmVlbkZyYW1lLm9yaWdpbi55ICsgKHNjcmVl
bkZyYW1lLnNpemUuaGVpZ2h0IC0gaHVkRnJhbWUuc2l6ZS5oZWlnaHQpIC8gNildOwotfQotCi0t
ICh2b2lkKWtleURvd246KE5TRXZlbnQgKilldmVudAotewotICAgIFtzdXBlciBrZXlEb3duOmV2
ZW50XTsKLSAgICBbW3NlbGYgd2luZG93Q29udHJvbGxlcl0gZmFkZVdpbmRvd0luXTsKLX0KLQot
LSAoQk9PTClyZXNpZ25GaXJzdFJlc3BvbmRlcgotewotICAgIHJldHVybiBOTzsKLX0KLQotLSAo
Qk9PTClwZXJmb3JtS2V5RXF1aXZhbGVudDooTlNFdmVudCAqKWV2ZW50Ci17Ci0gICAgLy8gQmxv
Y2sgYWxsIGNvbW1hbmQga2V5IGV2ZW50cyB3aGlsZSB0aGUgZnVsbHNjcmVlbiB3aW5kb3cgaXMg
dXAuCi0gICAgaWYgKFtldmVudCB0eXBlXSAhPSBOU0V2ZW50VHlwZUtleURvd24pCi0gICAgICAg
IHJldHVybiBOTzsKLSAgICAKLSAgICBpZiAoIShbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0V2
ZW50TW9kaWZpZXJGbGFnQ29tbWFuZCkpCi0gICAgICAgIHJldHVybiBOTzsKLSAgICByZXR1cm4g
WUVTOwotfQotCi1AZW5kCi0KLXN0YXRpYyBjb25zdCBDR0Zsb2F0IHdpbmRvd0hlaWdodCA9IDU5
Owotc3RhdGljIGNvbnN0IENHRmxvYXQgd2luZG93V2lkdGggPSA0Mzg7Ci0KLXN0YXRpYyBjb25z
dCBOU1RpbWVJbnRlcnZhbCBIVURXaW5kb3dGYWRlT3V0RGVsYXkgPSAzOwotCi1AaW1wbGVtZW50
YXRpb24gV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlcgotCi0tIChpZClpbml0
Ci17Ci0gICAgTlNXaW5kb3cgKndpbmRvdyA9IFtbV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93
IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0Ok5TTWFrZVJlY3QoMCwgMCwgd2luZG93V2lkdGgs
IHdpbmRvd0hlaWdodCkgc3R5bGVNYXNrOk5TV2luZG93U3R5bGVNYXNrQm9yZGVybGVzcyBiYWNr
aW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6Tk9dOwotICAgIHNlbGYgPSBbc3VwZXIg
aW5pdFdpdGhXaW5kb3c6d2luZG93XTsKLSAgICBbd2luZG93IHNldERlbGVnYXRlOnNlbGZdOwot
ICAgIFt3aW5kb3cgcmVsZWFzZV07Ci0gICAgaWYgKCFzZWxmKQotICAgICAgICByZXR1cm4gbmls
OwotICAgIFtzZWxmIHdpbmRvd0RpZExvYWRdOwotICAgIHJldHVybiBzZWxmOwotfQotCi0tICh2
b2lkKWRlYWxsb2MKLXsKLSAgICBBU1NFUlQoIV90aW1lbGluZVVwZGF0ZVRpbWVyKTsKLSAgICBB
U1NFUlQoIV9hcmVhKTsKLSAgICBBU1NFUlQoIV9pc1NjcnViYmluZyk7Ci0gICAgW190aW1lbGlu
ZSByZWxlYXNlXTsKLSAgICBbX3JlbWFpbmluZ1RpbWVUZXh0IHJlbGVhc2VdOwotICAgIFtfZWxh
cHNlZFRpbWVUZXh0IHJlbGVhc2VdOwotICAgIFtfdm9sdW1lU2xpZGVyIHJlbGVhc2VdOwotICAg
IFtfcGxheUJ1dHRvbiByZWxlYXNlXTsKLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKHZv
aWQpc2V0QXJlYTooTlNUcmFja2luZ0FyZWEgKilhcmVhCi17Ci0gICAgaWYgKGFyZWEgPT0gX2Fy
ZWEpCi0gICAgICAgIHJldHVybjsKLSAgICBbX2FyZWEgcmVsZWFzZV07Ci0gICAgX2FyZWEgPSBb
YXJlYSByZXRhaW5dOwotfQotCi0tICh2b2lkKWtleURvd246KE5TRXZlbnQgKilldmVudAotewot
ICAgIE5TU3RyaW5nICpjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMgPSBbZXZlbnQgY2hhcmFj
dGVyc0lnbm9yaW5nTW9kaWZpZXJzXTsKLSAgICBpZiAoW2NoYXJhY3RlcnNJZ25vcmluZ01vZGlm
aWVycyBsZW5ndGhdID09IDEpIHsKLSAgICAgICAgc3dpdGNoIChbY2hhcmFjdGVyc0lnbm9yaW5n
TW9kaWZpZXJzIGNoYXJhY3RlckF0SW5kZXg6MF0pIHsKLSAgICAgICAgY2FzZSAnICc6Ci0gICAg
ICAgICAgICBbc2VsZiB0b2dnbGVQbGF5aW5nOm5pbF07Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIGNhc2UgTlNVcEFycm93RnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICBpZiAoW2V2ZW50
IG1vZGlmaWVyRmxhZ3NdICYgTlNFdmVudE1vZGlmaWVyRmxhZ09wdGlvbikKLSAgICAgICAgICAg
ICAgICBbc2VsZiBzZXRWb2x1bWU6W3NlbGYgbWF4Vm9sdW1lXV07Ci0gICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgW3NlbGYgaW5jcmVtZW50Vm9sdW1lXTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgY2FzZSBOU0Rvd25BcnJvd0Z1bmN0aW9uS2V5OgotICAgICAgICAgICAg
aWYgKFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TRXZlbnRNb2RpZmllckZsYWdPcHRpb24pCi0g
ICAgICAgICAgICAgICAgW3NlbGYgc2V0Vm9sdW1lOjBdOwotICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgIFtzZWxmIGRlY3JlbWVudFZvbHVtZV07Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIFtzdXBlciBrZXlEb3duOmV2ZW50XTsKLX0KLQotLSAoaWQgPFdlYlZpZGVvRnVsbHNj
cmVlbkhVRFdpbmRvd0NvbnRyb2xsZXJEZWxlZ2F0ZT4pZGVsZWdhdGUKLXsKLSAgICByZXR1cm4g
X2RlbGVnYXRlOwotfQotCi0tICh2b2lkKXNldERlbGVnYXRlOihpZCA8V2ViVmlkZW9GdWxsc2Ny
ZWVuSFVEV2luZG93Q29udHJvbGxlckRlbGVnYXRlPilkZWxlZ2F0ZQotewotICAgIF9kZWxlZ2F0
ZSA9IGRlbGVnYXRlOwotfQotCi0tICh2b2lkKXNjaGVkdWxlVGltZVVwZGF0ZQotewotICAgIFtO
U09iamVjdCBjYW5jZWxQcmV2aW91c1BlcmZvcm1SZXF1ZXN0c1dpdGhUYXJnZXQ6c2VsZiBzZWxl
Y3RvcjpAc2VsZWN0b3IodW5zY2hlZHVsZVRpbWVVcGRhdGUpIG9iamVjdDpzZWxmXTsKLQotICAg
IC8vIEZpcnN0LCB1cGRhdGUgcmlnaHQgYXdheSwgdGhlbiBzY2hlZHVsZSBmdXR1cmUgdXBkYXRl
Ci0gICAgW3NlbGYgdXBkYXRlVGltZV07Ci0gICAgW3NlbGYgdXBkYXRlUGxheUJ1dHRvbl07Ci0K
LSAgICBbX3RpbWVsaW5lVXBkYXRlVGltZXIgaW52YWxpZGF0ZV07Ci0gICAgW190aW1lbGluZVVw
ZGF0ZVRpbWVyIHJlbGVhc2VdOwotCi0gICAgLy8gTm90ZSB0aGF0IHRoaXMgY3JlYXRlcyBhIHJl
dGFpbiBjeWNsZSBiZXR3ZWVuIHRoZSB3aW5kb3cgYW5kIHVzLgotICAgIF90aW1lbGluZVVwZGF0
ZVRpbWVyID0gW1tOU1RpbWVyIHRpbWVyV2l0aFRpbWVJbnRlcnZhbDowLjI1IHRhcmdldDpzZWxm
IHNlbGVjdG9yOkBzZWxlY3Rvcih1cGRhdGVUaW1lKSB1c2VySW5mbzpuaWwgcmVwZWF0czpZRVNd
IHJldGFpbl07Ci0gICAgW1tOU1J1bkxvb3AgY3VycmVudFJ1bkxvb3BdIGFkZFRpbWVyOl90aW1l
bGluZVVwZGF0ZVRpbWVyIGZvck1vZGU6TlNSdW5Mb29wQ29tbW9uTW9kZXNdOwotfQotCi0tICh2
b2lkKXVuc2NoZWR1bGVUaW1lVXBkYXRlCi17Ci0gICAgW05TT2JqZWN0IGNhbmNlbFByZXZpb3Vz
UGVyZm9ybVJlcXVlc3RzV2l0aFRhcmdldDpzZWxmIHNlbGVjdG9yOkBzZWxlY3Rvcih1bnNjaGVk
dWxlVGltZVVwZGF0ZSkgb2JqZWN0Om5pbF07Ci0KLSAgICBbX3RpbWVsaW5lVXBkYXRlVGltZXIg
aW52YWxpZGF0ZV07Ci0gICAgW190aW1lbGluZVVwZGF0ZVRpbWVyIHJlbGVhc2VdOwotICAgIF90
aW1lbGluZVVwZGF0ZVRpbWVyID0gbmlsOwotfQotCi0tICh2b2lkKWZhZGVXaW5kb3dJbgotewot
ICAgIE5TV2luZG93ICp3aW5kb3cgPSBbc2VsZiB3aW5kb3ddOwotICAgIGlmICghW3dpbmRvdyBp
c1Zpc2libGVdKQotICAgICAgICBbd2luZG93IHNldEFscGhhVmFsdWU6MF07Ci0KLSAgICBbd2lu
ZG93IG1ha2VLZXlBbmRPcmRlckZyb250OnNlbGZdOwotICAgIFtbd2luZG93IGFuaW1hdG9yXSBz
ZXRBbHBoYVZhbHVlOjFdOwotICAgIFtzZWxmIHNjaGVkdWxlVGltZVVwZGF0ZV07Ci0KLSAgICBb
TlNPYmplY3QgY2FuY2VsUHJldmlvdXNQZXJmb3JtUmVxdWVzdHNXaXRoVGFyZ2V0OnNlbGYgc2Vs
ZWN0b3I6QHNlbGVjdG9yKGZhZGVXaW5kb3dPdXQpIG9iamVjdDpuaWxdOwotICAgIGlmICghX21v
dXNlSXNJbkhVRCAmJiBbc2VsZiBwbGF5aW5nXSkgLy8gRG9uJ3QgZmFkZSBvdXQgd2hlbiBwYXVz
ZWQuCi0gICAgICAgIFtzZWxmIHBlcmZvcm1TZWxlY3RvcjpAc2VsZWN0b3IoZmFkZVdpbmRvd091
dCkgd2l0aE9iamVjdDpuaWwgYWZ0ZXJEZWxheTpIVURXaW5kb3dGYWRlT3V0RGVsYXldOwotfQot
Ci0tICh2b2lkKWZhZGVXaW5kb3dPdXQKLXsKLSAgICBbTlNDdXJzb3Igc2V0SGlkZGVuVW50aWxN
b3VzZU1vdmVzOllFU107Ci0gICAgW1tbc2VsZiB3aW5kb3ddIGFuaW1hdG9yXSBzZXRBbHBoYVZh
bHVlOjBdOwotICAgIFtzZWxmIHBlcmZvcm1TZWxlY3RvcjpAc2VsZWN0b3IodW5zY2hlZHVsZVRp
bWVVcGRhdGUpIHdpdGhPYmplY3Q6bmlsIGFmdGVyRGVsYXk6MV07Ci19Ci0KLS0gKHZvaWQpY2xv
c2VXaW5kb3cKLXsKLSAgICBbTlNPYmplY3QgY2FuY2VsUHJldmlvdXNQZXJmb3JtUmVxdWVzdHNX
aXRoVGFyZ2V0OnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGZhZGVXaW5kb3dPdXQpIG9iamVjdDpu
aWxdOwotICAgIFtzZWxmIHVuc2NoZWR1bGVUaW1lVXBkYXRlXTsKLSAgICBOU1dpbmRvdyAqd2lu
ZG93ID0gW3NlbGYgd2luZG93XTsKLSAgICBbW3dpbmRvdyBjb250ZW50Vmlld10gcmVtb3ZlVHJh
Y2tpbmdBcmVhOl9hcmVhXTsKLSAgICBbc2VsZiBzZXRBcmVhOm5pbF07Ci0gICAgW3dpbmRvdyBj
bG9zZV07Ci0gICAgW3dpbmRvdyBzZXREZWxlZ2F0ZTpuaWxdOwotICAgIFtzZWxmIHNldFdpbmRv
dzpuaWxdOwotfQotCi1zdGF0aWMgTlNDb250cm9sICpjcmVhdGVNZWRpYVVJQ29udHJvbChNZWRp
YVVJQ29udHJvbCBjb250cm9sVHlwZSkKLXsKLSAgICBzd2l0Y2ggKGNvbnRyb2xUeXBlKSB7Ci0g
ICAgY2FzZSBNZWRpYVVJQ29udHJvbDo6VGltZWxpbmU6IHsKLSAgICAgICAgTlNTbGlkZXIgKnNs
aWRlciA9IFtbUVRIVURUaW1lbGluZSBhbGxvY10gaW5pdF07Ci0gICAgICAgIFtbc2xpZGVyIGNl
bGxdIHNldENvbnRpbnVvdXM6WUVTXTsKLSAgICAgICAgcmV0dXJuIHNsaWRlcjsKLSAgICB9Ci0g
ICAgY2FzZSBNZWRpYVVJQ29udHJvbDo6U2xpZGVyOiB7Ci0gICAgICAgIE5TQnV0dG9uICpzbGlk
ZXIgPSBbW1FUSFVEU2xpZGVyIGFsbG9jXSBpbml0XTsKLSAgICAgICAgW1tzbGlkZXIgY2VsbF0g
c2V0Q29udGludW91czpZRVNdOwotICAgICAgICByZXR1cm4gc2xpZGVyOwotICAgIH0KLSAgICBj
YXNlIE1lZGlhVUlDb250cm9sOjpQbGF5UGF1c2VCdXR0b246IHsKLSAgICAgICAgTlNCdXR0b24g
KmJ1dHRvbiA9IFtbUVRIVURCdXR0b24gYWxsb2NdIGluaXRdOwotICAgICAgICBbYnV0dG9uIHNl
dEltYWdlOltOU0ltYWdlIGltYWdlTmFtZWQ6QCJOU1BsYXlUZW1wbGF0ZSJdXTsKLSAgICAgICAg
W2J1dHRvbiBzZXRBbHRlcm5hdGVJbWFnZTpbTlNJbWFnZSBpbWFnZU5hbWVkOkAiTlNQYXVzZVFU
UHJpdmF0ZVRlbXBsYXRlIl1dOwotCi0gICAgICAgIFtbYnV0dG9uIGNlbGxdIHNldFNob3dzU3Rh
dGVCeTpOU0NvbnRlbnRzQ2VsbE1hc2tdOwotICAgICAgICBbYnV0dG9uIHNldEJvcmRlcmVkOk5P
XTsKLSAgICAgICAgcmV0dXJuIGJ1dHRvbjsKLSAgICB9Ci0gICAgY2FzZSBNZWRpYVVJQ29udHJv
bDo6RXhpdEZ1bGxzY3JlZW5CdXR0b246IHsKLSAgICAgICAgTlNCdXR0b24gKmJ1dHRvbiA9IFtb
UVRIVURCdXR0b24gYWxsb2NdIGluaXRdOwotICAgICAgICBbYnV0dG9uIHNldEltYWdlOltOU0lt
YWdlIGltYWdlTmFtZWQ6QCJOU0V4aXRGdWxsU2NyZWVuVGVtcGxhdGUiXV07Ci0gICAgICAgIFti
dXR0b24gc2V0Qm9yZGVyZWQ6Tk9dOwotICAgICAgICByZXR1cm4gYnV0dG9uOwotICAgIH0KLSAg
ICBjYXNlIE1lZGlhVUlDb250cm9sOjpSZXdpbmRCdXR0b246IHsKLSAgICAgICAgTlNCdXR0b24g
KmJ1dHRvbiA9IFtbUVRIVURCdXR0b24gYWxsb2NdIGluaXRdOwotICAgICAgICBbYnV0dG9uIHNl
dEltYWdlOltOU0ltYWdlIGltYWdlTmFtZWQ6QCJOU1Jld2luZFRlbXBsYXRlIl1dOwotICAgICAg
ICBbYnV0dG9uIHNldEJvcmRlcmVkOk5PXTsKLSAgICAgICAgcmV0dXJuIGJ1dHRvbjsKLSAgICB9
Ci0gICAgY2FzZSBNZWRpYVVJQ29udHJvbDo6RmFzdEZvcndhcmRCdXR0b246IHsKLSAgICAgICAg
TlNCdXR0b24gKmJ1dHRvbiA9IFtbUVRIVURCdXR0b24gYWxsb2NdIGluaXRdOwotICAgICAgICBb
YnV0dG9uIHNldEltYWdlOltOU0ltYWdlIGltYWdlTmFtZWQ6QCJOU0Zhc3RGb3J3YXJkVGVtcGxh
dGUiXV07Ci0gICAgICAgIFtidXR0b24gc2V0Qm9yZGVyZWQ6Tk9dOwotICAgICAgICByZXR1cm4g
YnV0dG9uOwotICAgIH0KLSAgICBjYXNlIE1lZGlhVUlDb250cm9sOjpWb2x1bWVVcEJ1dHRvbjog
ewotICAgICAgICBOU0J1dHRvbiAqYnV0dG9uID0gW1tRVEhVREJ1dHRvbiBhbGxvY10gaW5pdF07
Ci0gICAgICAgIFtidXR0b24gc2V0SW1hZ2U6W05TSW1hZ2UgaW1hZ2VOYW1lZDpAIk5TQXVkaW9P
dXRwdXRWb2x1bWVIaWdoVGVtcGxhdGUiXV07Ci0gICAgICAgIFtidXR0b24gc2V0Qm9yZGVyZWQ6
Tk9dOwotICAgICAgICByZXR1cm4gYnV0dG9uOwotICAgIH0KLSAgICBjYXNlIE1lZGlhVUlDb250
cm9sOjpWb2x1bWVEb3duQnV0dG9uOiB7Ci0gICAgICAgIE5TQnV0dG9uICpidXR0b24gPSBbW1FU
SFVEQnV0dG9uIGFsbG9jXSBpbml0XTsKLSAgICAgICAgW2J1dHRvbiBzZXRJbWFnZTpbTlNJbWFn
ZSBpbWFnZU5hbWVkOkAiTlNBdWRpb091dHB1dFZvbHVtZUxvd1RlbXBsYXRlIl1dOwotICAgICAg
ICBbYnV0dG9uIHNldEJvcmRlcmVkOk5PXTsKLSAgICAgICAgcmV0dXJuIGJ1dHRvbjsKLSAgICB9
Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIG5pbDsKLX0K
LQotc3RhdGljIE5TQ29udHJvbCAqY3JlYXRlQ29udHJvbFdpdGhNZWRpYVVJQ29udHJvbFR5cGUo
TWVkaWFVSUNvbnRyb2wgY29udHJvbFR5cGUsIE5TUmVjdCBmcmFtZSkKLXsKLSAgICBOU0NvbnRy
b2wgKmNvbnRyb2wgPSBjcmVhdGVNZWRpYVVJQ29udHJvbChjb250cm9sVHlwZSk7Ci0gICAgY29u
dHJvbC5mcmFtZSA9IGZyYW1lOwotICAgIHJldHVybiBjb250cm9sOwotfQotCi1zdGF0aWMgTlNU
ZXh0RmllbGQgKmNyZWF0ZVRpbWVUZXh0RmllbGQoTlNSZWN0IGZyYW1lKQotewotICAgIE5TVGV4
dEZpZWxkICp0ZXh0RmllbGQgPSBbW05TVGV4dEZpZWxkIGFsbG9jXSBpbml0V2l0aEZyYW1lOmZy
YW1lXTsKLSAgICBbdGV4dEZpZWxkIHNldFRleHRDb2xvcjpbTlNDb2xvciB3aGl0ZUNvbG9yXV07
Ci0gICAgW3RleHRGaWVsZCBzZXRCb3JkZXJlZDpOT107Ci0gICAgW3RleHRGaWVsZCBzZXRGb250
OltOU0ZvbnQgYm9sZFN5c3RlbUZvbnRPZlNpemU6MTBdXTsKLSAgICBbdGV4dEZpZWxkIHNldERy
YXdzQmFja2dyb3VuZDpOT107Ci0gICAgW3RleHRGaWVsZCBzZXRCZXplbGVkOk5PXTsKLSAgICBb
dGV4dEZpZWxkIHNldEVkaXRhYmxlOk5PXTsKLSAgICBbdGV4dEZpZWxkIHNldFNlbGVjdGFibGU6
Tk9dOwotICAgIHJldHVybiB0ZXh0RmllbGQ7Ci19Ci0KLXN0YXRpYyBOU1ZpZXcgKmNyZWF0ZU1l
ZGlhVUlCYWNrZ3JvdW5kVmlldygpCi17Ci0gICAgaWQgdmlldyA9IFtbUVRIVURCYWNrZ3JvdW5k
VmlldyBhbGxvY10gaW5pdF07Ci0KLSAgICBjb25zdCBDR0Zsb2F0IHF1aWNrVGltZVBsYXllckhV
REhlaWdodCA9IDU5OwotICAgIGNvbnN0IENHRmxvYXQgcXVpY2tUaW1lUGxheWVySFVEQ29udGVu
dEJvcmRlclBvc2l0aW9uID0gMzg7Ci0KLSAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19CRUdJTgotICAgIFt2aWV3IHNldENvbnRlbnRCb3JkZXJQb3NpdGlvbjpxdWlja1RpbWVQbGF5
ZXJIVURDb250ZW50Qm9yZGVyUG9zaXRpb24gLyBxdWlja1RpbWVQbGF5ZXJIVURIZWlnaHRdOwot
ICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAotCi0gICAgcmV0dXJuIHZpZXc7
Ci19Ci0KLS0gKHZvaWQpd2luZG93RGlkTG9hZAotewotICAgIHN0YXRpYyBjb25zdCBDR0Zsb2F0
IGhvcml6b250YWxNYXJnaW4gPSAxMDsKLSAgICBzdGF0aWMgY29uc3QgQ0dGbG9hdCBwbGF5QnV0
dG9uV2lkdGggPSA0MTsKLSAgICBzdGF0aWMgY29uc3QgQ0dGbG9hdCBwbGF5QnV0dG9uSGVpZ2h0
ID0gMzU7Ci0gICAgc3RhdGljIGNvbnN0IENHRmxvYXQgcGxheUJ1dHRvblRvcE1hcmdpbiA9IDQ7
Ci0gICAgc3RhdGljIGNvbnN0IENHRmxvYXQgdm9sdW1lU2xpZGVyV2lkdGggPSA1MDsKLSAgICBz
dGF0aWMgY29uc3QgQ0dGbG9hdCB2b2x1bWVTbGlkZXJIZWlnaHQgPSAxMzsKLSAgICBzdGF0aWMg
Y29uc3QgQ0dGbG9hdCB2b2x1bWVCdXR0b25XaWR0aCA9IDE4OwotICAgIHN0YXRpYyBjb25zdCBD
R0Zsb2F0IHZvbHVtZUJ1dHRvbkhlaWdodCA9IDE2OwotICAgIHN0YXRpYyBjb25zdCBDR0Zsb2F0
IHZvbHVtZVVwQnV0dG9uTGVmdE1hcmdpbiA9IDQ7Ci0gICAgc3RhdGljIGNvbnN0IENHRmxvYXQg
dm9sdW1lQ29udHJvbHNUb3BNYXJnaW4gPSAxMzsKLSAgICBzdGF0aWMgY29uc3QgQ0dGbG9hdCBl
eGl0RnVsbHNjcmVlbkJ1dHRvbldpZHRoID0gMjU7Ci0gICAgc3RhdGljIGNvbnN0IENHRmxvYXQg
ZXhpdEZ1bGxzY3JlZW5CdXR0b25IZWlnaHQgPSAyMTsKLSAgICBzdGF0aWMgY29uc3QgQ0dGbG9h
dCBleGl0RnVsbHNjcmVlbkJ1dHRvblRvcE1hcmdpbiA9IDExOwotICAgIHN0YXRpYyBjb25zdCBD
R0Zsb2F0IHRpbWVsaW5lV2lkdGggPSAzMTU7Ci0gICAgc3RhdGljIGNvbnN0IENHRmxvYXQgdGlt
ZWxpbmVIZWlnaHQgPSAxNDsKLSAgICBzdGF0aWMgY29uc3QgQ0dGbG9hdCB0aW1lbGluZUJvdHRv
bU1hcmdpbiA9IDc7Ci0gICAgc3RhdGljIGNvbnN0IENHRmxvYXQgdGltZVRleHRGaWVsZFdpZHRo
ID0gNTQ7Ci0gICAgc3RhdGljIGNvbnN0IENHRmxvYXQgdGltZVRleHRGaWVsZEhlaWdodCA9IDEz
OwotICAgIHN0YXRpYyBjb25zdCBDR0Zsb2F0IHRpbWVUZXh0RmllbGRIb3Jpem9udGFsTWFyZ2lu
ID0gNzsKLQotICAgIGlmICghUVRLaXRMaWJyYXJ5KCkKLSAgICAgICAgfHwgIWdldFFUSFVEQmFj
a2dyb3VuZFZpZXdDbGFzcygpCi0gICAgICAgIHx8ICFnZXRRVEhVREJ1dHRvbkNsYXNzKCkKLSAg
ICAgICAgfHwgIWdldFFUSFVEU2xpZGVyQ2xhc3MoKQotICAgICAgICB8fCAhZ2V0UVRIVURUaW1l
bGluZUNsYXNzKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIE5TV2luZG93ICp3aW5kb3cgPSBb
c2VsZiB3aW5kb3ddOwotICAgIEFTU0VSVCh3aW5kb3cpOwotCi0gICAgTlNWaWV3ICpiYWNrZ3Jv
dW5kID0gY3JlYXRlTWVkaWFVSUJhY2tncm91bmRWaWV3KCk7Ci0KLSAgICBbd2luZG93IHNldENv
bnRlbnRWaWV3OmJhY2tncm91bmRdOwotICAgIF9hcmVhID0gW1tOU1RyYWNraW5nQXJlYSBhbGxv
Y10gaW5pdFdpdGhSZWN0OltiYWNrZ3JvdW5kIGJvdW5kc10gb3B0aW9uczpOU1RyYWNraW5nTW91
c2VFbnRlcmVkQW5kRXhpdGVkIHwgTlNUcmFja2luZ0FjdGl2ZUFsd2F5cyBvd25lcjpzZWxmIHVz
ZXJJbmZvOm5pbF07Ci0gICAgW2JhY2tncm91bmQgYWRkVHJhY2tpbmdBcmVhOl9hcmVhXTsKLSAg
ICBbYmFja2dyb3VuZCByZWxlYXNlXTsgICAgCi0KLSAgICBOU1ZpZXcgKmNvbnRlbnRWaWV3ID0g
W3dpbmRvdyBjb250ZW50Vmlld107Ci0KLSAgICBDR0Zsb2F0IGNlbnRlciA9IENHRmxvb3IoKHdp
bmRvd1dpZHRoIC0gcGxheUJ1dHRvbldpZHRoKSAvIDIpOwotICAgIF9wbGF5QnV0dG9uID0gKE5T
QnV0dG9uICopY3JlYXRlQ29udHJvbFdpdGhNZWRpYVVJQ29udHJvbFR5cGUoTWVkaWFVSUNvbnRy
b2w6OlBsYXlQYXVzZUJ1dHRvbiwgTlNNYWtlUmVjdChjZW50ZXIsIHdpbmRvd0hlaWdodCAtIHBs
YXlCdXR0b25Ub3BNYXJnaW4gLSBwbGF5QnV0dG9uSGVpZ2h0LCBwbGF5QnV0dG9uV2lkdGgsIHBs
YXlCdXR0b25IZWlnaHQpKTsKLSAgICBBU1NFUlQoW19wbGF5QnV0dG9uIGlzS2luZE9mQ2xhc3M6
W05TQnV0dG9uIGNsYXNzXV0pOwotICAgIFtfcGxheUJ1dHRvbiBzZXRUYXJnZXQ6c2VsZl07Ci0g
ICAgW19wbGF5QnV0dG9uIHNldEFjdGlvbjpAc2VsZWN0b3IodG9nZ2xlUGxheWluZzopXTsKLSAg
ICBbY29udGVudFZpZXcgYWRkU3VidmlldzpfcGxheUJ1dHRvbl07Ci0KLSAgICBDR0Zsb2F0IGNs
b3NlVG9SaWdodCA9IHdpbmRvd1dpZHRoIC0gaG9yaXpvbnRhbE1hcmdpbiAtIGV4aXRGdWxsc2Ny
ZWVuQnV0dG9uV2lkdGg7Ci0gICAgTlNDb250cm9sICpleGl0RnVsbHNjcmVlbkJ1dHRvbiA9IGNy
ZWF0ZUNvbnRyb2xXaXRoTWVkaWFVSUNvbnRyb2xUeXBlKE1lZGlhVUlDb250cm9sOjpFeGl0RnVs
bHNjcmVlbkJ1dHRvbiwgTlNNYWtlUmVjdChjbG9zZVRvUmlnaHQsIHdpbmRvd0hlaWdodCAtIGV4
aXRGdWxsc2NyZWVuQnV0dG9uVG9wTWFyZ2luIC0gZXhpdEZ1bGxzY3JlZW5CdXR0b25IZWlnaHQs
IGV4aXRGdWxsc2NyZWVuQnV0dG9uV2lkdGgsIGV4aXRGdWxsc2NyZWVuQnV0dG9uSGVpZ2h0KSk7
Ci0gICAgW2V4aXRGdWxsc2NyZWVuQnV0dG9uIHNldEFjdGlvbjpAc2VsZWN0b3IoZXhpdEZ1bGxz
Y3JlZW46KV07Ci0gICAgW2V4aXRGdWxsc2NyZWVuQnV0dG9uIHNldFRhcmdldDpzZWxmXTsKLSAg
ICBbY29udGVudFZpZXcgYWRkU3VidmlldzpleGl0RnVsbHNjcmVlbkJ1dHRvbl07Ci0gICAgW2V4
aXRGdWxsc2NyZWVuQnV0dG9uIHJlbGVhc2VdOwotICAgIAotICAgIENHRmxvYXQgdm9sdW1lQ29u
dHJvbHNCb3R0b20gPSB3aW5kb3dIZWlnaHQgLSB2b2x1bWVDb250cm9sc1RvcE1hcmdpbiAtIHZv
bHVtZUJ1dHRvbkhlaWdodDsKLSAgICBDR0Zsb2F0IGxlZnQgPSBob3Jpem9udGFsTWFyZ2luOwot
ICAgIE5TQ29udHJvbCAqdm9sdW1lRG93bkJ1dHRvbiA9IGNyZWF0ZUNvbnRyb2xXaXRoTWVkaWFV
SUNvbnRyb2xUeXBlKE1lZGlhVUlDb250cm9sOjpWb2x1bWVEb3duQnV0dG9uLCBOU01ha2VSZWN0
KGxlZnQsIHZvbHVtZUNvbnRyb2xzQm90dG9tLCB2b2x1bWVCdXR0b25XaWR0aCwgdm9sdW1lQnV0
dG9uSGVpZ2h0KSk7Ci0gICAgW2NvbnRlbnRWaWV3IGFkZFN1YnZpZXc6dm9sdW1lRG93bkJ1dHRv
bl07Ci0gICAgW3ZvbHVtZURvd25CdXR0b24gc2V0VGFyZ2V0OnNlbGZdOwotICAgIFt2b2x1bWVE
b3duQnV0dG9uIHNldEFjdGlvbjpAc2VsZWN0b3Ioc2V0Vm9sdW1lVG9aZXJvOildOwotICAgIFt2
b2x1bWVEb3duQnV0dG9uIHJlbGVhc2VdOwotCi0gICAgbGVmdCArPSB2b2x1bWVCdXR0b25XaWR0
aDsKLSAgICBfdm9sdW1lU2xpZGVyID0gY3JlYXRlQ29udHJvbFdpdGhNZWRpYVVJQ29udHJvbFR5
cGUoTWVkaWFVSUNvbnRyb2w6OlNsaWRlciwgTlNNYWtlUmVjdChsZWZ0LCB2b2x1bWVDb250cm9s
c0JvdHRvbSArIENHRmxvb3IoKHZvbHVtZUJ1dHRvbkhlaWdodCAtIHZvbHVtZVNsaWRlckhlaWdo
dCkgLyAyKSwgdm9sdW1lU2xpZGVyV2lkdGgsIHZvbHVtZVNsaWRlckhlaWdodCkpOwotICAgIFtf
dm9sdW1lU2xpZGVyIHNldFZhbHVlOltOU051bWJlciBudW1iZXJXaXRoRG91YmxlOltzZWxmIG1h
eFZvbHVtZV1dIGZvcktleTpAIm1heFZhbHVlIl07Ci0gICAgW192b2x1bWVTbGlkZXIgc2V0VGFy
Z2V0OnNlbGZdOwotICAgIFtfdm9sdW1lU2xpZGVyIHNldEFjdGlvbjpAc2VsZWN0b3Iodm9sdW1l
Q2hhbmdlZDopXTsKLSAgICBbY29udGVudFZpZXcgYWRkU3Vidmlldzpfdm9sdW1lU2xpZGVyXTsK
LQotICAgIGxlZnQgKz0gdm9sdW1lU2xpZGVyV2lkdGggKyB2b2x1bWVVcEJ1dHRvbkxlZnRNYXJn
aW47Ci0gICAgTlNDb250cm9sICp2b2x1bWVVcEJ1dHRvbiA9IGNyZWF0ZUNvbnRyb2xXaXRoTWVk
aWFVSUNvbnRyb2xUeXBlKE1lZGlhVUlDb250cm9sOjpWb2x1bWVVcEJ1dHRvbiwgTlNNYWtlUmVj
dChsZWZ0LCB2b2x1bWVDb250cm9sc0JvdHRvbSwgdm9sdW1lQnV0dG9uV2lkdGgsIHZvbHVtZUJ1
dHRvbkhlaWdodCkpOwotICAgIFt2b2x1bWVVcEJ1dHRvbiBzZXRUYXJnZXQ6c2VsZl07Ci0gICAg
W3ZvbHVtZVVwQnV0dG9uIHNldEFjdGlvbjpAc2VsZWN0b3Ioc2V0Vm9sdW1lVG9NYXhpbXVtOild
OwotICAgIFtjb250ZW50VmlldyBhZGRTdWJ2aWV3OnZvbHVtZVVwQnV0dG9uXTsKLSAgICBbdm9s
dW1lVXBCdXR0b24gcmVsZWFzZV07Ci0KLSAgICBfdGltZWxpbmUgPSBjcmVhdGVNZWRpYVVJQ29u
dHJvbChNZWRpYVVJQ29udHJvbDo6VGltZWxpbmUpOwotCi0gICAgW190aW1lbGluZSBzZXRUYXJn
ZXQ6c2VsZl07Ci0gICAgW190aW1lbGluZSBzZXRBY3Rpb246QHNlbGVjdG9yKHRpbWVsaW5lUG9z
aXRpb25DaGFuZ2VkOildOwotICAgIFtfdGltZWxpbmUgc2V0RnJhbWU6TlNNYWtlUmVjdChDR0Zs
b29yKCh3aW5kb3dXaWR0aCAtIHRpbWVsaW5lV2lkdGgpIC8gMiksIHRpbWVsaW5lQm90dG9tTWFy
Z2luLCB0aW1lbGluZVdpZHRoLCB0aW1lbGluZUhlaWdodCldOwotICAgIFtjb250ZW50VmlldyBh
ZGRTdWJ2aWV3Ol90aW1lbGluZV07Ci0KLSAgICBfZWxhcHNlZFRpbWVUZXh0ID0gY3JlYXRlVGlt
ZVRleHRGaWVsZChOU01ha2VSZWN0KHRpbWVUZXh0RmllbGRIb3Jpem9udGFsTWFyZ2luLCB0aW1l
bGluZUJvdHRvbU1hcmdpbiwgdGltZVRleHRGaWVsZFdpZHRoLCB0aW1lVGV4dEZpZWxkSGVpZ2h0
KSk7Ci0gICAgW19lbGFwc2VkVGltZVRleHQgc2V0QWxpZ25tZW50Ok5TVGV4dEFsaWdubWVudExl
ZnRdOwotICAgIFtjb250ZW50VmlldyBhZGRTdWJ2aWV3Ol9lbGFwc2VkVGltZVRleHRdOwotCi0g
ICAgX3JlbWFpbmluZ1RpbWVUZXh0ID0gY3JlYXRlVGltZVRleHRGaWVsZChOU01ha2VSZWN0KHdp
bmRvd1dpZHRoIC0gdGltZVRleHRGaWVsZEhvcml6b250YWxNYXJnaW4gLSB0aW1lVGV4dEZpZWxk
V2lkdGgsIHRpbWVsaW5lQm90dG9tTWFyZ2luLCB0aW1lVGV4dEZpZWxkV2lkdGgsIHRpbWVUZXh0
RmllbGRIZWlnaHQpKTsKLSAgICBbX3JlbWFpbmluZ1RpbWVUZXh0IHNldEFsaWdubWVudDpOU1Rl
eHRBbGlnbm1lbnRSaWdodF07Ci0gICAgW2NvbnRlbnRWaWV3IGFkZFN1YnZpZXc6X3JlbWFpbmlu
Z1RpbWVUZXh0XTsKLQotICAgIFt3aW5kb3cgcmVjYWxjdWxhdGVLZXlWaWV3TG9vcF07Ci0gICAg
W3dpbmRvdyBzZXRJbml0aWFsRmlyc3RSZXNwb25kZXI6X3BsYXlCdXR0b25dOwotICAgIFt3aW5k
b3cgY2VudGVyXTsKLX0KLQotLSAodm9pZCl1cGRhdGVWb2x1bWUKLXsKLSAgICBbX3ZvbHVtZVNs
aWRlciBzZXRGbG9hdFZhbHVlOltzZWxmIHZvbHVtZV1dOwotfQotCi0tICh2b2lkKXVwZGF0ZVRp
bWUKLXsKLSAgICBbc2VsZiB1cGRhdGVWb2x1bWVdOwotCi0gICAgW190aW1lbGluZSBzZXRGbG9h
dFZhbHVlOltzZWxmIGN1cnJlbnRUaW1lXV07Ci0gICAgW190aW1lbGluZSBzZXRWYWx1ZTpbTlNO
dW1iZXIgbnVtYmVyV2l0aERvdWJsZTpbc2VsZiBkdXJhdGlvbl1dIGZvcktleTpAIm1heFZhbHVl
Il07Ci0KLSAgICBbX3JlbWFpbmluZ1RpbWVUZXh0IHNldFN0cmluZ1ZhbHVlOltzZWxmIHJlbWFp
bmluZ1RpbWVUZXh0XV07Ci0gICAgW19lbGFwc2VkVGltZVRleHQgc2V0U3RyaW5nVmFsdWU6W3Nl
bGYgZWxhcHNlZFRpbWVUZXh0XV07Ci19Ci0KLS0gKHZvaWQpZW5kU2NydWJiaW5nCi17Ci0gICAg
QVNTRVJUKF9pc1NjcnViYmluZyk7Ci0gICAgX2lzU2NydWJiaW5nID0gTk87Ci0gICAgaWYgKEhU
TUxWaWRlb0VsZW1lbnQqIHZpZGVvRWxlbWVudCA9IFtfZGVsZWdhdGUgdmlkZW9FbGVtZW50XSkK
LSAgICAgICAgdmlkZW9FbGVtZW50LT5lbmRTY3J1YmJpbmcoKTsKLX0KLQotLSAodm9pZCl0aW1l
bGluZVBvc2l0aW9uQ2hhbmdlZDooaWQpc2VuZGVyCi17Ci0gICAgVU5VU0VEX1BBUkFNKHNlbmRl
cik7Ci0gICAgW3NlbGYgc2V0Q3VycmVudFRpbWU6W190aW1lbGluZSBmbG9hdFZhbHVlXV07Ci0g
ICAgaWYgKCFfaXNTY3J1YmJpbmcpIHsKLSAgICAgICAgX2lzU2NydWJiaW5nID0gWUVTOwotICAg
ICAgICBpZiAoSFRNTFZpZGVvRWxlbWVudCogdmlkZW9FbGVtZW50ID0gW19kZWxlZ2F0ZSB2aWRl
b0VsZW1lbnRdKQotICAgICAgICAgICAgdmlkZW9FbGVtZW50LT5iZWdpblNjcnViYmluZygpOwot
ICAgICAgICBzdGF0aWMgTlNBcnJheSAqZW5kU2NydWJiaW5nTW9kZXMgPSBbW05TQXJyYXkgYWxs
b2NdIGluaXRXaXRoT2JqZWN0czpOU0RlZmF1bHRSdW5Mb29wTW9kZSwgTlNNb2RhbFBhbmVsUnVu
TG9vcE1vZGUsIG5pbF07Ci0gICAgICAgIC8vIFNjaGVkdWxlIC1lbmRTY3J1YmJpbmcgZm9yIHdo
ZW4gbGVhdmluZyBtb3VzZSB0cmFja2luZyBtb2RlLgotICAgICAgICBbW05TUnVuTG9vcCBjdXJy
ZW50UnVuTG9vcF0gcGVyZm9ybVNlbGVjdG9yOkBzZWxlY3RvcihlbmRTY3J1YmJpbmcpIHRhcmdl
dDpzZWxmIGFyZ3VtZW50Om5pbCBvcmRlcjowIG1vZGVzOmVuZFNjcnViYmluZ01vZGVzXTsKLSAg
ICB9Ci19Ci0KLS0gKGZsb2F0KWN1cnJlbnRUaW1lCi17Ci0gICAgcmV0dXJuIFtfZGVsZWdhdGUg
dmlkZW9FbGVtZW50XSA/IFtfZGVsZWdhdGUgdmlkZW9FbGVtZW50XS0+Y3VycmVudFRpbWUoKSA6
IDA7Ci19Ci0KLS0gKHZvaWQpc2V0Q3VycmVudFRpbWU6KGZsb2F0KWN1cnJlbnRUaW1lCi17Ci0g
ICAgaWYgKCFbX2RlbGVnYXRlIHZpZGVvRWxlbWVudF0pCi0gICAgICAgIHJldHVybjsKLSAgICBb
X2RlbGVnYXRlIHZpZGVvRWxlbWVudF0tPnNldEN1cnJlbnRUaW1lKGN1cnJlbnRUaW1lKTsKLSAg
ICBbc2VsZiB1cGRhdGVUaW1lXTsKLX0KLQotLSAoZG91YmxlKWR1cmF0aW9uCi17Ci0gICAgcmV0
dXJuIFtfZGVsZWdhdGUgdmlkZW9FbGVtZW50XSA/IFtfZGVsZWdhdGUgdmlkZW9FbGVtZW50XS0+
ZHVyYXRpb24oKSA6IDA7Ci19Ci0KLS0gKGZsb2F0KW1heFZvbHVtZQotewotICAgIC8vIFNldCB0
aGUgdm9sdW1lIHNsaWRlciByZXNvbHV0aW9uCi0gICAgcmV0dXJuIDEwMDsKLX0KLQotLSAodm9p
ZCl2b2x1bWVDaGFuZ2VkOihpZClzZW5kZXIKLXsKLSAgICBVTlVTRURfUEFSQU0oc2VuZGVyKTsK
LSAgICBbc2VsZiBzZXRWb2x1bWU6W192b2x1bWVTbGlkZXIgZmxvYXRWYWx1ZV1dOwotfQotCi0t
ICh2b2lkKXNldFZvbHVtZVRvWmVybzooaWQpc2VuZGVyCi17Ci0gICAgVU5VU0VEX1BBUkFNKHNl
bmRlcik7Ci0gICAgW3NlbGYgc2V0Vm9sdW1lOjBdOwotfQotCi0tICh2b2lkKXNldFZvbHVtZVRv
TWF4aW11bTooaWQpc2VuZGVyCi17Ci0gICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7Ci0gICAgW3Nl
bGYgc2V0Vm9sdW1lOltzZWxmIG1heFZvbHVtZV1dOwotfQotCi0tICh2b2lkKWRlY3JlbWVudFZv
bHVtZQotewotICAgIGlmICghW19kZWxlZ2F0ZSB2aWRlb0VsZW1lbnRdKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBmbG9hdCB2b2x1bWUgPSBbc2VsZiB2b2x1bWVdIC0gMTA7Ci0gICAgW3NlbGYg
c2V0Vm9sdW1lOnN0ZDo6bWF4KHZvbHVtZSwgMC4wZildOwotfQotCi0tICh2b2lkKWluY3JlbWVu
dFZvbHVtZQotewotICAgIGlmICghW19kZWxlZ2F0ZSB2aWRlb0VsZW1lbnRdKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBmbG9hdCB2b2x1bWUgPSBbc2VsZiB2b2x1bWVdICsgMTA7Ci0gICAgW3Nl
bGYgc2V0Vm9sdW1lOnN0ZDo6bWluKHZvbHVtZSwgW3NlbGYgbWF4Vm9sdW1lXSldOwotfQotCi0t
IChmbG9hdCl2b2x1bWUKLXsKLSAgICByZXR1cm4gW19kZWxlZ2F0ZSB2aWRlb0VsZW1lbnRdID8g
W19kZWxlZ2F0ZSB2aWRlb0VsZW1lbnRdLT52b2x1bWUoKSAqIFtzZWxmIG1heFZvbHVtZV0gOiAw
OwotfQotCi0tICh2b2lkKXNldFZvbHVtZTooZmxvYXQpdm9sdW1lCi17Ci0gICAgaWYgKCFbX2Rl
bGVnYXRlIHZpZGVvRWxlbWVudF0pCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAoW19kZWxlZ2F0
ZSB2aWRlb0VsZW1lbnRdLT5tdXRlZCgpKQotICAgICAgICBbX2RlbGVnYXRlIHZpZGVvRWxlbWVu
dF0tPnNldE11dGVkKGZhbHNlKTsKLSAgICBbX2RlbGVnYXRlIHZpZGVvRWxlbWVudF0tPnNldFZv
bHVtZSh2b2x1bWUgLyBbc2VsZiBtYXhWb2x1bWVdKTsKLSAgICBbc2VsZiB1cGRhdGVWb2x1bWVd
OwotfQotCi0tICh2b2lkKXVwZGF0ZVBsYXlCdXR0b24KLXsKLSAgICBbX3BsYXlCdXR0b24gc2V0
SW50VmFsdWU6W3NlbGYgcGxheWluZ11dOwotfQotCi0tICh2b2lkKXVwZGF0ZVJhdGUKLXsKLSAg
ICBCT09MIHBsYXlpbmcgPSBbc2VsZiBwbGF5aW5nXTsKLQotICAgIC8vIEtlZXAgdGhlIEhVRCB2
aXNpYmxlIHdoZW4gcGF1c2VkLgotICAgIGlmICghcGxheWluZykKLSAgICAgICAgW3NlbGYgZmFk
ZVdpbmRvd0luXTsKLSAgICBlbHNlIGlmICghX21vdXNlSXNJbkhVRCkgewotICAgICAgICBbTlNP
YmplY3QgY2FuY2VsUHJldmlvdXNQZXJmb3JtUmVxdWVzdHNXaXRoVGFyZ2V0OnNlbGYgc2VsZWN0
b3I6QHNlbGVjdG9yKGZhZGVXaW5kb3dPdXQpIG9iamVjdDpuaWxdOwotICAgICAgICBbc2VsZiBw
ZXJmb3JtU2VsZWN0b3I6QHNlbGVjdG9yKGZhZGVXaW5kb3dPdXQpIHdpdGhPYmplY3Q6bmlsIGFm
dGVyRGVsYXk6SFVEV2luZG93RmFkZU91dERlbGF5XTsKLSAgICB9Ci0gICAgW3NlbGYgdXBkYXRl
UGxheUJ1dHRvbl07Ci19Ci0KLS0gKHZvaWQpdG9nZ2xlUGxheWluZzooaWQpc2VuZGVyCi17Ci0g
ICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7Ci0gICAgW3NlbGYgc2V0UGxheWluZzohW3NlbGYgcGxh
eWluZ11dOwotfQotCi0tIChCT09MKXBsYXlpbmcKLXsKLSAgICBIVE1MVmlkZW9FbGVtZW50KiB2
aWRlb0VsZW1lbnQgPSBbX2RlbGVnYXRlIHZpZGVvRWxlbWVudF07Ci0gICAgaWYgKCF2aWRlb0Vs
ZW1lbnQpCi0gICAgICAgIHJldHVybiBOTzsKLQotICAgIHJldHVybiAhdmlkZW9FbGVtZW50LT5j
YW5QbGF5KCk7Ci19Ci0KLS0gKHZvaWQpc2V0UGxheWluZzooQk9PTClwbGF5aW5nCi17Ci0gICAg
SFRNTFZpZGVvRWxlbWVudCogdmlkZW9FbGVtZW50ID0gW19kZWxlZ2F0ZSB2aWRlb0VsZW1lbnRd
OwotCi0gICAgaWYgKCF2aWRlb0VsZW1lbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChw
bGF5aW5nKQotICAgICAgICB2aWRlb0VsZW1lbnQtPnBsYXkoKTsKLSAgICBlbHNlCi0gICAgICAg
IHZpZGVvRWxlbWVudC0+cGF1c2UoKTsKLX0KLQotc3RhdGljIE5TU3RyaW5nICp0aW1lVG9TdHJp
bmcoZG91YmxlIHRpbWUpCi17Ci0gICAgQVNTRVJUX0FSRyh0aW1lLCB0aW1lID49IDApOwotCi0g
ICAgaWYgKCFzdGQ6OmlzZmluaXRlKHRpbWUpKQotICAgICAgICB0aW1lID0gMDsKLQotICAgIGlu
dCBzZWNvbmRzID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdChzdGQ6OmFicyh0aW1lKSk7Ci0gICAg
aW50IGhvdXJzID0gc2Vjb25kcyAvICg2MCAqIDYwKTsKLSAgICBpbnQgbWludXRlcyA9IChzZWNv
bmRzIC8gNjApICUgNjA7Ci0gICAgc2Vjb25kcyAlPSA2MDsKLQotICAgIGlmIChob3VycykKLSAg
ICAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJWQ6JTAyZDolMDJkIiwg
aG91cnMsIG1pbnV0ZXMsIHNlY29uZHNdOwotCi0gICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdX
aXRoRm9ybWF0OkAiJTAyZDolMDJkIiwgbWludXRlcywgc2Vjb25kc107ICAgIAotfQotCi0tIChO
U1N0cmluZyAqKXJlbWFpbmluZ1RpbWVUZXh0Ci17Ci0gICAgSFRNTFZpZGVvRWxlbWVudCogdmlk
ZW9FbGVtZW50ID0gW19kZWxlZ2F0ZSB2aWRlb0VsZW1lbnRdOwotICAgIGlmICghdmlkZW9FbGVt
ZW50KQotICAgICAgICByZXR1cm4gQCIiOwotCi0gICAgZG91YmxlIHJlbWFpbmluZ1RpbWUgPSAw
OwotCi0gICAgaWYgKHN0ZDo6aXNmaW5pdGUodmlkZW9FbGVtZW50LT5kdXJhdGlvbigpKSAmJiBz
dGQ6OmlzZmluaXRlKHZpZGVvRWxlbWVudC0+Y3VycmVudFRpbWUoKSkpCi0gICAgICAgIHJlbWFp
bmluZ1RpbWUgPSB2aWRlb0VsZW1lbnQtPmR1cmF0aW9uKCkgLSB2aWRlb0VsZW1lbnQtPmN1cnJl
bnRUaW1lKCk7Ci0KLSAgICByZXR1cm4gW0AiLSIgc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6dGlt
ZVRvU3RyaW5nKHJlbWFpbmluZ1RpbWUpXTsKLX0KLQotLSAoTlNTdHJpbmcgKillbGFwc2VkVGlt
ZVRleHQKLXsKLSAgICBpZiAoIVtfZGVsZWdhdGUgdmlkZW9FbGVtZW50XSkKLSAgICAgICAgcmV0
dXJuIEAiIjsKLQotICAgIHJldHVybiB0aW1lVG9TdHJpbmcoW19kZWxlZ2F0ZSB2aWRlb0VsZW1l
bnRdLT5jdXJyZW50VGltZSgpKTsKLX0KLQotLy8gTUFSSzogTlNSZXNwb25kZXIKLQotLSAodm9p
ZCltb3VzZUVudGVyZWQ6KE5TRXZlbnQgKil0aGVFdmVudAotewotICAgIFVOVVNFRF9QQVJBTSh0
aGVFdmVudCk7Ci0gICAgLy8gTWFrZSBzdXJlIHRoZSBIVUQgd29uJ3QgYmUgaGlkZGVuIGZyb20g
bm93Ci0gICAgX21vdXNlSXNJbkhVRCA9IFlFUzsKLSAgICBbc2VsZiBmYWRlV2luZG93SW5dOwot
fQotCi0tICh2b2lkKW1vdXNlRXhpdGVkOihOU0V2ZW50ICopdGhlRXZlbnQKLXsKLSAgICBVTlVT
RURfUEFSQU0odGhlRXZlbnQpOwotICAgIF9tb3VzZUlzSW5IVUQgPSBOTzsKLSAgICBbc2VsZiBm
YWRlV2luZG93SW5dOwotfQotCi0tICh2b2lkKXJld2luZDooaWQpc2VuZGVyCi17Ci0gICAgVU5V
U0VEX1BBUkFNKHNlbmRlcik7Ci0gICAgaWYgKCFbX2RlbGVnYXRlIHZpZGVvRWxlbWVudF0pCi0g
ICAgICAgIHJldHVybjsKLSAgICBbX2RlbGVnYXRlIHZpZGVvRWxlbWVudF0tPnJld2luZCgzMCk7
Ci19Ci0KLS0gKHZvaWQpZmFzdEZvcndhcmQ6KGlkKXNlbmRlcgotewotICAgIFVOVVNFRF9QQVJB
TShzZW5kZXIpOwotICAgIGlmICghW19kZWxlZ2F0ZSB2aWRlb0VsZW1lbnRdKQotICAgICAgICBy
ZXR1cm47Ci19Ci0KLS0gKHZvaWQpZXhpdEZ1bGxzY3JlZW46KGlkKXNlbmRlcgotewotICAgIFVO
VVNFRF9QQVJBTShzZW5kZXIpOwotICAgIGlmIChfaXNFbmRpbmdGdWxsc2NyZWVuKQotICAgICAg
ICByZXR1cm47Ci0gICAgX2lzRW5kaW5nRnVsbHNjcmVlbiA9IFlFUzsKLSAgICBbX2RlbGVnYXRl
IHJlcXVlc3RFeGl0RnVsbHNjcmVlbl07IAotfQotCi0vLyBNQVJLOiBOU1dpbmRvd0RlbGVnYXRl
Ci0KLS0gKHZvaWQpd2luZG93RGlkRXhwb3NlOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlv
bgotewotICAgIFVOVVNFRF9QQVJBTShub3RpZmljYXRpb24pOwotICAgIFtzZWxmIHNjaGVkdWxl
VGltZVVwZGF0ZV07Ci19Ci0KLS0gKHZvaWQpd2luZG93RGlkQ2xvc2U6KE5TTm90aWZpY2F0aW9u
ICopbm90aWZpY2F0aW9uCi17Ci0gICAgVU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7Ci0gICAg
W3NlbGYgdW5zY2hlZHVsZVRpbWVVcGRhdGVdOwotfQotCi1AZW5kCi0KLSNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390931</attachid>
            <date>2020-02-17 10:13:31 -0800</date>
            <delta_ts>2020-02-17 11:02:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207795-20200217101330.patch</filename>
            <type>text/plain</type>
            <size>79631</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2NTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTU3Yzk0NDI5ZDdhMzBj
MWRiNGUxMTVlMDA1ODVhMDRlMTdkNTZlZi4uZmFlN2M4MzgxZjg3MjY3YzliNTM4MDE4MTVmNTBk
MjU5YTJkNGZkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIwLTAyLTE0ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFN0b3AgdXNpbmcgUVRLaXQg
Zm9yIHJlbmRlcmluZyBXSzEgdmlkZW8gZnVsbHNjcmVlbiBjb250cm9scworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3Nzk1CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS80ODg5NDkxNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBEcml2ZS1ieSBmaXhlczoKKworICAgICAgICAtIERvbid0IHNldCB0aGUg
dmlkZW8gbGF5ZXIgdG8gbm90LXZpc2libGUgd2hlbiBpbiB2aWRlbyBmdWxsc2NyZWVuIG1vZGUu
CisgICAgICAgIC0gRXhwb3J0IHByZXZpb3VzbHkgdW4tZXhwb3J0ZWQgbWV0aG9kcy4KKyAgICAg
ICAgLSBNYWtlIHNvbWUgaW9zLW9ubHkgY2xhc3NlcyBhdmFpbGFibGUgb24gbWFjLgorICAgICAg
ICAtIEFkZCBhIGNvdXBsZSBwcmV2aW91c2x5IHVuaW1wbGVtZW50ZWQgcHJvcGVydGllcyB0byBX
ZWJBVlBsYXllckNvbnRyb2xsZXIgbmVlZGVkIGJ5IEFWS2l0LgorICAgICAgICAtIFdlYkNvcmVG
dWxsc2NyZWVuV2luZG93IGRvZXNuJ3QgZGVwZW5kIG9uIEZVTExTQ1JFRU5fQVBJLgorCisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
Ojp2aXNpYmlsaXR5U3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1l
bnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNldFZpZGVvRnVsbHNj
cmVlbkxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlQVZLaXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlQVZLaXQubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VB
VktpdDo6ZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9X
ZWJBVlBsYXllckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViQVZQbGF5
ZXJDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgY2FuU2Vl
a0ZyYW1lQmFja3dhcmRdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIGNhblNl
ZWtGcmFtZUZvcndhcmRdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZUZ1bGxTY3Jl
ZW5XaW5kb3cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZUZ1bGxTY3JlZW5XaW5k
b3cubW06CisKIDIwMjAtMDItMTMgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAK
ICAgICAgICAgTWVkaWFUb29sYm94IG1heSBub3QgYmUgYXZhaWxhYmxlOyBjaGVjayBiZWZvcmUg
Y2FsbGluZyBNVE92ZXJyaWRlU2hvdWxkUGxheUhEUlZpZGVvKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmlu
ZGV4IDg5MGE4NDM4ZmEwZjA2NzU3NmQ1MGE3OTRmZDJlMTBiMzYwYTU1MTMuLjFlYmU3OTZlNmE2
YWM1N2UyOGI2OGE3YTUyZjgwZTRiOTIzYmY4ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE2IEBACisyMDIwLTAyLTE0ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgor
CisgICAgICAgIFN0b3AgdXNpbmcgUVRLaXQgZm9yIHJlbmRlcmluZyBXSzEgdmlkZW8gZnVsbHNj
cmVlbiBjb250cm9scworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA3Nzk1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80ODg5NDkxNT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBBTC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhbC9zcGkvY29jb2EvQVZLaXRTUEkuaDoKKyAg
ICAgICAgKiBwYWwvc3BpL21hYy9OU1dpbmRvd1NQSS5oOgorICAgICAgICAqIHBhbC9zcGkvbWFj
L1FUS2l0U1BJLmg6IFJlbW92ZWQuCisKIDIwMjAtMDItMTIgIFJ5YW4gSGFkZGFkICA8cnlhbmhh
ZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjI1NjAx
MC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBlNjA3NDRmZjRiMjczMTBkMDJmZTAy
YjkxN2RmMDk0NTIzNGVhM2MwLi42ZWM1MTQzYzkzNjE4MzEwN2YxNTU1NDg4MmViYjM0ZTBjYTY0
ZTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzYgQEAKKzIwMjAt
MDItMTQgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcCB1
c2luZyBRVEtpdCBmb3IgcmVuZGVyaW5nIFdLMSB2aWRlbyBmdWxsc2NyZWVuIGNvbnRyb2xzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc3OTUKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ4ODk0OTE1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFN3aXRjaCB0byB1c2luZyBBVlBsYXllclZpZXcgaW5z
dGVhZCBvZiBRVEhVRCB0byByZW5kZXIgb3VyIGZ1bGxzY3JlZW4gY29udHJvbHMuCisKKyAgICAg
ICAgSW4gYWRkaXRpb24sIHN3aXRjaCB0byBhIG1vZGVybiBOU1dpbmRvdyBmdWxsc2NyZWVuIEFQ
SSwgd2l0aCBjdXN0b20sIHNtb290aCBhbmltYXRpb25zIHdoaWNoIAorICAgICAgICBtb3ZlIHRo
ZSBmdWxsc2NyZWVuIHdpbmRvdyB0byBhIHNlcGFyYXRlIHNwYWNlLiBUaGlzIHJlcXVpcmVzIHN1
YmNsYXNzaW5nIEFWUGxheWVyVmlldyBzbyB0aGF0CisgICAgICAgIGZ1bGxzY3JlZW4gdG9nZ2xp
bmcgd2lsbCBzaWduYWwgdG8gdGhlIGNvbnRyb2xsZXIsIHNvIHRoYXQgb3VyIGZ1bGxzY3JlZW4g
YnV0dG9uIGFuZCB0aGUgaW5saW5lCisgICAgICAgIHZlcnNpb24gb2Ygc2FtZSBkb24ndCBnZXQg
b3V0IG9mIHN5bmMuIEJlY2F1c2UgQVZQbGF5ZXJWaWV3IHJlcXVpcmVzIGFuIEFWUGxheWVyIGlu
IG9yZGVyIHRvCisgICAgICAgIGRpc3BsYXkgdGhlIHZpZGVvIGxheWVyLCBhbmQgd2Ugd29uJ3Qg
bmVjZXNzYXJpbHkgaGF2ZSBhbiBBVlBsYXllciBmb3IgTVNFLWJhY2tlZCB2aWRlb3MsIGluc3Rl
YWQKKyAgICAgICAgaW5zdGFsbCBhIGN1c3RvbSBvdmVybGF5IHZpZXcgaW5zaWRlIHRoZSBBVlBs
YXllclZpZXcgaW4gd2hpY2ggdG8gaG9zdCB0aGUgZnVsbHNjcmVlbiB2aWRlbyBsYXllci4KKwor
ICAgICAgICAqIFdlYlZpZXcvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5oOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbToKKyAgICAgICAgKC1b
V2ViT3ZlcmxheUxheWVyIGxheW91dFN1YmxheWVyc10pOgorICAgICAgICAoV2ViQVZQbGF5ZXJW
aWV3X2RlbGVnYXRlKToKKyAgICAgICAgKFdlYkFWUGxheWVyVmlld19zZXREZWxlZ2F0ZSk6Cisg
ICAgICAgIChXZWJBVlBsYXllclZpZXdfaXNGdWxsU2NyZWVuKToKKyAgICAgICAgKFdlYkFWUGxh
eWVyVmlld19lbnRlckZ1bGxTY3JlZW4pOgorICAgICAgICAoV2ViQVZQbGF5ZXJWaWV3X2V4aXRG
dWxsU2NyZWVuKToKKyAgICAgICAgKGFsbG9jV2ViQVZQbGF5ZXJWaWV3SW5zdGFuY2UpOgorICAg
ICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIGluaXRdKToKKyAgICAgICAgKC1b
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciBkZWFsbG9jXSk6CisgICAgICAgICgtW1dlYlZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgZnVsbHNjcmVlbldpbmRvd10pOgorICAgICAgICAoLVtX
ZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIHdpbmRvd0RpZExvYWRdKToKKyAgICAgICAgKC1b
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciBzZXRWaWRlb0VsZW1lbnQ6XSk6CisgICAgICAg
ICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgZW50ZXJGdWxsc2NyZWVuOl0pOgorICAg
ICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIGV4aXRGdWxsc2NyZWVuXSk6Cisg
ICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgYXBwbGljYXRpb25EaWRSZXNp
Z25BY3RpdmU6XSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgX3Jl
cXVlc3RFeGl0XSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgX3Jl
cXVlc3RFbnRlcl0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIGNh
bmNlbE9wZXJhdGlvbjpdKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ciBwbGF5ZXJWaWV3SXNGdWxsU2NyZWVuOl0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyIHBsYXllclZpZXdSZXF1ZXN0RW50ZXJGdWxsc2NyZWVuOl0pOgorICAgICAg
ICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIHBsYXllclZpZXdSZXF1ZXN0RXhpdEZ1
bGxzY3JlZW46XSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgY3Vz
dG9tV2luZG93c1RvRW50ZXJGdWxsU2NyZWVuRm9yV2luZG93Ol0pOgorICAgICAgICAoLVtXZWJW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIHdpbmRvdzpzdGFydEN1c3RvbUFuaW1hdGlvblRvRW50
ZXJGdWxsU2NyZWVuV2l0aER1cmF0aW9uOl0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyIGN1c3RvbVdpbmRvd3NUb0V4aXRGdWxsU2NyZWVuRm9yV2luZG93Ol0pOgor
ICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIHdpbmRvdzpzdGFydEN1c3Rv
bUFuaW1hdGlvblRvRXhpdEZ1bGxTY3JlZW5XaXRoRHVyYXRpb246XSk6CisgICAgICAgICgtW1dl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgd2luZG93RGlkRW50ZXJGdWxsU2NyZWVuOl0pOgor
ICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIHdpbmRvd1dpbGxFeGl0RnVs
bFNjcmVlbjpdKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciB3aW5k
b3dEaWRFeGl0RnVsbFNjcmVlbjpdKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlciBjbGVhckZhZGVBbmltYXRpb25dKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlciB3aW5kb3dEaWRFeGl0RnVsbHNjcmVlbl0pOiBEZWxldGVk
LgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIHdpbmRvd0RpZEVudGVy
RnVsbHNjcmVlbl0pOiBEZWxldGVkLgorICAgICAgICAoZnJhbWVFeHBhbmRlZFRvUmF0aW9PZkZy
YW1lKTogRGVsZXRlZC4KKyAgICAgICAgKGNyZWF0ZUJhY2tncm91bmRGdWxsc2NyZWVuV2luZG93
KTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciBzZXR1
cEZhZGVBbmltYXRpb25JZk5lZWRlZEFuZEZhZGVJbjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1b
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciBhcHBsaWNhdGlvbkRpZENoYW5nZVNjcmVlblBh
cmFtZXRlcnM6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXIgdXBkYXRlTWVudUFuZERvY2tGb3JGdWxsc2NyZWVuXSk6IERlbGV0ZWQuCisgICAgICAg
ICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgcmVxdWVzdEV4aXRGdWxsc2NyZWVuV2l0
aEFuaW1hdGlvbjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlciByZXF1ZXN0RXhpdEZ1bGxzY3JlZW5dKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2Vi
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciBmYWRlSFVESW5dKTogRGVsZXRlZC4KKyAgICAgICAg
KC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciBvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOm9m
T2JqZWN0OmNoYW5nZTpjb250ZXh0Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyIHJhdGVDaGFuZ2VkOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtX
ZWJWaWRlb0Z1bGxzY3JlZW5XaW5kb3cgaW5pdFdpdGhDb250ZW50UmVjdDpzdHlsZU1hc2s6YmFj
a2luZzpkZWZlcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuV2lu
ZG93IGRlYWxsb2NdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuV2lu
ZG93IHJlc2lnbkZpcnN0UmVzcG9uZGVyXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlZpZGVv
RnVsbHNjcmVlbldpbmRvdyBjYW5CZWNvbWVLZXlXaW5kb3ddKTogRGVsZXRlZC4KKyAgICAgICAg
KC1bV2ViVmlkZW9GdWxsc2NyZWVuV2luZG93IG1vdXNlRG93bjpdKTogRGVsZXRlZC4KKyAgICAg
ICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuV2luZG93IGNhbmNlbE9wZXJhdGlvbjpdKTogRGVsZXRl
ZC4KKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuV2luZG93IGFuaW1hdGVkUmVzaXplRGlk
RW5kXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbldpbmRvdyBhbmlt
YXRlRnJvbVJlY3Q6dG9SZWN0OndpdGhTdWJBbmltYXRpb246Y29udHJvbGxlckFjdGlvbjpdKTog
RGVsZXRlZC4KKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuV2luZG93IGFuaW1hdGlvbkRp
ZEVuZDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuV2luZG93IG1v
dXNlTW92ZWQ6XSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViVmlldy9XZWJWaWRlb0Z1bGxzY3Jl
ZW5IVURXaW5kb3dDb250cm9sbGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogV2ViVmlldy9XZWJW
aWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1tOiBSZW1vdmVkLgorCiAyMDIwLTAy
LTEzICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIHJvbGxpbmcgb3V0IHIyNTUxNTgsIDI1NTQwNSBhbmQgcjI1NTQ4NgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDM4ZDdm
YTllNWQwOWMyY2Q5ZDhjNjA4ZWJhMzhlNzA1MDRhMzA5NmEuLmQyZTBjODIwOTEzZDU0YzYwMGQ4
ZjE0YTIwYWEzZThjNDA1NDUzODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTk1LDcgKzk1LDYgQEAKIAkJMEM3Nzg1OUMxRjQ1
MTMwRjAwRjRFQkI2IC8qIE5TVmlld1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEM3Nzg1ODMxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TVmlld1NQSS5o
ICovOyB9OwogCQkwQzc3ODU5RDFGNDUxMzBGMDBGNEVCQjYgLyogTlNXaW5kb3dTUEkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBDNzc4NTg0MUY0NTEz
MEYwMEY0RUJCNiAvKiBOU1dpbmRvd1NQSS5oICovOyB9OwogCQkwQzc3ODU5RTFGNDUxMzBGMDBG
NEVCQjYgLyogUElQU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwQzc3ODU4NTFGNDUxMzBGMDBGNEVCQjYgLyogUElQU1BJLmggKi87IH07Ci0JCTBD
Nzc4NTlGMUY0NTEzMEYwMEY0RUJCNiAvKiBRVEtpdFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEM3Nzg1ODYxRjQ1MTMwRjAwRjRFQkI2IC8qIFFU
S2l0U1BJLmggKi87IH07CiAJCTBDNzc4NUEwMUY0NTEzMEYwMEY0RUJCNiAvKiBRdWlja0xvb2tN
YWNTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBD
Nzc4NTg3MUY0NTEzMEYwMEY0RUJCNiAvKiBRdWlja0xvb2tNYWNTUEkuaCAqLzsgfTsKIAkJMEM3
Nzg1QTExRjQ1MTMwRjAwRjRFQkI2IC8qIFRlbGVwaG9ueVV0aWxpdGllc1NQSS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEM3Nzg1ODgxRjQ1MTMwRjAw
RjRFQkI2IC8qIFRlbGVwaG9ueVV0aWxpdGllc1NQSS5oICovOyB9OwogCQkwQ0Y5OUNBNDFGNzM2
Mzc1MDA3RUU3OTMgLyogTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBDMDBDRkQxMUY2OENFNDYwMEFBQzI2RCAv
KiBNZWRpYVRpbWVBVkZvdW5kYXRpb24uY3BwICovOyB9OwpAQCAtMjYzLDcgKzI2Miw2IEBACiAJ
CTBDNzc4NTgzMUY0NTEzMEYwMEY0RUJCNiAvKiBOU1ZpZXdTUEkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTlNWaWV3U1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBDNzc4NTg0MUY0NTEzMEYwMEY0RUJCNiAvKiBOU1dpbmRvd1NQSS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBOU1dpbmRvd1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwQzc3ODU4NTFGNDUxMzBGMDBGNEVCQjYgLyogUElQU1BJLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBJUFNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQkwQzc3ODU4NjFGNDUxMzBGMDBGNEVCQjYgLyogUVRLaXRTUEkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUVRLaXRTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEM3Nzg1ODcxRjQ1MTMwRjAwRjRFQkI2IC8qIFF1aWNrTG9va01hY1NQSS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdWlja0xvb2tNYWNTUEkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEM3Nzg1ODgxRjQ1MTMwRjAwRjRFQkI2IC8qIFRlbGVw
aG9ueVV0aWxpdGllc1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZWxl
cGhvbnlVdGlsaXRpZXNTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMENGOTlD
QTYxRjczODQzNjAwN0VFNzkzIC8qIENvcmVNZWRpYVNvZnRMaW5rLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvcmVNZWRpYVNvZnRMaW5rLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUxMCw3ICs1MDgsNiBAQAogCQkJCTBDNzc4NTgzMUY0NTEz
MEYwMEY0RUJCNiAvKiBOU1ZpZXdTUEkuaCAqLywKIAkJCQkwQzc3ODU4NDFGNDUxMzBGMDBGNEVC
QjYgLyogTlNXaW5kb3dTUEkuaCAqLywKIAkJCQkwQzc3ODU4NTFGNDUxMzBGMDBGNEVCQjYgLyog
UElQU1BJLmggKi8sCi0JCQkJMEM3Nzg1ODYxRjQ1MTMwRjAwRjRFQkI2IC8qIFFUS2l0U1BJLmgg
Ki8sCiAJCQkJMEM3Nzg1ODcxRjQ1MTMwRjAwRjRFQkI2IC8qIFF1aWNrTG9va01hY1NQSS5oICov
LAogCQkJCUExMTc1QjQ4MUY2QUZGOEUwMEM0QjlGMCAvKiBTcGVlY2hTeW50aGVzaXNTUEkuaCAq
LywKIAkJCQkwQzc3ODU4ODFGNDUxMzBGMDBGNEVCQjYgLyogVGVsZXBob255VXRpbGl0aWVzU1BJ
LmggKi8sCkBAIC04MTMsNyArODEwLDYgQEAKIAkJCQkwQzc3ODU5RTFGNDUxMzBGMDBGNEVCQjYg
LyogUElQU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTE3NUI0RTFGNkIzMzczMDBDNEI5RjAg
LyogUG9wdXBNZW51LmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzJEQTE1NjFGM0JFQjQ5MDBEQkMz
MTcgLyogcHRocmVhZFNQSS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEM3Nzg1OUYxRjQ1MTMwRjAw
RjRFQkI2IC8qIFFUS2l0U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzJEQTE1NzFGM0JFQjQ5
MDBEQkMzMTcgLyogUXVhcnR6Q29yZVNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEM3Nzg1QTAx
RjQ1MTMwRjAwRjRFQkI2IC8qIFF1aWNrTG9va01hY1NQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDQ1MEZDQTAyMUY1RjYwMjAwNERGQTU2IC8qIFF1aWNrTG9va1NvZnRMaW5rLmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0FWS2l0
U1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9BVktpdFNQSS5oCmluZGV4
IDA5NDY5OGExYmVmMzMyYWMwMGEzOWEyMjEzYzczODcxMDQ4ZjVkN2MuLjg0ZGFjZmUxYWE2NmRk
ZmNiOTE4ZTdlZGU4NzI3ZDFmNTBlNzE2ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvc3BpL2NvY29hL0FWS2l0U1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9z
cGkvY29jb2EvQVZLaXRTUEkuaApAQCAtMjYsNiArMjYsMzIgQEAKICNpbXBvcnQgPG9iamMvcnVu
dGltZS5oPgogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CiAKKyNpZiBVU0UoQVBQTEVfSU5U
RVJOQUxfU0RLKQorI2ltcG9ydCA8QVZLaXQvQVZQbGF5ZXJDb250cm9sbGVyLmg+CisjZWxzZQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCitAaW50ZXJmYWNlIEFWUGxheWVyQ29udHJvbGxlciA6
IFVJUmVzcG9uZGVyCisjZWxzZQorQGludGVyZmFjZSBBVlBsYXllckNvbnRyb2xsZXIgOiBOU1Jl
c3BvbmRlciA8TlNVc2VySW50ZXJmYWNlVmFsaWRhdGlvbnM+CisjZW5kaWYKK0BlbmQKKworQGlu
dGVyZmFjZSBBVlBsYXllckNvbnRyb2xsZXIgKCkKK3R5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIs
IEFWUGxheWVyQ29udHJvbGxlclN0YXR1cykgeworICAgIEFWUGxheWVyQ29udHJvbGxlclN0YXR1
c1Vua25vd24gPSAwLAorICAgIEFWUGxheWVyQ29udHJvbGxlclN0YXR1c1JlYWR5VG9QbGF5ID0g
MiwKK307CisKK3R5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIEFWUGxheWVyQ29udHJvbGxlckV4
dGVybmFsUGxheWJhY2tUeXBlKSB7CisgICAgQVZQbGF5ZXJDb250cm9sbGVyRXh0ZXJuYWxQbGF5
YmFja1R5cGVOb25lID0gMCwKKyAgICBBVlBsYXllckNvbnRyb2xsZXJFeHRlcm5hbFBsYXliYWNr
VHlwZUFpclBsYXkgPSAxLAorICAgIEFWUGxheWVyQ29udHJvbGxlckV4dGVybmFsUGxheWJhY2tU
eXBlVFZPdXQgPSAyLAorfTsKKworQHByb3BlcnR5IChOU19OT05BVE9NSUNfSU9TT05MWSwgcmVh
ZG9ubHkpIEFWUGxheWVyQ29udHJvbGxlclN0YXR1cyBzdGF0dXM7CitAZW5kCisjZW5kaWYgLy8g
VVNFKEFQUExFX0lOVEVSTkFMX1NESykKKwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1w
b3J0IDxBVktpdC9BVktpdC5oPgogI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CkBA
IC0zNyw3ICs2Myw2IEBACiAjaW1wb3J0IDxBVktpdC9BVkJhY2tncm91bmRWaWV3Lmg+CiAjZW5k
aWYKIAotI2ltcG9ydCA8QVZLaXQvQVZQbGF5ZXJDb250cm9sbGVyLmg+CiBJR05PUkVfV0FSTklO
R1NfQkVHSU4oIm9iamMtcHJvcGVydHktbm8tYXR0cmlidXRlIikKICNpbXBvcnQgPEFWS2l0L0FW
UGxheWVyTGF5ZXJWaWV3Lmg+CiBJR05PUkVfV0FSTklOR1NfRU5ECkBAIC0xMTUsMjQgKzE0MCw2
IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIEFWQmFja2dyb3VuZFZpZXdUaW50RWZmZWN0
U3R5bGUpIHsKIC0gKHZvaWQpYWRkU3VidmlldzooVUlWaWV3ICopc3VidmlldyBhcHBseWluZ01h
dGVyaWFsU3R5bGU6KEFWQmFja2dyb3VuZFZpZXdNYXRlcmlhbFN0eWxlKW1hdGVyaWFsU3R5bGUg
dGludEVmZmVjdFN0eWxlOihBVkJhY2tncm91bmRWaWV3VGludEVmZmVjdFN0eWxlKXRpbnRFZmZl
Y3RTdHlsZTsKIEBlbmQKIAotQGludGVyZmFjZSBBVlBsYXllckNvbnRyb2xsZXIgOiBVSVJlc3Bv
bmRlcgotQGVuZAotCi1AaW50ZXJmYWNlIEFWUGxheWVyQ29udHJvbGxlciAoKQotdHlwZWRlZiBO
U19FTlVNKE5TSW50ZWdlciwgQVZQbGF5ZXJDb250cm9sbGVyU3RhdHVzKSB7Ci0gICAgQVZQbGF5
ZXJDb250cm9sbGVyU3RhdHVzVW5rbm93biA9IDAsCi0gICAgQVZQbGF5ZXJDb250cm9sbGVyU3Rh
dHVzUmVhZHlUb1BsYXkgPSAyLAotfTsKLQotdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgQVZQ
bGF5ZXJDb250cm9sbGVyRXh0ZXJuYWxQbGF5YmFja1R5cGUpIHsKLSAgICBBVlBsYXllckNvbnRy
b2xsZXJFeHRlcm5hbFBsYXliYWNrVHlwZU5vbmUgPSAwLAotICAgIEFWUGxheWVyQ29udHJvbGxl
ckV4dGVybmFsUGxheWJhY2tUeXBlQWlyUGxheSA9IDEsCi0gICAgQVZQbGF5ZXJDb250cm9sbGVy
RXh0ZXJuYWxQbGF5YmFja1R5cGVUVk91dCA9IDIsCi19OwotCi1AcHJvcGVydHkgKE5TX05PTkFU
T01JQ19JT1NPTkxZLCByZWFkb25seSkgQVZQbGF5ZXJDb250cm9sbGVyU3RhdHVzIHN0YXR1czsK
LUBlbmQKLQogQGNsYXNzIEFWUGxheWVyTGF5ZXI7CiAKIEBpbnRlcmZhY2UgQVZQaWN0dXJlSW5Q
aWN0dXJlUGxheWVyTGF5ZXJWaWV3IDogVUlWaWV3CkBAIC0xNzgsNiArMTg1LDI2IEBAIE5TX0FT
U1VNRV9OT05OVUxMX0VORAogI2VuZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAjZW5k
aWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAorI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBVU0Uo
QVBQTEVfSU5URVJOQUxfU0RLKQorI2ltcG9ydCA8QVZLaXQvQVZQbGF5ZXJWaWV3X1ByaXZhdGUu
aD4KKyNlbHNlCisjaW1wb3J0IDxBVktpdC9BVlBsYXllclZpZXcuaD4KKworTlNfQVNTVU1FX05P
Tk5VTExfQkVHSU4KKworQGludGVyZmFjZSBBVlBsYXllclZpZXcgKFdlYktpdEZ1bGxzY3JlZW5T
UEkpCitAcHJvcGVydHkgQVZQbGF5ZXJDb250cm9sbGVyICpwbGF5ZXJDb250cm9sbGVyOworQHBy
b3BlcnR5IChyZWFkb25seSkgQk9PTCBpc0Z1bGxTY3JlZW47CistICh2b2lkKWVudGVyRnVsbFNj
cmVlbjooaWQpc2VuZGVyOworLSAodm9pZClleGl0RnVsbFNjcmVlbjooaWQpc2VuZGVyOworQGVu
ZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKKworI2VuZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5B
TF9TREspCisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQorCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BM
QVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpZiBVU0UoQVBQTEVf
SU5URVJOQUxfU0RLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFj
L05TV2luZG93U1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMvTlNXaW5kb3dT
UEkuaAppbmRleCAwOGFmOTVhMDQ0YWQ2OTkwNDIwNjIxN2E0YzRhNzUwMDMwOWE0YTEzLi5jNTY5
NDI0YWM5ZmJkNGY0YmExZGFlMjk3NjZmMWQwYjY0MGEwZTdjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMvTlNXaW5kb3dTUEkuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL3NwaS9tYWMvTlNXaW5kb3dTUEkuaApAQCAtNDAsNyArNDAsOCBAQAogLSAoaWQp
X29sZEZpcnN0UmVzcG9uZGVyQmVmb3JlQmVjb21pbmc7CiAtIChpZClfbmV3Rmlyc3RSZXNwb25k
ZXJBZnRlclJlc2lnbmluZzsKIC0gKHZvaWQpX3NldEN1cnNvckZvck1vdXNlTG9jYXRpb246KE5T
UG9pbnQpcG9pbnQ7Ci0KKy0gKHZvaWQpZXhpdEZ1bGxTY3JlZW5Nb2RlOihpZClzZW5kZXI7Cist
ICh2b2lkKWVudGVyRnVsbFNjcmVlbk1vZGU6KGlkKXNlbmRlcjsKIEBlbmQKIAogZW51bSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMvUVRLaXRTUEkuaCBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9RVEtpdFNQSS5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwNGJiMjQ5NjI3MDg1NzI5ZjE1YmExNGI0MjhhNGU3MGYyZjZiYmM0Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvc3BpL21hYy9RVEtpdFNQSS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTUwICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgVVNFKEFQUExFX0lO
VEVSTkFMX1NESykKLQotI2ltcG9ydCA8UVRLaXQvUVRIVURCYWNrZ3JvdW5kVmlld19Qcml2YXRl
Lmg+Ci0jaW1wb3J0IDxRVEtpdC9RVEtpdF9Qcml2YXRlLmg+Ci0jaW1wb3J0IDxRVEtpdC9RVFV0
aWxpdGllc19Qcml2YXRlLmg+Ci0KLSNlbHNlCi0KLWVudW0gewotICAgIGtRVFRpbWVJc0luZGVm
aW5pdGUgPSAxIDw8IDAKLX07Ci0KLXR5cGVkZWYgc3RydWN0IHsKLSAgICBsb25nIGxvbmcgdGlt
ZVZhbHVlOwotICAgIGxvbmcgdGltZVNjYWxlOwotICAgIGxvbmcgZmxhZ3M7Ci19IFFUVGltZTsK
LQotdHlwZWRlZiBzdHJ1Y3QgewotICAgIFFUVGltZSB0aW1lOwotICAgIFFUVGltZSBkdXJhdGlv
bjsKLX0gUVRUaW1lUmFuZ2U7Ci0KLXR5cGVkZWYgZW51bSB7Ci0gICAgUVRJbmNsdWRlQ29tbW9u
VHlwZXMgPSAwLAotICAgIFFUSW5jbHVkZU9ubHlGaWdNZWRpYUZpbGVUeXBlcyA9IDEgPDwgOCwK
LX0gUVRNb3ZpZUZpbGVUeXBlT3B0aW9uczsKLQotZW51bSB7Ci0gICAgUVRNb3ZpZVR5cGVVbmtu
b3duID0gMCwKLSAgICBRVE1vdmllVHlwZUxvY2FsLAotICAgIFFUTW92aWVUeXBlRmFzdFN0YXJ0
LAotICAgIFFUTW92aWVUeXBlTGl2ZVN0cmVhbSwKLSAgICBRVE1vdmllVHlwZVN0b3JlZFN0cmVh
bQotfTsKLQotQGNsYXNzIFFUVHJhY2s7Ci0KLUBpbnRlcmZhY2UgUVRNZWRpYSA6IE5TT2JqZWN0
Ci0KLS0gKGlkKWF0dHJpYnV0ZUZvcktleTooTlNTdHJpbmcgKilhdHRyaWJ1dGVLZXk7Ci0KLUBl
bmQKLQotQGludGVyZmFjZSBRVE1vdmllIDogTlNPYmplY3QgPE5TQ29kaW5nLCBOU0NvcHlpbmc+
Ci0KLSsgKE5TQXJyYXkgKiltb3ZpZUZpbGVUeXBlczooUVRNb3ZpZUZpbGVUeXBlT3B0aW9ucyl0
eXBlczsKLQotKyAodm9pZClkaXNhYmxlQ29tcG9uZW50OihDb21wb25lbnREZXNjcmlwdGlvbilj
b21wb25lbnQ7Ci0KLS0gKGlkKWluaXRXaXRoQXR0cmlidXRlczooTlNEaWN0aW9uYXJ5ICopYXR0
cmlidXRlcyBlcnJvcjooTlNFcnJvciAqKillcnJvclB0cjsKLQotLSAodm9pZClwbGF5OwotLSAo
dm9pZClzdG9wOwotCi0tIChRVFRpbWUpZHVyYXRpb247Ci0KLS0gKFFUVGltZSljdXJyZW50VGlt
ZTsKLS0gKHZvaWQpc2V0Q3VycmVudFRpbWU6KFFUVGltZSl0aW1lOwotCi0tIChmbG9hdClyYXRl
OwotLSAodm9pZClzZXRSYXRlOihmbG9hdClyYXRlOwotCi0tIChmbG9hdCl2b2x1bWU7Ci0tICh2
b2lkKXNldFZvbHVtZTooZmxvYXQpdm9sdW1lOwotCi0tIChOU0RpY3Rpb25hcnkgKiltb3ZpZUF0
dHJpYnV0ZXM7Ci0KLS0gKGlkKWF0dHJpYnV0ZUZvcktleTooTlNTdHJpbmcgKilhdHRyaWJ1dGVL
ZXk7Ci0tICh2b2lkKXNldEF0dHJpYnV0ZTooaWQpdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWF0
dHJpYnV0ZUtleTsKLQotLSAoTlNBcnJheSAqKXRyYWNrczsKLQotLSAoTlNBcnJheSAqKWFsdGVy
bmF0ZUdyb3VwVHlwZXM7Ci0tIChOU0FycmF5ICopYWx0ZXJuYXRlc0Zvck1lZGlhVHlwZTooTlNT
dHJpbmcgKil0eXBlOwotLSAodm9pZClkZXNlbGVjdEFsdGVybmF0ZUdyb3VwVHJhY2s6KFFUVHJh
Y2sgKilhbHRlcm5hdGVUcmFjazsKLS0gKHZvaWQpc2VsZWN0QWx0ZXJuYXRlR3JvdXBUcmFjazoo
UVRUcmFjayAqKWFsdGVybmF0ZVRyYWNrOwotCi0tIChOU1VSTCAqKVVSTDsKLS0gKFVJbnQzMilt
b3ZpZVR5cGU7Ci0KLUBlbmQKLQotQGludGVyZmFjZSBRVE1vdmllTGF5ZXIgOiBDQUxheWVyCi0K
LS0gKHZvaWQpc2V0TW92aWU6KFFUTW92aWUgKiltb3ZpZTsKLS0gKFFUTW92aWUgKiltb3ZpZTsK
LQotQGVuZAotCi1AaW50ZXJmYWNlIE5TVmFsdWUgKE5TVmFsdWVRVFRpbWVSYW5nZUV4dGVuc2lv
bnMpCi0rIChOU1ZhbHVlICopdmFsdWVXaXRoUVRUaW1lUmFuZ2U6KFFUVGltZVJhbmdlKXJhbmdl
OwotLSAoUVRUaW1lUmFuZ2UpUVRUaW1lUmFuZ2VWYWx1ZTsKLUBlbmQKLQotQGludGVyZmFjZSBR
VFRyYWNrIDogTlNPYmplY3QKLQotLSAoUVRNZWRpYSAqKW1lZGlhOwotCi0tIChCT09MKWlzRW5h
YmxlZDsKLS0gKHZvaWQpc2V0RW5hYmxlZDooQk9PTCllbmFibGVkOwotCi0tIChpZClhdHRyaWJ1
dGVGb3JLZXk6KE5TU3RyaW5nICopYXR0cmlidXRlS2V5OwotCi1AZW5kCi0KLUBpbnRlcmZhY2Ug
UVRIVURCYWNrZ3JvdW5kVmlldyA6IE5TVmlldwotCi0tICh2b2lkKXNldENvbnRlbnRCb3JkZXJQ
b3NpdGlvbjooQ0dGbG9hdCljb250ZW50Qm9yZGVyUG9zaXRpb247Ci0KLUBlbmQKLQotQGludGVy
ZmFjZSBRVFV0aWxpdGllcyA6IE5TT2JqZWN0Ci0KLSsgKGlkKXF0VXRpbGl0aWVzOwotCi0tIChO
U0FycmF5ICopc2l0ZXNJbkRvd25sb2FkQ2FjaGU7Ci0tICh2b2lkKWNsZWFyRG93bmxvYWRDYWNo
ZTsKLS0gKHZvaWQpY2xlYXJEb3dubG9hZENhY2hlRm9yU2l0ZTooTlNTdHJpbmcgKilzaXRlOwot
Ci1AZW5kCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAK
aW5kZXggYTczYmMwYjRjMmZlZWIzMTNkZmU3NzVjODhkOGVhOWQwOTlhMGJmNS4uMjU0MjlkNDZi
MWFlNjliOGEwN2VhNTk0YmExMDcxZTdhYjRiYzY0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCkBAIC01Nzg5LDcgKzU3ODksNyBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6Om1lZGlhVm9sdW1lRGlkQ2hhbmdlKCkKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp2
aXNpYmlsaXR5U3RhdGVDaGFuZ2VkKCkKIHsKLSAgICBib29sIGVsZW1lbnRJc0hpZGRlbiA9IGRv
Y3VtZW50KCkuaGlkZGVuKCkgJiYgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlICE9IFZpZGVvRnVsbHNj
cmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJlOworICAgIGJvb2wgZWxlbWVudElzSGlkZGVuID0gZG9j
dW1lbnQoKS5oaWRkZW4oKSAmJiBtX3ZpZGVvRnVsbHNjcmVlbk1vZGUgPT0gVmlkZW9GdWxsc2Ny
ZWVuTW9kZU5vbmU7CiAgICAgaWYgKGVsZW1lbnRJc0hpZGRlbiA9PSBtX2VsZW1lbnRJc0hpZGRl
bikKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5o
CmluZGV4IDU1MjJmOGNlNTJhMDM5NzcwODZlYmQ2MDM5NGI2YjlhODEyZTU4NWIuLmM4OGI1NzNj
NTM4Njg5MDQxOGZjMzAzMDRlOGI5ZGIyODY0ODhkZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5oCkBAIC0xODEsNyArMTgxLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
UHJlcGFyZWRUb1JldHVyblZpZGVvTGF5ZXJUb0lubGluZShib29sKTsKICAgICB2b2lkIHdhaXRG
b3JQcmVwYXJlZEZvcklubGluZVRoZW4oV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIgPSBbXSB7IH0pOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9S
TShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCi0gICAgdm9pZCBzZXRW
aWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIgPSBbXSB7IH0pOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciosIFdURjo6RnVuY3Rpb248dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyID0gW10geyB9KTsKICNpZmRlZiBfX09CSkNfXwogICAg
IFBsYXRmb3JtTGF5ZXIqIHZpZGVvRnVsbHNjcmVlbkxheWVyKCkgY29uc3QgeyByZXR1cm4gbV92
aWRlb0Z1bGxzY3JlZW5MYXllci5nZXQoKTsgfQogI2VuZGlmCkBAIC00NDYsNyArNDQ2LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBmdWxsc2NyZWVuTW9kZUNoYW5nZWQoVmlkZW9GdWxs
c2NyZWVuTW9kZSk7CiAKICAgICB2b2lkIGVudGVyRnVsbHNjcmVlbihWaWRlb0Z1bGxzY3JlZW5N
b2RlKTsKLSAgICB2b2lkIGVudGVyRnVsbHNjcmVlbigpIG92ZXJyaWRlOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZW50ZXJGdWxsc2NyZWVuKCkgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBleGl0RnVsbHNjcmVlbigpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Vmlk
ZW9GdWxsc2NyZWVuU3RhbmRieShib29sKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1BsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQuaAppbmRleCA3
ZGVlMTUyN2VmMjM5NWY5ZTZiY2UwY2NjYmViYmRlNzRkNmRlNzRkLi4wZjlkMTIzYjcxYTBiODlm
MDM1ZWMyYzAzOTU3OThmNGMwN2I0OGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQuaApAQCAtMjYs
NyArMjYsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisj
aWYgSEFWRShBVktJVCkKIAogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJI
VE1MTWVkaWFFbGVtZW50RW51bXMuaCIKQEAgLTQxLDEwICs0MSw2IEBACiAjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgogCiBPQkpDX0NMQVNTIFdlYkFWUGxheWVyQ29udHJvbGxlcjsKLU9CSkNf
Q0xBU1MgQVZQbGF5ZXJWaWV3Q29udHJvbGxlcjsKLU9CSkNfQ0xBU1MgVUlWaWV3Q29udHJvbGxl
cjsKLU9CSkNfQ0xBU1MgVUlXaW5kb3c7Ci1PQkpDX0NMQVNTIFVJVmlldzsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgSW50UmVjdDsKQEAgLTkyLDUgKzg4LDQgQEAgcHJvdGVjdGVkOgog
CiB9CiAKLSNlbmRpZgotCisjZW5kaWYgLy8gSEFWRShBVktJVCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktp
dC5tbQppbmRleCBmY2FiMjZmYmI3MmRlYjk4OTNkMjVlMmZjZGJiOWExZDE1OTczY2JlLi45ZjI3
NmVhOWJjYjhhNDdmODAwMTYzNTE5Y2UwNzFiOWY0OTAwMmRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFW
S2l0Lm1tCkBAIC0yNyw3ICsyNyw2IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0LmgiCiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogI2lmIEhBVkUoQVZLSVQpCiAKICNpbXBvcnQgIkxvZ2dpbmcuaCIKQEAgLTE4NSw5ICsxODQs
OSBAQCB2b2lkIFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpsZWdpYmxlTWVkaWFTZWxl
Y3Rpb25PcHRpb25zQ2hhbmdlZChjb25zdCBWZQogdm9pZCBQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VBVktpdDo6ZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQoYm9vbCBlbmFibGVkLCBQbGF5YmFja1Nl
c3Npb25Nb2RlbDo6RXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUgdGFyZ2V0VHlwZSwgY29uc3Qg
U3RyaW5nJiBsb2NhbGl6ZWREZXZpY2VOYW1lKQogewogICAgIEFWUGxheWVyQ29udHJvbGxlckV4
dGVybmFsUGxheWJhY2tUeXBlIGV4dGVybmFsUGxheWJhY2tUeXBlID0gQVZQbGF5ZXJDb250cm9s
bGVyRXh0ZXJuYWxQbGF5YmFja1R5cGVOb25lOwotICAgIGlmICh0YXJnZXRUeXBlID09IFBsYXli
YWNrU2Vzc2lvbk1vZGVsOjpUYXJnZXRUeXBlQWlyUGxheSkKKyAgICBpZiAoZW5hYmxlZCAmJiB0
YXJnZXRUeXBlID09IFBsYXliYWNrU2Vzc2lvbk1vZGVsOjpUYXJnZXRUeXBlQWlyUGxheSkKICAg
ICAgICAgZXh0ZXJuYWxQbGF5YmFja1R5cGUgPSBBVlBsYXllckNvbnRyb2xsZXJFeHRlcm5hbFBs
YXliYWNrVHlwZUFpclBsYXk7Ci0gICAgZWxzZSBpZiAodGFyZ2V0VHlwZSA9PSBQbGF5YmFja1Nl
c3Npb25Nb2RlbDo6VGFyZ2V0VHlwZVRWT3V0KQorICAgIGVsc2UgaWYgKGVuYWJsZWQgJiYgdGFy
Z2V0VHlwZSA9PSBQbGF5YmFja1Nlc3Npb25Nb2RlbDo6VGFyZ2V0VHlwZVRWT3V0KQogICAgICAg
ICBleHRlcm5hbFBsYXliYWNrVHlwZSA9IEFWUGxheWVyQ29udHJvbGxlckV4dGVybmFsUGxheWJh
Y2tUeXBlVFZPdXQ7CiAKICAgICBXZWJBVlBsYXllckNvbnRyb2xsZXIqIHBsYXllckNvbnRyb2xs
ZXIgPSBtX3BsYXllckNvbnRyb2xsZXIuZ2V0KCk7CkBAIC0yMzEsNCArMjMwLDMgQEAgdm9pZCBQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6bW9kZWxEZXN0cm95ZWQoKQogfQogCiAjZW5k
aWYgLy8gSEFWRShBVktJVCkKLSNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkFWUGxheWVyQ29udHJvbGxlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkFWUGxheWVyQ29udHJvbGxlci5oCmlu
ZGV4IGE2MzlhOTgxZmZjMGIwNjJkYTYzMGM4MWJlYTRiZGRiZjJmNjM2YTEuLjg5NDBkMDJjMzkw
MzZhMzMwNDk2NjdkZWQzMThlYjk2Zjc1ZDEyMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9XZWJBVlBsYXllckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvV2ViQVZQbGF5ZXJDb250cm9sbGVyLmgKQEAgLTIzLDcgKzIzLDcgQEAK
ICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEhBVkUo
QVZLSVQpCisjaWYgSEFWRShBVktJVCkKIAogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9BVktpdFNQ
SS5oPgogCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFW
S2l0OwogQHByb3BlcnR5IChyZXRhaW4pIE5TU3RyaW5nICpsb2NhbGl6ZWREaXNwbGF5TmFtZTsK
IEBlbmQKIAotQGludGVyZmFjZSBXZWJBVlBsYXllckNvbnRyb2xsZXIgOiBOU09iamVjdCB7CitX
RUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNlIFdlYkFWUGxheWVyQ29udHJvbGxlciA6IE5TT2JqZWN0
IHsKICAgICBXZWJBVk1lZGlhU2VsZWN0aW9uT3B0aW9uICpfY3VycmVudEF1ZGlvTWVkaWFTZWxl
Y3Rpb25PcHRpb247CiAgICAgV2ViQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqX2N1cnJlbnRMZWdp
YmxlTWVkaWFTZWxlY3Rpb25PcHRpb247CiAgICAgQk9PTCBfcGljdHVyZUluUGljdHVyZUludGVy
cnVwdGVkOwpAQCAtNTIsNiArNTIsOSBAQCBjbGFzcyBQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VB
VktpdDsKIEBwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgY2FuU2Vla1RvQmVnaW5uaW5nOwogQHBy
b3BlcnR5IChyZWFkb25seSkgQk9PTCBjYW5TZWVrVG9FbmQ7CiBAcHJvcGVydHkgKHJlYWRvbmx5
KSBCT09MIGlzU2NydWJiaW5nOworQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBjYW5TZWVrRnJh
bWVCYWNrd2FyZDsKK0Bwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgY2FuU2Vla0ZyYW1lRm9yd2Fy
ZDsKK0Bwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgaGFzQ29udGVudENoYXB0ZXJzOwogCiBAcHJv
cGVydHkgQk9PTCBjYW5QbGF5OwogQHByb3BlcnR5IChnZXR0ZXI9aXNQbGF5aW5nKSBCT09MIHBs
YXlpbmc7CkBAIC0xMDAsNCArMTAzLDMgQEAgY2xhc3MgUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
QVZLaXQ7CiBAZW5kCiAKICNlbmRpZgotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvV2ViQVZQbGF5ZXJDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1dlYkFWUGxheWVyQ29udHJvbGxlci5tbQppbmRleCBkNTliYTg3ODc3ZWM0YzhhOGM2
NmMxODBiMWU3NWNhYjE5ZDQ0NGRhLi4yMjk3NzVjNmNiNTA1M2I5YTU0ZTNjMDljNGJjY2Y1M2Nh
OTc4ZGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQVZQbGF5
ZXJDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJBVlBs
YXllckNvbnRyb2xsZXIubW0KQEAgLTI3LDcgKzI3LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgog
I2ltcG9ydCAiV2ViQVZQbGF5ZXJDb250cm9sbGVyLmgiCiAKLSNpZiBQTEFURk9STShJT1NfRkFN
SUxZKSAmJiBIQVZFKEFWS0lUKQorI2lmIEhBVkUoQVZLSVQpCiAKICNpbXBvcnQgIkxvZ2dpbmcu
aCIKICNpbXBvcnQgIlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0LmgiCkBAIC0zOTcsNiAr
Mzk3LDE2IEBAIC0gKHZvaWQpc2Vla0NoYXB0ZXJGb3J3YXJkOihpZClzZW5kZXIKICAgICBbc2Vs
ZiBzZWVrVG9FbmQ6c2VuZGVyXTsKIH0KIAorLSAoQk9PTCljYW5TZWVrRnJhbWVCYWNrd2FyZAor
eworICAgIHJldHVybiBZRVM7Cit9CisKKy0gKEJPT0wpY2FuU2Vla0ZyYW1lRm9yd2FyZAorewor
ICAgIHJldHVybiBZRVM7Cit9CisKIC0gKEJPT0wpaGFzTWVkaWFTZWxlY3Rpb25PcHRpb25zCiB7
CiAgICAgcmV0dXJuIFtzZWxmIGhhc0F1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zXSB8fCBbc2Vs
ZiBoYXNMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zXTsKQEAgLTY1MCw1ICs2NjAsNSBAQCAt
ICh2b2lkKWRlYWxsb2MKIAogQGVuZAogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkK
KyNlbmRpZiAvLyBIQVZFKEFWS0lUKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9XZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5oCmluZGV4IDIxMWNjZWExZTRkNDM1NmE1
OTA3MDE2N2FlZGRmOTBjMmM1MDA4NTAuLjYyOTdiMGRiZjc4ZDZiYjIxYTQ0YjUyMjNhY2I1Njc4
MzRkOGQ1ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3Jl
RnVsbFNjcmVlbldpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJD
b3JlRnVsbFNjcmVlbldpbmRvdy5oCkBAIC0yMywxNCArMjMsMTEgQEAKICAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYkNvcmVGdWxsU2NyZWVuV2lu
ZG93X2gKLSNkZWZpbmUgV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3dfaAorI3ByYWdtYSBvbmNlCiAK
LSNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQorI2lm
ICFQTEFURk9STShJT1NfRkFNSUxZKQogCiBXRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNlIFdlYkNv
cmVGdWxsU2NyZWVuV2luZG93IDogTlNXaW5kb3cKIEBlbmQKIAotI2VuZGlmIC8vIEVOQUJMRShG
VUxMU0NSRUVOX0FQSSkKLQotI2VuZGlmIC8vIFdlYkNvcmVGdWxsU2NyZWVuV2luZG93X2gKKyNl
bmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1dlYkNvcmVGdWxsU2NyZWVuV2luZG93Lm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1dlYkNvcmVGdWxsU2NyZWVuV2luZG93Lm1tCmluZGV4IGFhNjhlMDEzZmI0
YzgyMDIxMmI3MGI0ZDBhMGRiMDgyNjkyMzk4ODIuLjM1MzI1NTlkOTIyNzAzZWY3ZTMyMTA5M2I0
NzVhOTk0NGIwMDljMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9X
ZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cubW0KQEAgLTI1LDcgKzI1LDcgQEAKIAogI2ltcG9y
dCAiY29uZmlnLmgiCiAKLSNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpICYmICFQTEFURk9STShJ
T1NfRkFNSUxZKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJXZWJDb3Jl
RnVsbFNjcmVlbldpbmRvdy5oIgogCkBAIC0xMDEsNCArMTAxLDQgQEAgLSAodm9pZClzZXRTdHls
ZU1hc2s6KE5TVUludGVnZXIpc3R5bGVNYXNrCiB9CiBAZW5kCiAKLSNlbmRpZiAvLyBFTkFCTEUo
RlVMTFNDUkVFTl9BUEkpCisjZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlci5oCmluZGV4IGU4ZmI1NjI5NTA5NWJmMzdhNGQyODgwNzUwNDZmMzVi
ZGQyZTA4NWEuLjlhNjRhNjBjYzNiNWJlYjE4NzIyMjFhNTI2MTlmYTJmMjJjMjMyMjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlci5oCkBAIC0zMywxNCArMzMsMTIgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgSFRNTFZpZGVvRWxlbWVudDsKIH0KIAotQGNsYXNzIFdlYlZpZGVvRnVs
bHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXI7CiBAY2xhc3MgV2ViV2luZG93RmFkZUFuaW1hdGlv
bjsKIAogQGludGVyZmFjZSBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIDogTlNXaW5kb3dD
b250cm9sbGVyIHsKICAgICBSZWZQdHI8V2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudD4gX3ZpZGVv
RWxlbWVudDsKIAogICAgIE5TV2luZG93ICpfYmFja2dyb3VuZEZ1bGxzY3JlZW5XaW5kb3c7IC8v
IChyZXRhaW4pCi0gICAgV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlciAqX2h1
ZENvbnRyb2xsZXI7IC8vIChyZXRhaW4pCiAKICAgICBXZWJXaW5kb3dGYWRlQW5pbWF0aW9uICpf
ZmFkZUFuaW1hdGlvbjsgLy8gKHJldGFpbikKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLm1t
CmluZGV4IDc2YmI0NzZhYjA0NDAxZDgzODRlMGE3YzdmMmMxMGU2ZjBjZGI2ZmIuLmQ2MDViNzBj
ODdmYTkzYTYzZWVlY2NiNDk3YmM0ZDM3YWQ0NjJjYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXIubW0KQEAgLTI3LDI4ICsyNywxMTMgQEAKIAogI2lmIEVOQUJMRShWSURFTykgJiYgUExB
VEZPUk0oTUFDKQogCi0jaW1wb3J0ICJXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9s
bGVyLmgiCi0jaW1wb3J0ICJXZWJXaW5kb3dBbmltYXRpb24uaCIKICNpbXBvcnQgPEFWRm91bmRh
dGlvbi9BVlBsYXllci5oPgotI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWUGxheWVyTGF5ZXIuaD4K
LSNpbXBvcnQgPENhcmJvbi9DYXJib24uaD4KICNpbXBvcnQgPFdlYkNvcmUvSFRNTFZpZGVvRWxl
bWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5o
PgorI2ltcG9ydCA8V2ViQ29yZS9QbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5oPgor
I2ltcG9ydCA8V2ViQ29yZS9XZWJBVlBsYXllckNvbnRyb2xsZXIuaD4KKyNpbXBvcnQgPFdlYkNv
cmUvV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cuaD4KKyNpbXBvcnQgPG9iamMvbWVzc2FnZS5oPgog
I2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+Ci0jaW1wb3J0IDxwYWwvc3lzdGVtL1NsZWVwRGlzYWJs
ZXIuaD4KKyNpbXBvcnQgPHBhbC9zcGkvY29jb2EvQVZLaXRTUEkuaD4KKyNpbXBvcnQgPHBhbC9z
cGkvbWFjL05TV2luZG93U1BJLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKKyNpbXBv
cnQgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgogI2ltcG9ydCA8cGFsL2NvY29hL0FWRm91
bmRhdGlvblNvZnRMaW5rLmg+CiAKK1NPRlRMSU5LX0FWS0lUX0ZSQU1FV09SSygpCitTT0ZUX0xJ
TktfQ0xBU1MoQVZLaXQsIEFWUGxheWVyVmlldykKKwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfQkVHSU4KIAotQGludGVyZmFjZSBXZWJWaWRlb0Z1bGxzY3JlZW5XaW5kb3cgOiBOU1dp
bmRvdzxOU0FuaW1hdGlvbkRlbGVnYXRlPiB7Ci0gICAgU0VMIF9jb250cm9sbGVyQWN0aW9uT25B
bmltYXRpb25FbmQ7Ci0gICAgV2ViV2luZG93U2NhbGVBbmltYXRpb24gKl9mdWxsc2NyZWVuQW5p
bWF0aW9uOyAvLyAocmV0YWluKQorQGludGVyZmFjZSBBVlBsYXllclZpZXcgKFNlY3JldFN0dWZm
KQorQHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbikgQk9PTCBzaG93c0F1ZGlvT25seUluZGlj
YXRvclZpZXc7CitAZW5kCisKK0BpbnRlcmZhY2UgV2ViT3ZlcmxheUxheWVyIDogQ0FMYXllcgor
QGVuZAorCitAaW1wbGVtZW50YXRpb24gV2ViT3ZlcmxheUxheWVyCistICh2b2lkKWxheW91dFN1
YmxheWVycworeworICAgIGZvciAoQ0FMYXllciogbGF5ZXIgaW4gc2VsZi5zdWJsYXllcnMpCisg
ICAgICAgIGxheWVyLmZyYW1lID0gc2VsZi5ib3VuZHM7CiB9Ci0tICh2b2lkKWFuaW1hdGVGcm9t
UmVjdDooTlNSZWN0KXN0YXJ0UmVjdCB0b1JlY3Q6KE5TUmVjdCllbmRSZWN0IHdpdGhTdWJBbmlt
YXRpb246KE5TQW5pbWF0aW9uICopc3ViQW5pbWF0aW9uIGNvbnRyb2xsZXJBY3Rpb246KFNFTClj
b250cm9sbGVyQWN0aW9uOwogQGVuZAogCi1AaW50ZXJmYWNlIFdlYlZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXIgKCkgPFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXJEZWxlZ2F0
ZT4KK0BjbGFzcyBXZWJBVlBsYXllclZpZXc7CisKK0Bwcm90b2NvbCBXZWJBVlBsYXllclZpZXdE
ZWxlZ2F0ZQorLSAoQk9PTClwbGF5ZXJWaWV3SXNGdWxsU2NyZWVuOihXZWJBVlBsYXllclZpZXcq
KXBsYXllclZpZXc7CistICh2b2lkKXBsYXllclZpZXdSZXF1ZXN0RW50ZXJGdWxsc2NyZWVuOihX
ZWJBVlBsYXllclZpZXcqKXBsYXllclZpZXc7CistICh2b2lkKXBsYXllclZpZXdSZXF1ZXN0RXhp
dEZ1bGxzY3JlZW46KFdlYkFWUGxheWVyVmlldyopcGxheWVyVmlldzsKK0BlbmQKKworQGludGVy
ZmFjZSBXZWJBVlBsYXllclZpZXcgOiBBVlBsYXllclZpZXcKK0Bwcm9wZXJ0eSAod2VhaykgaWQ8
V2ViQVZQbGF5ZXJWaWV3RGVsZWdhdGU+IGRlbGVnYXRlOworQGVuZAorCitzdGF0aWMgaWQ8V2Vi
QVZQbGF5ZXJWaWV3RGVsZWdhdGU+IFdlYkFWUGxheWVyVmlld19kZWxlZ2F0ZShpZCBhU2VsZiwg
U0VMKQoreworICAgIHZvaWQqIGRlbGVnYXRlID0gbmlsOworICAgIG9iamVjdF9nZXRJbnN0YW5j
ZVZhcmlhYmxlKGFTZWxmLCAiX3dlYkRlbGVnYXRlIiwgJmRlbGVnYXRlKTsKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8aWQ8V2ViQVZQbGF5ZXJWaWV3RGVsZWdhdGU+PihkZWxlZ2F0ZSk7Cit9CisK
K3N0YXRpYyB2b2lkIFdlYkFWUGxheWVyVmlld19zZXREZWxlZ2F0ZShpZCBhU2VsZiwgU0VMLCBp
ZDxXZWJBVlBsYXllclZpZXdEZWxlZ2F0ZT4gZGVsZWdhdGUpCit7CisgICAgb2JqZWN0X3NldElu
c3RhbmNlVmFyaWFibGUoYVNlbGYsICJfd2ViRGVsZWdhdGUiLCBkZWxlZ2F0ZSk7Cit9CisKK3N0
YXRpYyBCT09MIFdlYkFWUGxheWVyVmlld19pc0Z1bGxTY3JlZW4oaWQgYVNlbGYsIFNFTCkKK3sK
KyAgICBXZWJBVlBsYXllclZpZXcgKnBsYXllclZpZXcgPSBhU2VsZjsKKyAgICByZXR1cm4gW3Bs
YXllclZpZXcuZGVsZWdhdGUgcGxheWVyVmlld0lzRnVsbFNjcmVlbjpwbGF5ZXJWaWV3XTsKK30K
Kworc3RhdGljIHZvaWQgV2ViQVZQbGF5ZXJWaWV3X2VudGVyRnVsbFNjcmVlbihpZCBhU2VsZiwg
U0VMLCBpZCBzZW5kZXIpCit7CisgICAgV2ViQVZQbGF5ZXJWaWV3ICpwbGF5ZXJWaWV3ID0gYVNl
bGY7CisgICAgW3BsYXllclZpZXcuZGVsZWdhdGUgcGxheWVyVmlld1JlcXVlc3RFbnRlckZ1bGxz
Y3JlZW46cGxheWVyVmlld107Cit9CisKK3N0YXRpYyB2b2lkIFdlYkFWUGxheWVyVmlld19leGl0
RnVsbFNjcmVlbihpZCBhU2VsZiwgU0VMLCBpZCBzZW5kZXIpCit7CisgICAgV2ViQVZQbGF5ZXJW
aWV3ICpwbGF5ZXJWaWV3ID0gYVNlbGY7CisgICAgW3BsYXllclZpZXcuZGVsZWdhdGUgcGxheWVy
Vmlld1JlcXVlc3RFeGl0RnVsbHNjcmVlbjpwbGF5ZXJWaWV3XTsKK30KKworc3RhdGljIFdlYkFW
UGxheWVyVmlldyAqYWxsb2NXZWJBVlBsYXllclZpZXdJbnN0YW5jZSgpCit7CisgICAgc3RhdGlj
IENsYXNzIHRoZUNsYXNzID0gbmlsOworICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRv
a2VuOworICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKKyAgICAgICAgQVNTRVJUKGdl
dEFWUGxheWVyVmlld0NsYXNzKCkpOworICAgICAgICBDbGFzcyBhQ2xhc3MgPSBvYmpjX2FsbG9j
YXRlQ2xhc3NQYWlyKGdldEFWUGxheWVyVmlld0NsYXNzKCksICJXZWJBVlBsYXllclZpZXciLCAw
KTsKKyAgICAgICAgdGhlQ2xhc3MgPSBhQ2xhc3M7CisgICAgICAgIGNsYXNzX2FkZE1ldGhvZCh0
aGVDbGFzcywgQHNlbGVjdG9yKHNldERlbGVnYXRlOiksIChJTVApV2ViQVZQbGF5ZXJWaWV3X3Nl
dERlbGVnYXRlLCAidkA6QCIpOworICAgICAgICBjbGFzc19hZGRNZXRob2QodGhlQ2xhc3MsIEBz
ZWxlY3RvcihkZWxlZ2F0ZSksIChJTVApV2ViQVZQbGF5ZXJWaWV3X2RlbGVnYXRlLCAiQEA6Iik7
CisgICAgICAgIGNsYXNzX2FkZE1ldGhvZCh0aGVDbGFzcywgQHNlbGVjdG9yKGlzRnVsbFNjcmVl
biksIChJTVApV2ViQVZQbGF5ZXJWaWV3X2lzRnVsbFNjcmVlbiwgIkJAOiIpOworICAgICAgICBj
bGFzc19hZGRNZXRob2QodGhlQ2xhc3MsIEBzZWxlY3RvcihlbnRlckZ1bGxTY3JlZW46KSwgKElN
UClXZWJBVlBsYXllclZpZXdfZW50ZXJGdWxsU2NyZWVuLCAidkA6QCIpOworICAgICAgICBjbGFz
c19hZGRNZXRob2QodGhlQ2xhc3MsIEBzZWxlY3RvcihleGl0RnVsbFNjcmVlbjopLCAoSU1QKVdl
YkFWUGxheWVyVmlld19leGl0RnVsbFNjcmVlbiwgInZAOkAiKTsKKworICAgICAgICBjbGFzc19h
ZGRJdmFyKHRoZUNsYXNzLCAiX3dlYkRlbGVnYXRlIiwgc2l6ZW9mKGlkKSwgbG9nMihzaXplb2Yo
aWQpKSwgIkAiKTsKKyAgICAgICAgY2xhc3NfYWRkSXZhcih0aGVDbGFzcywgIl93ZWJJc0Z1bGxT
Y3JlZW4iLCBzaXplb2YoQk9PTCksIGxvZzIoc2l6ZW9mKEJPT0wpKSwgIkIiKTsKKworICAgICAg
ICBvYmpjX3JlZ2lzdGVyQ2xhc3NQYWlyKHRoZUNsYXNzKTsKKyAgICB9KTsKKyAgICByZXR1cm4g
KFdlYkFWUGxheWVyVmlldyAqKVt0aGVDbGFzcyBhbGxvY107Cit9CisKK0BpbnRlcmZhY2UgV2Vi
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciAoKSA8V2ViQVZQbGF5ZXJWaWV3RGVsZWdhdGUsIE5T
V2luZG93RGVsZWdhdGU+IHsKKyAgICBSZWZQdHI8V2ViQ29yZTo6UGxheWJhY2tTZXNzaW9uTW9k
ZWxNZWRpYUVsZW1lbnQ+IF9wbGF5YmFja01vZGVsOworICAgIFJlZlB0cjxXZWJDb3JlOjpQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdD4gX3BsYXliYWNrSW50ZXJmYWNlOworICAgIFJldGFp
blB0cjxOU1ZpZXc+IF9jb250ZW50T3ZlcmxheTsKKyAgICBCT09MIF9pc0Z1bGxTY3JlZW47Cit9
CitAcHJvcGVydHkgKHJlYWRvbmx5KSBXZWJDb3JlRnVsbFNjcmVlbldpbmRvdyogZnVsbHNjcmVl
bldpbmRvdzsKK0Bwcm9wZXJ0eSAocmVhZG9ubHkpIFdlYkFWUGxheWVyVmlldyogcGxheWVyVmll
dzsKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIK
QEAgLTU2LDQxICsxNDEsNTYgQEAgQGltcGxlbWVudGF0aW9uIFdlYlZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXIKIC0gKGlkKWluaXQKIHsKICAgICAvLyBEbyBub3QgZGVmZXIgd2luZG93IGNyZWF0
aW9uLCB0byBtYWtlIHN1cmUgLXdpbmRvd051bWJlciBpcyBjcmVhdGVkIChuZWVkZWQgYnkgV2Vi
V2luZG93U2NhbGVBbmltYXRpb24pLgotICAgIE5TV2luZG93ICp3aW5kb3cgPSBbW1dlYlZpZGVv
RnVsbHNjcmVlbldpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpOU1plcm9SZWN0IHN0
eWxlTWFzazpOU0JvcmRlcmxlc3NXaW5kb3dNYXNrIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZm
ZXJlZCBkZWZlcjpOT107CisgICAgTlNXaW5kb3cgKndpbmRvdyA9IFtbV2ViQ29yZUZ1bGxTY3Jl
ZW5XaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6TlNaZXJvUmVjdCBzdHlsZU1hc2s6
KE5TV2luZG93U3R5bGVNYXNrRnVsbFNpemVDb250ZW50VmlldyB8IE5TV2luZG93U3R5bGVNYXNr
UmVzaXphYmxlKSBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6Tk9dOworICAg
IFt3aW5kb3cgc2V0Q29sbGVjdGlvbkJlaGF2aW9yOihbd2luZG93IGNvbGxlY3Rpb25CZWhhdmlv
cl0gfCBOU1dpbmRvd0NvbGxlY3Rpb25CZWhhdmlvckZ1bGxTY3JlZW5QcmltYXJ5KV07CisgICAg
d2luZG93LmRlbGVnYXRlID0gc2VsZjsKICAgICBzZWxmID0gW3N1cGVyIGluaXRXaXRoV2luZG93
OndpbmRvd107CiAgICAgW3dpbmRvdyByZWxlYXNlXTsKICAgICBpZiAoIXNlbGYpCiAgICAgICAg
IHJldHVybiBuaWw7CisgICAgX3BsYXliYWNrTW9kZWwgPSBXZWJDb3JlOjpQbGF5YmFja1Nlc3Np
b25Nb2RlbE1lZGlhRWxlbWVudDo6Y3JlYXRlKCk7CisgICAgX3BsYXliYWNrSW50ZXJmYWNlID0g
V2ViQ29yZTo6UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OmNyZWF0ZSgqX3BsYXliYWNr
TW9kZWwpOworICAgIF9jb250ZW50T3ZlcmxheSA9IGFkb3B0TlMoW1tOU1ZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6TlNaZXJvUmVjdF0pOworICAgIF9jb250ZW50T3ZlcmxheS5nZXQoKS5sYXll
ckNvbnRlbnRzUmVkcmF3UG9saWN5ID0gTlNWaWV3TGF5ZXJDb250ZW50c1JlZHJhd05ldmVyOwor
ICAgIF9jb250ZW50T3ZlcmxheS5nZXQoKS5sYXllciA9IFtbW1dlYk92ZXJsYXlMYXllciBhbGxv
Y10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIFtfY29udGVudE92ZXJsYXkgc2V0V2FudHNMYXll
cjpZRVNdOworICAgIFtfY29udGVudE92ZXJsYXkgc2V0QXV0b3Jlc2l6aW5nTWFzazooTlNWaWV3
V2lkdGhTaXphYmxlIHwgTlNWaWV3SGVpZ2h0U2l6YWJsZSldOwogICAgIFtzZWxmIHdpbmRvd0Rp
ZExvYWRdOworCiAgICAgcmV0dXJuIHNlbGY7Ci0gICAgCiB9CiAtICh2b2lkKWRlYWxsb2MKIHsK
ICAgICBBU1NFUlQoIV9iYWNrZ3JvdW5kRnVsbHNjcmVlbldpbmRvdyk7CiAgICAgQVNTRVJUKCFf
ZmFkZUFuaW1hdGlvbik7Ci0gICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVy
XSByZW1vdmVPYnNlcnZlcjpzZWxmXTsKKyAgICBfcGxheWVyVmlldy5kZWxlZ2F0ZSA9IG5pbDsK
KyAgICBfcGxheWJhY2tNb2RlbCA9IG5pbDsKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKLS0g
KFdlYlZpZGVvRnVsbHNjcmVlbldpbmRvdyAqKWZ1bGxzY3JlZW5XaW5kb3cKKy0gKFdlYkNvcmVG
dWxsU2NyZWVuV2luZG93ICopZnVsbHNjcmVlbldpbmRvdwogewotICAgIHJldHVybiAoV2ViVmlk
ZW9GdWxsc2NyZWVuV2luZG93ICopW3N1cGVyIHdpbmRvd107CisgICAgcmV0dXJuIChXZWJDb3Jl
RnVsbFNjcmVlbldpbmRvdyAqKVtzdXBlciB3aW5kb3ddOwogfQogCiAtICh2b2lkKXdpbmRvd0Rp
ZExvYWQKIHsKICAgICBhdXRvIHdpbmRvdyA9IFtzZWxmIGZ1bGxzY3JlZW5XaW5kb3ddOwotICAg
IGF1dG8gY29udGVudFZpZXcgPSBbd2luZG93IGNvbnRlbnRWaWV3XTsKIAogICAgIFt3aW5kb3cg
c2V0SGFzU2hhZG93OllFU107IC8vIFRoaXMgaXMgbmljZXIgd2l0aCBhIHNoYWRvdy4KICAgICBb
d2luZG93IHNldExldmVsOk5TUG9wVXBNZW51V2luZG93TGV2ZWwtMV07CiAKLSAgICBbY29udGVu
dFZpZXcgc2V0TGF5ZXI6W0NBTGF5ZXIgbGF5ZXJdXTsKLSAgICBbY29udGVudFZpZXcgc2V0V2Fu
dHNMYXllcjpZRVNdOworICAgIF9wbGF5ZXJWaWV3ID0gW2FsbG9jV2ViQVZQbGF5ZXJWaWV3SW5z
dGFuY2UoKSBpbml0V2l0aEZyYW1lOndpbmRvdy5jb250ZW50TGF5b3V0UmVjdF07CisgICAgX3Bs
YXllclZpZXcuY29udHJvbHNTdHlsZSA9IEFWUGxheWVyVmlld0NvbnRyb2xzU3R5bGVOb25lOwor
ICAgIF9wbGF5ZXJWaWV3LnNob3dzRnVsbFNjcmVlblRvZ2dsZUJ1dHRvbiA9IFlFUzsKKyAgICBf
cGxheWVyVmlldy5zaG93c0F1ZGlvT25seUluZGljYXRvclZpZXcgPSBOTzsKKyAgICBfcGxheWVy
Vmlldy5kZWxlZ2F0ZSA9IHNlbGY7CisgICAgd2luZG93LmNvbnRlbnRWaWV3ID0gX3BsYXllclZp
ZXc7CisgICAgW19jb250ZW50T3ZlcmxheSBzZXRGcmFtZTpfcGxheWVyVmlldy5jb250ZW50T3Zl
cmxheVZpZXcuYm91bmRzXTsKKyAgICBbX3BsYXllclZpZXcuY29udGVudE92ZXJsYXlWaWV3IGFk
ZFN1YnZpZXc6X2NvbnRlbnRPdmVybGF5LmdldCgpXTsKIAotICAgIFtbTlNOb3RpZmljYXRpb25D
ZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3Io
YXBwbGljYXRpb25EaWRSZXNpZ25BY3RpdmU6KSBuYW1lOk5TQXBwbGljYXRpb25EaWRSZXNpZ25B
Y3RpdmVOb3RpZmljYXRpb24gb2JqZWN0Ok5TQXBwXTsKLSAgICBbW05TTm90aWZpY2F0aW9uQ2Vu
dGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGFw
cGxpY2F0aW9uRGlkQ2hhbmdlU2NyZWVuUGFyYW1ldGVyczopIG5hbWU6TlNBcHBsaWNhdGlvbkRp
ZENoYW5nZVNjcmVlblBhcmFtZXRlcnNOb3RpZmljYXRpb24gb2JqZWN0Ok5TQXBwXTsKKy8vICAg
IFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6c2VsZiBz
ZWxlY3RvcjpAc2VsZWN0b3IoYXBwbGljYXRpb25EaWRSZXNpZ25BY3RpdmU6KSBuYW1lOk5TQXBw
bGljYXRpb25EaWRSZXNpZ25BY3RpdmVOb3RpZmljYXRpb24gb2JqZWN0Ok5TQXBwXTsKKy8vICAg
IFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6c2VsZiBz
ZWxlY3RvcjpAc2VsZWN0b3IoYXBwbGljYXRpb25EaWRDaGFuZ2VTY3JlZW5QYXJhbWV0ZXJzOikg
bmFtZTpOU0FwcGxpY2F0aW9uRGlkQ2hhbmdlU2NyZWVuUGFyYW1ldGVyc05vdGlmaWNhdGlvbiBv
YmplY3Q6TlNBcHBdOwogfQogCiAtIChOYWtlZFB0cjxXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50
Pil2aWRlb0VsZW1lbnQKQEAgLTEwNyw3NSArMjA3LDI3IEBAIC0gKHZvaWQpc2V0VmlkZW9FbGVt
ZW50OihOYWtlZFB0cjxXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50Pil2aWRlb0VsZW1lbnQKIAog
ICAgIGlmICghW3NlbGYgaXNXaW5kb3dMb2FkZWRdKQogICAgICAgICByZXR1cm47Ci0gICAgYXV0
byBjb3JlUGxheWVyID0gdmlkZW9FbGVtZW50LT5wbGF5ZXIoKTsKLSAgICBpZiAoIWNvcmVQbGF5
ZXIpCi0gICAgICAgIHJldHVybjsKLSAgICBhdXRvIHBsYXllciA9IGNvcmVQbGF5ZXItPm9iakNB
VkZvdW5kYXRpb25BVlBsYXllcigpOwotICAgIGlmICghcGxheWVyKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBhdXRvIGNvbnRlbnRWaWV3ID0gW1tzZWxmIGZ1bGxzY3JlZW5XaW5kb3ddIGNvbnRl
bnRWaWV3XTsKLQotICAgIGF1dG8gbGF5ZXIgPSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZQbGF5ZXJM
YXllckluc3RhbmNlKCkgaW5pdF0pOwotICAgIFtsYXllciBzZXRQbGF5ZXI6cGxheWVyXTsKLQot
ICAgIFtjb250ZW50VmlldyBzZXRMYXllcjpsYXllci5nZXQoKV07Ci0KLSAgICAvLyBGSVhNRTog
VGhlIHdpbmRvd0RpZExvYWQgbWV0aG9kIGFscmVhZHkgY2FsbGVkIHRoaXMsIHNvIGl0IHNob3Vs
ZAotICAgIC8vIG5vdCBiZSBuZWNlc3NhcnkgdG8gZG8gaXQgYWdhaW4gaGVyZS4KLSAgICBbY29u
dGVudFZpZXcgc2V0V2FudHNMYXllcjpZRVNdOwogCi0gICAgLy8gRklYTUU6IFRoaXMgY2FuIGJl
IGNhbGxlZCBtdWx0aXBsZSB0aW1lcywgYW5kIHdvbid0IG5lY2Vzc2FyaWx5IGJlCi0gICAgLy8g
YmFsYW5jZWQgYnkgY2FsbHMgdG8gd2luZG93RGlkRXhpdEZ1bGxzY3JlZW4gaW4gc29tZSBjYXNl
cywgc28gaXQKLSAgICAvLyB3b3VsZCBiZSBiZXR0ZXIgdG8gY2hhbmdlIHRoaW5ncyBzbyB0aGUg
b2JzZXJ2ZXIgaXMgcmVsaWFibHkgYWRkZWQKLSAgICAvLyBvbmx5IG9uY2UgYW5kIGd1YXJhbnRl
ZWQgcmVtb3ZlZCBldmVuIGluIHVudXN1YWwgZWRnZSBjYXNlcy4KLSAgICBbcGxheWVyIGFkZE9i
c2VydmVyOnNlbGYgZm9yS2V5UGF0aDpAInJhdGUiIG9wdGlvbnM6MCBjb250ZXh0Om51bGxwdHJd
OworICAgIF9wbGF5YmFja01vZGVsLT5zZXRNZWRpYUVsZW1lbnQodmlkZW9FbGVtZW50KTsKKyAg
ICBzZWxmLnBsYXllclZpZXcucGxheWVyQ29udHJvbGxlciA9IChBVlBsYXllckNvbnRyb2xsZXIq
KV9wbGF5YmFja0ludGVyZmFjZS0+cGxheWVyQ29udHJvbGxlcigpOwogfQogCi0tIChDR0Zsb2F0
KWNsZWFyRmFkZUFuaW1hdGlvbgotewotICAgIFtfZmFkZUFuaW1hdGlvbiBzdG9wQW5pbWF0aW9u
XTsKLSAgICBDR0Zsb2F0IHByZXZpb3VzQWxwaGEgPSBbX2ZhZGVBbmltYXRpb24gY3VycmVudEFs
cGhhXTsKLSAgICBbX2ZhZGVBbmltYXRpb24gc2V0V2luZG93Om5pbF07Ci0gICAgW19mYWRlQW5p
bWF0aW9uIHJlbGVhc2VdOwotICAgIF9mYWRlQW5pbWF0aW9uID0gbmlsOwotICAgIHJldHVybiBw
cmV2aW91c0FscGhhOwotfQotCi0tICh2b2lkKXdpbmRvd0RpZEV4aXRGdWxsc2NyZWVuCistICh2
b2lkKWVudGVyRnVsbHNjcmVlbjooTlNTY3JlZW4gKilzY3JlZW4KIHsKLSAgICBDQUxheWVyICps
YXllciA9IFtbW3NlbGYgd2luZG93XSBjb250ZW50Vmlld10gbGF5ZXJdOwotICAgIGlmIChbbGF5
ZXIgaXNLaW5kT2ZDbGFzczpQQUw6OmdldEFWUGxheWVyTGF5ZXJDbGFzcygpXSkKLSAgICAgICAg
W1soQVZQbGF5ZXJMYXllciAqKWxheWVyIHBsYXllcl0gcmVtb3ZlT2JzZXJ2ZXI6c2VsZiBmb3JL
ZXlQYXRoOkAicmF0ZSJdOwotCi0gICAgW3NlbGYgY2xlYXJGYWRlQW5pbWF0aW9uXTsKLSAgICBb
W3NlbGYgd2luZG93XSBjbG9zZV07Ci0gICAgW3NlbGYgc2V0V2luZG93Om5pbF07Ci0gICAgW3Nl
bGYgdXBkYXRlTWVudUFuZERvY2tGb3JGdWxsc2NyZWVuXTsgICAKLSAgICBbX2h1ZENvbnRyb2xs
ZXIgc2V0RGVsZWdhdGU6bmlsXTsKLSAgICBbX2h1ZENvbnRyb2xsZXIgcmVsZWFzZV07Ci0gICAg
X2h1ZENvbnRyb2xsZXIgPSBuaWw7Ci0gICAgW19iYWNrZ3JvdW5kRnVsbHNjcmVlbldpbmRvdyBj
bG9zZV07Ci0gICAgW19iYWNrZ3JvdW5kRnVsbHNjcmVlbldpbmRvdyByZWxlYXNlXTsKLSAgICBf
YmFja2dyb3VuZEZ1bGxzY3JlZW5XaW5kb3cgPSBuaWw7Ci0gICAgCi0gICAgW3NlbGYgYXV0b3Jl
bGVhc2VdOyAvLyBBc3NvY2lhdGVkIC1yZXRhaW4gaXMgaW4gLWV4aXRGdWxsc2NyZWVuLgotICAg
IF9pc0VuZGluZ0Z1bGxzY3JlZW4gPSBOTzsKKyAgICBpZiAoIV92aWRlb0VsZW1lbnQpCisgICAg
ICAgIHJldHVybjsKKyAgICBbTlNBbmltYXRpb25Db250ZXh0IGJlZ2luR3JvdXBpbmddOworICAg
IF92aWRlb0VsZW1lbnQtPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKF9jb250ZW50T3ZlcmxheS5n
ZXQoKS5sYXllciwgW3NlbGYsIHByb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZildIHsKKyAg
ICAgICAgW3NlbGYuZnVsbHNjcmVlbldpbmRvdyBzZXRGcmFtZTpzZWxmLnZpZGVvRWxlbWVudFJl
Y3QgZGlzcGxheTpZRVNdOworICAgICAgICBbc2VsZi5mdWxsc2NyZWVuV2luZG93IG1ha2VLZXlB
bmRPcmRlckZyb250OnNlbGZdOworICAgICAgICBbc2VsZi5mdWxsc2NyZWVuV2luZG93IGVudGVy
RnVsbFNjcmVlbk1vZGU6c2VsZl07CisgICAgICAgIFtOU0FuaW1hdGlvbkNvbnRleHQgZW5kR3Jv
dXBpbmddOworICAgIH0pOwogfQogCi0tICh2b2lkKXdpbmRvd0RpZEVudGVyRnVsbHNjcmVlbgor
LSAodm9pZClleGl0RnVsbHNjcmVlbgogewotICAgIFtzZWxmIGNsZWFyRmFkZUFuaW1hdGlvbl07
Ci0KLSAgICBBU1NFUlQoIV9odWRDb250cm9sbGVyKTsKLSAgICBfaHVkQ29udHJvbGxlciA9IFtb
V2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlciBhbGxvY10gaW5pdF07Ci0gICAg
W19odWRDb250cm9sbGVyIHNldERlbGVnYXRlOnNlbGZdOwotCi0gICAgW3NlbGYgdXBkYXRlTWVu
dUFuZERvY2tGb3JGdWxsc2NyZWVuXTsKLSAgICBbTlNDdXJzb3Igc2V0SGlkZGVuVW50aWxNb3Vz
ZU1vdmVzOllFU107Ci0gICAgCi0gICAgLy8gR2l2ZSB0aGUgSFVEIGtleWJvYXJkIGZvY3VzIGlu
aXRpYWxseQotICAgIFtfaHVkQ29udHJvbGxlciBmYWRlV2luZG93SW5dOworICAgIFtzZWxmLmZ1
bGxzY3JlZW5XaW5kb3cgZXhpdEZ1bGxTY3JlZW5Nb2RlOnNlbGZdOwogfQogCiAtIChOU1JlY3Qp
dmlkZW9FbGVtZW50UmVjdApAQCAtMTg0LDMyNCArMjM2LDEwNyBAQCAtIChOU1JlY3QpdmlkZW9F
bGVtZW50UmVjdAogfQogCiAtICh2b2lkKWFwcGxpY2F0aW9uRGlkUmVzaWduQWN0aXZlOihOU05v
dGlmaWNhdGlvbiopbm90aWZpY2F0aW9uCi17ICAgCit7CiAgICAgVU5VU0VEX1BBUkFNKG5vdGlm
aWNhdGlvbik7CiAgICAgTlNXaW5kb3cqIGZ1bGxzY3JlZW5XaW5kb3cgPSBbc2VsZiBmdWxsc2Ny
ZWVuV2luZG93XTsKIAogICAgIC8vIFJlcGxpY2F0ZSB0aGUgUXVpY2tUaW1lIFBsYXllciAoWCkg
YmVoYXZpb3Igd2hlbiBsb3NpbmcgYWN0aXZlIGFwcGxpY2F0aW9uIHN0YXR1czoKLSAgICAvLyBJ
cyB0aGUgZnVsbHNjcmVlbiBzY3JlZW4gdGhlIG1haW4gc2NyZWVuPyAoTm90ZTogdGhpcyBjb3Zl
cnMgdGhlIGNhc2Ugd2hlcmUgb25seSBhIAotICAgIC8vIHNpbmdsZSBzY3JlZW4gaXMgYXZhaWxh
YmxlLikgIElzIHRoZSBmdWxsc2NyZWVuIHNjcmVlbiBvbiB0aGUgY3VycmVudCBzcGFjZT8gSUZG
IHNvLCAKLSAgICAvLyB0aGVuIGV4aXQgZnVsbHNjcmVlbiBtb2RlLiAgICAKKyAgICAvLyBJcyB0
aGUgZnVsbHNjcmVlbiBzY3JlZW4gdGhlIG1haW4gc2NyZWVuPyAoTm90ZTogdGhpcyBjb3ZlcnMg
dGhlIGNhc2Ugd2hlcmUgb25seSBhCisgICAgLy8gc2luZ2xlIHNjcmVlbiBpcyBhdmFpbGFibGUu
KSAgSXMgdGhlIGZ1bGxzY3JlZW4gc2NyZWVuIG9uIHRoZSBjdXJyZW50IHNwYWNlPyBJRkYgc28s
CisgICAgLy8gdGhlbiBleGl0IGZ1bGxzY3JlZW4gbW9kZS4KICAgICBpZiAoZnVsbHNjcmVlbldp
bmRvdy5zY3JlZW4gPT0gW05TU2NyZWVuIHNjcmVlbnNdWzBdICYmIGZ1bGxzY3JlZW5XaW5kb3cu
b25BY3RpdmVTcGFjZSkKLSAgICAgICAgW3NlbGYgcmVxdWVzdEV4aXRGdWxsc2NyZWVuV2l0aEFu
aW1hdGlvbjpOT107Ci19Ci0KLQotLy8gTUFSSzogLQotLy8gTUFSSzogRXhwb3NlZCBJbnRlcmZh
Y2UKLQotc3RhdGljIE5TUmVjdCBmcmFtZUV4cGFuZGVkVG9SYXRpb09mRnJhbWUoTlNSZWN0IGZy
YW1lVG9FeHBhbmQsIE5TUmVjdCBmcmFtZSkKLXsKLSAgICAvLyBLZWVwIGEgY29uc3RyYWluZWQg
YXNwZWN0IHJhdGlvIGZvciB0aGUgZGVzdGluYXRpb24gd2luZG93Ci0gICAgTlNSZWN0IHJlc3Vs
dCA9IGZyYW1lVG9FeHBhbmQ7Ci0gICAgQ0dGbG9hdCBuZXdSYXRpbyA9IGZyYW1lLnNpemUud2lk
dGggLyBmcmFtZS5zaXplLmhlaWdodDsKLSAgICBDR0Zsb2F0IG9yaWdpbmFsUmF0aW8gPSBmcmFt
ZVRvRXhwYW5kLnNpemUud2lkdGggLyBmcmFtZVRvRXhwYW5kLnNpemUuaGVpZ2h0OwotICAgIGlm
IChuZXdSYXRpbyA+IG9yaWdpbmFsUmF0aW8pIHsKLSAgICAgICAgQ0dGbG9hdCBuZXdXaWR0aCA9
IG5ld1JhdGlvICogZnJhbWVUb0V4cGFuZC5zaXplLmhlaWdodDsKLSAgICAgICAgQ0dGbG9hdCBk
aWZmID0gbmV3V2lkdGggLSBmcmFtZVRvRXhwYW5kLnNpemUud2lkdGg7Ci0gICAgICAgIHJlc3Vs
dC5zaXplLndpZHRoID0gbmV3V2lkdGg7Ci0gICAgICAgIHJlc3VsdC5vcmlnaW4ueCAtPSBkaWZm
IC8gMjsKLSAgICB9IGVsc2UgewotICAgICAgICBDR0Zsb2F0IG5ld0hlaWdodCA9IGZyYW1lVG9F
eHBhbmQuc2l6ZS53aWR0aCAvIG5ld1JhdGlvOwotICAgICAgICBDR0Zsb2F0IGRpZmYgPSBuZXdI
ZWlnaHQgLSBmcmFtZVRvRXhwYW5kLnNpemUuaGVpZ2h0OwotICAgICAgICByZXN1bHQuc2l6ZS5o
ZWlnaHQgPSBuZXdIZWlnaHQ7Ci0gICAgICAgIHJlc3VsdC5vcmlnaW4ueSAtPSBkaWZmIC8gMjsK
LSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotc3RhdGljIE5TV2luZG93ICpjcmVhdGVC
YWNrZ3JvdW5kRnVsbHNjcmVlbldpbmRvdyhOU1JlY3QgZnJhbWUsIGludCBsZXZlbCkKLXsKLSAg
ICBOU1dpbmRvdyAqd2luZG93ID0gW1tOU1dpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVj
dDpmcmFtZSBzdHlsZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayBiYWNraW5nOk5TQmFja2lu
Z1N0b3JlQnVmZmVyZWQgZGVmZXI6Tk9dOwotICAgIFt3aW5kb3cgc2V0T3BhcXVlOllFU107Ci0g
ICAgW3dpbmRvdyBzZXRCYWNrZ3JvdW5kQ29sb3I6W05TQ29sb3IgYmxhY2tDb2xvcl1dOwotICAg
IFt3aW5kb3cgc2V0TGV2ZWw6bGV2ZWxdOwotICAgIFt3aW5kb3cgc2V0UmVsZWFzZWRXaGVuQ2xv
c2VkOk5PXTsKLSAgICByZXR1cm4gd2luZG93OwotfQotCi0tICh2b2lkKXNldHVwRmFkZUFuaW1h
dGlvbklmTmVlZGVkQW5kRmFkZUluOihCT09MKWZhZGVJbgotewotICAgIENHRmxvYXQgaW5pdGlh
bEFscGhhID0gZmFkZUluID8gMCA6IDE7Ci0gICAgaWYgKF9mYWRlQW5pbWF0aW9uKSB7Ci0gICAg
ICAgIC8vIE1ha2Ugc3VyZSB3ZSBzdXBwb3J0IHF1ZXVpbmcgYW5pbWF0aW9uIGlmIHRoZSBwcmV2
aW91cyBvbmUgaXNuJ3Qgb3ZlciB5ZXQKLSAgICAgICAgaW5pdGlhbEFscGhhID0gW3NlbGYgY2xl
YXJGYWRlQW5pbWF0aW9uXTsKLSAgICB9Ci0gICAgaWYgKCFfZm9yY2VEaXNhYmxlQW5pbWF0aW9u
KQotICAgICAgICBfZmFkZUFuaW1hdGlvbiA9IFtbV2ViV2luZG93RmFkZUFuaW1hdGlvbiBhbGxv
Y10gaW5pdFdpdGhEdXJhdGlvbjowLjIgd2luZG93Ol9iYWNrZ3JvdW5kRnVsbHNjcmVlbldpbmRv
dyBpbml0aWFsQWxwaGE6aW5pdGlhbEFscGhhIGZpbmFsQWxwaGE6ZmFkZUluID8gMSA6IDBdOwot
fQotCi0tICh2b2lkKWVudGVyRnVsbHNjcmVlbjooTlNTY3JlZW4gKilzY3JlZW4KLXsKLSAgICBp
ZiAoIXNjcmVlbikKLSAgICAgICAgc2NyZWVuID0gW05TU2NyZWVuIG1haW5TY3JlZW5dOwotCi0g
ICAgTlNSZWN0IGVuZEZyYW1lID0gW3NjcmVlbiBmcmFtZV07Ci0gICAgTlNSZWN0IGZyYW1lID0g
ZnJhbWVFeHBhbmRlZFRvUmF0aW9PZkZyYW1lKFtzZWxmIHZpZGVvRWxlbWVudFJlY3RdLCBlbmRG
cmFtZSk7Ci0KLSAgICAvLyBDcmVhdGUgYSBibGFjayB3aW5kb3cgaWYgbmVlZGVkCi0gICAgaWYg
KCFfYmFja2dyb3VuZEZ1bGxzY3JlZW5XaW5kb3cpCi0gICAgICAgIF9iYWNrZ3JvdW5kRnVsbHNj
cmVlbldpbmRvdyA9IGNyZWF0ZUJhY2tncm91bmRGdWxsc2NyZWVuV2luZG93KFtzY3JlZW4gZnJh
bWVdLCBbW3NlbGYgd2luZG93XSBsZXZlbF0tMSk7Ci0gICAgZWxzZQotICAgICAgICBbX2JhY2tn
cm91bmRGdWxsc2NyZWVuV2luZG93IHNldEZyYW1lOltzY3JlZW4gZnJhbWVdIGRpc3BsYXk6Tk9d
OwotCi0gICAgW3NlbGYgc2V0dXBGYWRlQW5pbWF0aW9uSWZOZWVkZWRBbmRGYWRlSW46WUVTXTsK
LSAgICBpZiAoX2ZvcmNlRGlzYWJsZUFuaW1hdGlvbikgewotICAgICAgICAvLyBUaGlzIHdpbGwg
ZGlzYWJsZSBzY2FsZSBhbmltYXRpb24KLSAgICAgICAgZnJhbWUgPSBOU1plcm9SZWN0OwotICAg
IH0KLSAgICBbW3NlbGYgZnVsbHNjcmVlbldpbmRvd10gYW5pbWF0ZUZyb21SZWN0OmZyYW1lIHRv
UmVjdDplbmRGcmFtZSB3aXRoU3ViQW5pbWF0aW9uOl9mYWRlQW5pbWF0aW9uIGNvbnRyb2xsZXJB
Y3Rpb246QHNlbGVjdG9yKHdpbmRvd0RpZEVudGVyRnVsbHNjcmVlbildOwotCi0gICAgW19iYWNr
Z3JvdW5kRnVsbHNjcmVlbldpbmRvdyBvcmRlcldpbmRvdzpOU1dpbmRvd0JlbG93IHJlbGF0aXZl
VG86W1tzZWxmIGZ1bGxzY3JlZW5XaW5kb3ddIHdpbmRvd051bWJlcl1dOwotfQotCi0tICh2b2lk
KWV4aXRGdWxsc2NyZWVuCi17Ci0gICAgaWYgKF9pc0VuZGluZ0Z1bGxzY3JlZW4pCi0gICAgICAg
IHJldHVybjsKLSAgICBfaXNFbmRpbmdGdWxsc2NyZWVuID0gWUVTOwotICAgIFtfaHVkQ29udHJv
bGxlciBjbG9zZVdpbmRvd107Ci0KLSAgICBOU1JlY3QgZW5kRnJhbWUgPSBbc2VsZiB2aWRlb0Vs
ZW1lbnRSZWN0XTsKLQotICAgIFtzZWxmIHNldHVwRmFkZUFuaW1hdGlvbklmTmVlZGVkQW5kRmFk
ZUluOk5PXTsKLSAgICBpZiAoX2ZvcmNlRGlzYWJsZUFuaW1hdGlvbikgewotICAgICAgICAvLyBU
aGlzIHdpbGwgZGlzYWJsZSBzY2FsZSBhbmltYXRpb24KLSAgICAgICAgZW5kRnJhbWUgPSBOU1pl
cm9SZWN0OwotICAgIH0KLSAgICAKLSAgICAvLyBXZSBoYXZlIHRvIHJldGFpbiBvdXJzZWx2ZXMg
YmVjYXVzZSB3ZSB3YW50IHRvIGJlIGFsaXZlIGZvciB0aGUgZW5kIG9mIHRoZSBhbmltYXRpb24u
Ci0gICAgLy8gSWYgb3VyIG93bmVyIHJlbGVhc2VzIHVzIHdlIGNvdWxkIGNyYXNoIGlmIHRoaXMg
aXMgbm90IHRoZSBjYXNlLgotICAgIC8vIEJhbGFuY2VkIGluIHdpbmRvd0RpZEV4aXRGdWxsc2Ny
ZWVuCi0gICAgW3NlbGYgcmV0YWluXTsgICAgCi0KLSAgICBOU1JlY3Qgc3RhcnRGcmFtZSA9IFtb
c2VsZiB3aW5kb3ddIGZyYW1lXTsKLSAgICBlbmRGcmFtZSA9IGZyYW1lRXhwYW5kZWRUb1JhdGlv
T2ZGcmFtZShlbmRGcmFtZSwgc3RhcnRGcmFtZSk7Ci0KLSAgICBbW3NlbGYgZnVsbHNjcmVlbldp
bmRvd10gYW5pbWF0ZUZyb21SZWN0OnN0YXJ0RnJhbWUgdG9SZWN0OmVuZEZyYW1lIHdpdGhTdWJB
bmltYXRpb246X2ZhZGVBbmltYXRpb24gY29udHJvbGxlckFjdGlvbjpAc2VsZWN0b3Iod2luZG93
RGlkRXhpdEZ1bGxzY3JlZW4pXTsKKyAgICAgICAgW3NlbGYgX3JlcXVlc3RFeGl0XTsKIH0KIAot
LSAodm9pZClhcHBsaWNhdGlvbkRpZENoYW5nZVNjcmVlblBhcmFtZXRlcnM6KE5TTm90aWZpY2F0
aW9uKilub3RpZmljYXRpb24KLXsKLSAgICBVTlVTRURfUEFSQU0obm90aWZpY2F0aW9uKTsKLSAg
ICAvLyBUaGUgdXNlciBtYXkgaGF2ZSBjaGFuZ2VkIHRoZSBtYWluIHNjcmVlbiBieSBtb3Zpbmcg
dGhlIG1lbnUgYmFyLCBvciB0aGV5IG1heSBoYXZlIGNoYW5nZWQKLSAgICAvLyB0aGUgRG9jaydz
IHNpemUgb3IgbG9jYXRpb24sIG9yIHRoZXkgbWF5IGhhdmUgY2hhbmdlZCB0aGUgZnVsbHNjcmVl
biBzY3JlZW4ncyBkaW1lbnNpb25zLiAgCi0gICAgLy8gVXBkYXRlIG91ciBwcmVzZW50YXRpb24g
cGFyYW1ldGVycywgYW5kIGVuc3VyZSB0aGF0IHRoZSBmdWxsIHNjcmVlbiB3aW5kb3cgb2NjdXBp
ZXMgdGhlIAotICAgIC8vIGVudGlyZSBzY3JlZW46Ci0gICAgW3NlbGYgdXBkYXRlTWVudUFuZERv
Y2tGb3JGdWxsc2NyZWVuXTsKLSAgICBbW3NlbGYgd2luZG93XSBzZXRGcmFtZTpbW1tzZWxmIHdp
bmRvd10gc2NyZWVuXSBmcmFtZV0gZGlzcGxheTpZRVNdOwotfQotCi0tICh2b2lkKXVwZGF0ZU1l
bnVBbmREb2NrRm9yRnVsbHNjcmVlbgotewotICAgIC8vIE5TQXBwbGljYXRpb25QcmVzZW50YXRp
b25PcHRpb25zIGlzIGF2YWlsYWJsZSBvbiA+IDEwLjYgb25seToKLSAgICBOU0FwcGxpY2F0aW9u
UHJlc2VudGF0aW9uT3B0aW9ucyBvcHRpb25zID0gTlNBcHBsaWNhdGlvblByZXNlbnRhdGlvbkRl
ZmF1bHQ7Ci0gICAgTlNTY3JlZW4qIGZ1bGxzY3JlZW5TY3JlZW4gPSBbW3NlbGYgd2luZG93XSBz
Y3JlZW5dOwotCi0gICAgaWYgKCFfaXNFbmRpbmdGdWxsc2NyZWVuKSB7Ci0gICAgICAgIC8vIEF1
dG8taGlkZSB0aGUgbWVudSBiYXIgaWYgdGhlIGZ1bGxzY3JlZW5TY3JlZW4gY29udGFpbnMgdGhl
IG1lbnUgYmFyOgotICAgICAgICAvLyBOT1RFOiBpZiB0aGUgZnVsbHNjcmVlblNjcmVlbiBjb250
YWlucyB0aGUgbWVudSBiYXIgYnV0IG5vdCB0aGUgZG9jaywgd2UgbXVzdCBzdGlsbCAKLSAgICAg
ICAgLy8gYXV0by1oaWRlIHRoZSBkb2NrLCBvciBhbiBleGNlcHRpb24gd2lsbCBiZSB0aHJvd24u
Ci0gICAgICAgIGlmIChbW05TU2NyZWVuIHNjcmVlbnNdIG9iamVjdEF0SW5kZXg6MF0gPT0gZnVs
bHNjcmVlblNjcmVlbikKLSAgICAgICAgICAgIG9wdGlvbnMgfD0gKE5TQXBwbGljYXRpb25QcmVz
ZW50YXRpb25BdXRvSGlkZU1lbnVCYXIgfCBOU0FwcGxpY2F0aW9uUHJlc2VudGF0aW9uQXV0b0hp
ZGVEb2NrKTsKLSAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGN1cnJlbnQgc2NyZWVuIGNvbnRhaW5z
IHRoZSBkb2NrIGJ5IGNvbXBhcmluZyB0aGUgc2NyZWVuJ3MgZnJhbWUgdG8gaXRzCi0gICAgICAg
IC8vIHZpc2libGVGcmFtZTsgaWYgYSBkb2NrIGlzIHByZXNlbnQsIHRoZSB2aXNpYmxlRnJhbWUg
d2lsbCBkaWZmZXIuIElmIHRoZSBjdXJyZW50IHNjcmVlbgotICAgICAgICAvLyBjb250YWlucyB0
aGUgZG9jaywgaGlkZSBpdC4KLSAgICAgICAgZWxzZSBpZiAoIU5TRXF1YWxSZWN0cyhbZnVsbHNj
cmVlblNjcmVlbiBmcmFtZV0sIFtmdWxsc2NyZWVuU2NyZWVuIHZpc2libGVGcmFtZV0pKQotICAg
ICAgICAgICAgb3B0aW9ucyB8PSBOU0FwcGxpY2F0aW9uUHJlc2VudGF0aW9uQXV0b0hpZGVEb2Nr
OwotICAgIH0KLQotICAgIE5TQXBwLnByZXNlbnRhdGlvbk9wdGlvbnMgPSBvcHRpb25zOwotfQot
Ci0vLyBNQVJLOiAtCi0vLyBNQVJLOiBXaW5kb3cgY2FsbGJhY2sKLQogLSAodm9pZClfcmVxdWVz
dEV4aXQKIHsKLSAgICBpZiAoX3ZpZGVvRWxlbWVudCkKLSAgICAgICAgX3ZpZGVvRWxlbWVudC0+
ZXhpdEZ1bGxzY3JlZW4oKTsKLSAgICBfZm9yY2VEaXNhYmxlQW5pbWF0aW9uID0gTk87Ci19Ci0K
LS0gKHZvaWQpcmVxdWVzdEV4aXRGdWxsc2NyZWVuV2l0aEFuaW1hdGlvbjooQk9PTClhbmltYXRp
b24KLXsKLSAgICBpZiAoX2lzRW5kaW5nRnVsbHNjcmVlbikKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgX2ZvcmNlRGlzYWJsZUFuaW1hdGlvbiA9ICFhbmltYXRpb247Ci0gICAgW3NlbGYgcGVyZm9y
bVNlbGVjdG9yOkBzZWxlY3RvcihfcmVxdWVzdEV4aXQpIHdpdGhPYmplY3Q6bmlsIGFmdGVyRGVs
YXk6MF07Ci0KKyAgICBbc2VsZi5mdWxsc2NyZWVuV2luZG93IGV4aXRGdWxsU2NyZWVuTW9kZTpz
ZWxmXTsKIH0KIAotLSAodm9pZClyZXF1ZXN0RXhpdEZ1bGxzY3JlZW4KKy0gKHZvaWQpX3JlcXVl
c3RFbnRlcgogewotICAgIFtzZWxmIHJlcXVlc3RFeGl0RnVsbHNjcmVlbldpdGhBbmltYXRpb246
WUVTXTsKKyAgICBpZiAoX3ZpZGVvRWxlbWVudCkKKyAgICAgICAgX3ZpZGVvRWxlbWVudC0+ZW50
ZXJGdWxsc2NyZWVuKCk7CiB9CiAKLS0gKHZvaWQpZmFkZUhVREluCistICh2b2lkKWNhbmNlbE9w
ZXJhdGlvbjooaWQpc2VuZGVyCiB7Ci0gICAgW19odWRDb250cm9sbGVyIGZhZGVXaW5kb3dJbl07
CisgICAgW3NlbGYgX3JlcXVlc3RFeGl0XTsKIH0KIAotLSAodm9pZClvYnNlcnZlVmFsdWVGb3JL
ZXlQYXRoOihOU1N0cmluZyAqKWtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5T
RGljdGlvbmFyeSAqKWNoYW5nZSBjb250ZXh0Oih2b2lkICopY29udGV4dAorLSAoQk9PTClwbGF5
ZXJWaWV3SXNGdWxsU2NyZWVuOihXZWJBVlBsYXllclZpZXcqKXBsYXllclZpZXcKIHsKLSAgICBV
TlVTRURfUEFSQU0ob2JqZWN0KTsKLSAgICBVTlVTRURfUEFSQU0oY2hhbmdlKTsKLSAgICBVTlVT
RURfUEFSQU0oY29udGV4dCk7Ci0KLSAgICBpZiAoW2tleVBhdGggaXNFcXVhbFRvOkAicmF0ZSJd
KQotICAgICAgICBbc2VsZiByYXRlQ2hhbmdlZDpuaWxdOworICAgIHJldHVybiBfaXNGdWxsU2Ny
ZWVuOwogfQogCi0tICh2b2lkKXJhdGVDaGFuZ2VkOihOU05vdGlmaWNhdGlvbiAqKXVudXNlZE5v
dGlmaWNhdGlvbgorLSAodm9pZClwbGF5ZXJWaWV3UmVxdWVzdEVudGVyRnVsbHNjcmVlbjooQVZQ
bGF5ZXJWaWV3KilwbGF5ZXJWaWV3CiB7Ci0gICAgVU5VU0VEX1BBUkFNKHVudXNlZE5vdGlmaWNh
dGlvbik7Ci0gICAgW19odWRDb250cm9sbGVyIHVwZGF0ZVJhdGVdOworICAgIFtzZWxmIF9yZXF1
ZXN0RW50ZXJdOwogfQogCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBXZWJWaWRlb0Z1bGxzY3Jl
ZW5XaW5kb3cKLQotLSAoaWQpaW5pdFdpdGhDb250ZW50UmVjdDooTlNSZWN0KWNvbnRlbnRSZWN0
IHN0eWxlTWFzazooTlNVSW50ZWdlcilhU3R5bGUgYmFja2luZzooTlNCYWNraW5nU3RvcmVUeXBl
KWJ1ZmZlcmluZ1R5cGUgZGVmZXI6KEJPT0wpZmxhZworLSAodm9pZClwbGF5ZXJWaWV3UmVxdWVz
dEV4aXRGdWxsc2NyZWVuOihBVlBsYXllclZpZXcqKXBsYXllclZpZXcKIHsKLSAgICBVTlVTRURf
UEFSQU0oYVN0eWxlKTsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRXaXRoQ29udGVudFJlY3Q6Y29u
dGVudFJlY3Qgc3R5bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01hc2sgYmFja2luZzpidWZmZXJp
bmdUeXBlIGRlZmVyOmZsYWddOwotICAgIGlmICghc2VsZikKLSAgICAgICAgcmV0dXJuIG5pbDsK
LSAgICBbc2VsZiBzZXRPcGFxdWU6Tk9dOwotICAgIFtzZWxmIHNldEJhY2tncm91bmRDb2xvcjpb
TlNDb2xvciBjbGVhckNvbG9yXV07Ci0gICAgW3NlbGYgc2V0SWdub3Jlc01vdXNlRXZlbnRzOk5P
XTsKLSAgICBbc2VsZiBzZXRBY2NlcHRzTW91c2VNb3ZlZEV2ZW50czpZRVNdOwotICAgIHJldHVy
biBzZWxmOworICAgIFtzZWxmIF9yZXF1ZXN0RXhpdF07CiB9CiAKLS0gKHZvaWQpZGVhbGxvYwor
LSAobnVsbGFibGUgTlNBcnJheTxOU1dpbmRvdyAqPiAqKWN1c3RvbVdpbmRvd3NUb0VudGVyRnVs
bFNjcmVlbkZvcldpbmRvdzooTlNXaW5kb3cgKil3aW5kb3cKIHsKLSAgICBBU1NFUlQoIV9mdWxs
c2NyZWVuQW5pbWF0aW9uKTsKLSAgICBbc3VwZXIgZGVhbGxvY107CisgICAgcmV0dXJuIEBbc2Vs
Zi5mdWxsc2NyZWVuV2luZG93XTsKIH0KIAotLSAoQk9PTClyZXNpZ25GaXJzdFJlc3BvbmRlcgor
LSAodm9pZCl3aW5kb3c6KE5TV2luZG93ICopd2luZG93IHN0YXJ0Q3VzdG9tQW5pbWF0aW9uVG9F
bnRlckZ1bGxTY3JlZW5XaXRoRHVyYXRpb246KE5TVGltZUludGVydmFsKWR1cmF0aW9uCiB7Ci0g
ICAgcmV0dXJuIE5POworICAgIFtOU0FuaW1hdGlvbkNvbnRleHQgcnVuQW5pbWF0aW9uR3JvdXA6
XihOU0FuaW1hdGlvbkNvbnRleHQgKmNvbnRleHQpIHsKKyAgICAgICAgY29udGV4dC5hbGxvd3NJ
bXBsaWNpdEFuaW1hdGlvbiA9IFlFUzsKKyAgICAgICAgY29udGV4dC5kdXJhdGlvbiA9IGR1cmF0
aW9uOworICAgICAgICBbd2luZG93IHNldEZyYW1lOndpbmRvdy5zY3JlZW4uZnJhbWUgZGlzcGxh
eTpZRVNdOworICAgIH0gY29tcGxldGlvbkhhbmRsZXI6TlVMTF07CiB9CiAKLS0gKEJPT0wpY2Fu
QmVjb21lS2V5V2luZG93CistIChudWxsYWJsZSBOU0FycmF5PE5TV2luZG93ICo+ICopY3VzdG9t
V2luZG93c1RvRXhpdEZ1bGxTY3JlZW5Gb3JXaW5kb3c6KE5TV2luZG93ICopd2luZG93CiB7Ci0g
ICAgcmV0dXJuIE5POworICAgIHJldHVybiBAW3NlbGYuZnVsbHNjcmVlbldpbmRvd107CiB9CiAK
LS0gKHZvaWQpbW91c2VEb3duOihOU0V2ZW50ICopZXZlbnQKKy0gKHZvaWQpd2luZG93OihOU1dp
bmRvdyAqKXdpbmRvdyBzdGFydEN1c3RvbUFuaW1hdGlvblRvRXhpdEZ1bGxTY3JlZW5XaXRoRHVy
YXRpb246KE5TVGltZUludGVydmFsKWR1cmF0aW9uCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGV2ZW50
KTsKKyAgICBbTlNBbmltYXRpb25Db250ZXh0IHJ1bkFuaW1hdGlvbkdyb3VwOl4oTlNBbmltYXRp
b25Db250ZXh0ICpjb250ZXh0KSB7CisgICAgICAgIGNvbnRleHQuYWxsb3dzSW1wbGljaXRBbmlt
YXRpb24gPSBZRVM7CisgICAgICAgIGNvbnRleHQuZHVyYXRpb24gPSBkdXJhdGlvbjsKKyAgICAg
ICAgW3dpbmRvdyBzZXRGcmFtZTpzZWxmLnZpZGVvRWxlbWVudFJlY3QgZGlzcGxheTpZRVNdOwor
ICAgIH0gY29tcGxldGlvbkhhbmRsZXI6TlVMTF07CiB9CiAKLS0gKHZvaWQpY2FuY2VsT3BlcmF0
aW9uOihpZClzZW5kZXIKKy0gKHZvaWQpd2luZG93RGlkRW50ZXJGdWxsU2NyZWVuOihOU05vdGlm
aWNhdGlvbiAqKW5vdGlmaWNhdGlvbgogewotICAgIFVOVVNFRF9QQVJBTShzZW5kZXIpOwotICAg
IFtbc2VsZiB3aW5kb3dDb250cm9sbGVyXSByZXF1ZXN0RXhpdEZ1bGxzY3JlZW5dOworICAgIF9w
bGF5ZXJWaWV3LmNvbnRyb2xzU3R5bGUgPSBBVlBsYXllclZpZXdDb250cm9sc1N0eWxlRmxvYXRp
bmc7CisgICAgW19wbGF5ZXJWaWV3IHdpbGxDaGFuZ2VWYWx1ZUZvcktleTpAImlzRnVsbFNjcmVl
biJdOworICAgIF9pc0Z1bGxTY3JlZW4gPSBZRVM7CisgICAgW19wbGF5ZXJWaWV3IGRpZENoYW5n
ZVZhbHVlRm9yS2V5OkAiaXNGdWxsU2NyZWVuIl07CiB9CiAKLS0gKHZvaWQpYW5pbWF0ZWRSZXNp
emVEaWRFbmQKKy0gKHZvaWQpd2luZG93V2lsbEV4aXRGdWxsU2NyZWVuOihOU05vdGlmaWNhdGlv
biAqKW5vdGlmaWNhdGlvbgogewotICAgIGlmIChfY29udHJvbGxlckFjdGlvbk9uQW5pbWF0aW9u
RW5kKQotICAgICAgICBbW3NlbGYgd2luZG93Q29udHJvbGxlcl0gcGVyZm9ybVNlbGVjdG9yOl9j
b250cm9sbGVyQWN0aW9uT25BbmltYXRpb25FbmRdOwotICAgIF9jb250cm9sbGVyQWN0aW9uT25B
bmltYXRpb25FbmQgPSBOVUxMOworICAgIF9wbGF5ZXJWaWV3LmNvbnRyb2xzU3R5bGUgPSBBVlBs
YXllclZpZXdDb250cm9sc1N0eWxlTm9uZTsKIH0KIAotLy8KLS8vIFRoaXMgZnVuY3Rpb24gd2ls
bCBhbmltYXRlIGEgY2hhbmdlIG9mIGZyYW1lIHJlY3RhbmdsZQotLy8gV2Ugc3VwcG9ydCBxdWV1
aW5nIGFuaW1hdGlvbiwgdGhhdCBtZWFucyB0aGF0IHdlJ2xsIGNvcnJlY3RseQotLy8gaW50ZXJy
dXB0IHRoZSBydW5uaW5nIGFuaW1hdGlvbiwgYW5kIHF1ZXVlIHRoZSBuZXh0IG9uZS4KLS8vCi0t
ICh2b2lkKWFuaW1hdGVGcm9tUmVjdDooTlNSZWN0KXN0YXJ0UmVjdCB0b1JlY3Q6KE5TUmVjdCll
bmRSZWN0IHdpdGhTdWJBbmltYXRpb246KE5TQW5pbWF0aW9uICopc3ViQW5pbWF0aW9uIGNvbnRy
b2xsZXJBY3Rpb246KFNFTCljb250cm9sbGVyQWN0aW9uCistICh2b2lkKXdpbmRvd0RpZEV4aXRG
dWxsU2NyZWVuOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgogewotICAgIF9jb250cm9s
bGVyQWN0aW9uT25BbmltYXRpb25FbmQgPSBjb250cm9sbGVyQWN0aW9uOwotCi0gICAgQk9PTCB3
YXNBbmltYXRpbmcgPSBOTzsKLSAgICBpZiAoX2Z1bGxzY3JlZW5BbmltYXRpb24pIHsKLSAgICAg
ICAgd2FzQW5pbWF0aW5nID0gWUVTOworICAgIFtfcGxheWVyVmlldyB3aWxsQ2hhbmdlVmFsdWVG
b3JLZXk6QCJpc0Z1bGxTY3JlZW4iXTsKKyAgICBfaXNGdWxsU2NyZWVuID0gTk87CisgICAgW19w
bGF5ZXJWaWV3IGRpZENoYW5nZVZhbHVlRm9yS2V5OkAiaXNGdWxsU2NyZWVuIl07CiAKLSAgICAg
ICAgLy8gSW50ZXJydXB0IGFueSBydW5uaW5nIGFuaW1hdGlvbi4KLSAgICAgICAgW19mdWxsc2Ny
ZWVuQW5pbWF0aW9uIHN0b3BBbmltYXRpb25dOwotCi0gICAgICAgIC8vIFNhdmUgdGhlIGN1cnJl
bnQgcmVjdCB0byBlbnN1cmUgYSBzbW9vdGggdHJhbnNpdGlvbi4KLSAgICAgICAgc3RhcnRSZWN0
ID0gW19mdWxsc2NyZWVuQW5pbWF0aW9uIGN1cnJlbnRGcmFtZV07Ci0gICAgICAgIFtfZnVsbHNj
cmVlbkFuaW1hdGlvbiByZWxlYXNlXTsKLSAgICAgICAgX2Z1bGxzY3JlZW5BbmltYXRpb24gPSBu
aWw7Ci0gICAgfQotICAgIAotICAgIGlmIChOU0lzRW1wdHlSZWN0KHN0YXJ0UmVjdCkgfHwgTlNJ
c0VtcHR5UmVjdChlbmRSZWN0KSkgewotICAgICAgICAvLyBGYWtlbHkgZW5kIHRoZSBzdWJhbmlt
YXRpb24uCi0gICAgICAgIFtzdWJBbmltYXRpb24gc2V0Q3VycmVudFByb2dyZXNzOjFdOwotICAg
ICAgICAvLyBBbmQgcmVtb3ZlIHRoZSB3ZWFrIGxpbmsgdG8gdGhlIHdpbmRvdy4KLSAgICAgICAg
W3N1YkFuaW1hdGlvbiBzdG9wQW5pbWF0aW9uXTsKLQotICAgICAgICBbc2VsZiBzZXRGcmFtZTpl
bmRSZWN0IGRpc3BsYXk6Tk9dOwotICAgICAgICBbc2VsZiBtYWtlS2V5QW5kT3JkZXJGcm9udDpz
ZWxmXTsKLSAgICAgICAgW3NlbGYgYW5pbWF0ZWRSZXNpemVEaWRFbmRdOworICAgIGlmICghX3Zp
ZGVvRWxlbWVudCkgeworICAgICAgICBbc2VsZi5mdWxsc2NyZWVuV2luZG93IGNsb3NlXTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICghd2FzQW5pbWF0aW5nKSB7Ci0gICAgICAg
IC8vIFdlJ2xsIGRvd25zY2FsZSB0aGUgd2luZG93IGR1cmluZyB0aGUgYW5pbWF0aW9uIGJhc2Vk
IG9uIHRoZSBoaWdoZXIgcmVzb2x1dGlvbiByZWN0Ci0gICAgICAgIEJPT0wgaGlnaGVyUmVzb2x1
dGlvbklzRW5kUmVjdCA9IHN0YXJ0UmVjdC5zaXplLndpZHRoIDwgZW5kUmVjdC5zaXplLndpZHRo
ICYmIHN0YXJ0UmVjdC5zaXplLmhlaWdodCA8IGVuZFJlY3Quc2l6ZS5oZWlnaHQ7Ci0gICAgICAg
IFtzZWxmIHNldEZyYW1lOmhpZ2hlclJlc29sdXRpb25Jc0VuZFJlY3QgPyBlbmRSZWN0IDogc3Rh
cnRSZWN0IGRpc3BsYXk6Tk9dOwotICAgIH0KLSAgICAKLSAgICBBU1NFUlQoIV9mdWxsc2NyZWVu
QW5pbWF0aW9uKTsKLSAgICBfZnVsbHNjcmVlbkFuaW1hdGlvbiA9IFtbV2ViV2luZG93U2NhbGVB
bmltYXRpb24gYWxsb2NdIGluaXRXaXRoSGludGVkRHVyYXRpb246MC4yIHdpbmRvdzpzZWxmIGlu
aXRhbEZyYW1lOnN0YXJ0UmVjdCBmaW5hbEZyYW1lOmVuZFJlY3RdOwotICAgIFtfZnVsbHNjcmVl
bkFuaW1hdGlvbiBzZXRTdWJBbmltYXRpb246c3ViQW5pbWF0aW9uXTsKLSAgICBbX2Z1bGxzY3Jl
ZW5BbmltYXRpb24gc2V0RGVsZWdhdGU6c2VsZl07Ci0gICAgCi0gICAgLy8gTWFrZSBzdXJlIHRo
ZSBhbmltYXRpb24gaGFzIHNjYWxlZCB0aGUgd2luZG93IGJlZm9yZSBzaG93aW5nIGl0LgotICAg
IFtfZnVsbHNjcmVlbkFuaW1hdGlvbiBzZXRDdXJyZW50UHJvZ3Jlc3M6MF07Ci0gICAgW3NlbGYg
bWFrZUtleUFuZE9yZGVyRnJvbnQ6c2VsZl07Ci0KLSAgICBbX2Z1bGxzY3JlZW5BbmltYXRpb24g
c3RhcnRBbmltYXRpb25dOwotfQotCi0tICh2b2lkKWFuaW1hdGlvbkRpZEVuZDooTlNBbmltYXRp
b24gKilhbmltYXRpb24KLXsKLSAgICBpZiAoIVtOU1RocmVhZCBpc01haW5UaHJlYWRdKSB7Ci0g
ICAgICAgIFtzZWxmIHBlcmZvcm1TZWxlY3Rvck9uTWFpblRocmVhZDpAc2VsZWN0b3IoYW5pbWF0
aW9uRGlkRW5kOikgd2l0aE9iamVjdDphbmltYXRpb24gd2FpdFVudGlsRG9uZTpOT107Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGFuaW1hdGlvbiAhPSBfZnVsbHNjcmVlbkFuaW1h
dGlvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gVGhlIGFuaW1hdGlvbiBpcyBub3QgcmVh
bGx5IG92ZXIgYW5kIHdhcyBpbnRlcnJ1cHRlZAotICAgIC8vIERvbid0IHNlbmQgY29tcGxldGlv
biBldmVudHMuCi0gICAgaWYgKFthbmltYXRpb24gY3VycmVudFByb2dyZXNzXSA8IDEuMCkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgLy8gRW5zdXJlIHRoYXQgYW5pbWF0aW9uIChhbmQgc3ViYW5p
bWF0aW9uKSBkb24ndCBrZWVwCi0gICAgLy8gdGhlIHdlYWsgcmVmZXJlbmNlIHRvIHRoZSB3aW5k
b3cgaXZhciB0aGF0IG1heSBiZSBkZXN0cm95ZWQgZnJvbQotICAgIC8vIG5vdyBvbi4KLSAgICBb
X2Z1bGxzY3JlZW5BbmltYXRpb24gc2V0V2luZG93Om5pbF07Ci0KLSAgICBbX2Z1bGxzY3JlZW5B
bmltYXRpb24gYXV0b3JlbGVhc2VdOwotICAgIF9mdWxsc2NyZWVuQW5pbWF0aW9uID0gbmlsOwot
Ci0gICAgW3NlbGYgYW5pbWF0ZWRSZXNpemVEaWRFbmRdOwotfQotCi0tICh2b2lkKW1vdXNlTW92
ZWQ6KE5TRXZlbnQgKilldmVudAotewotICAgIFVOVVNFRF9QQVJBTShldmVudCk7Ci0gICAgW1tz
ZWxmIHdpbmRvd0NvbnRyb2xsZXJdIGZhZGVIVURJbl07CisgICAgW05TQW5pbWF0aW9uQ29udGV4
dCBiZWdpbkdyb3VwaW5nXTsKKyAgICBfdmlkZW9FbGVtZW50LT5zZXRWaWRlb0Z1bGxzY3JlZW5M
YXllcihuaWwsIFtzZWxmLCBwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpXSB7CisgICAg
ICAgIFtzZWxmLmZ1bGxzY3JlZW5XaW5kb3cgY2xvc2VdOworICAgICAgICBbTlNBbmltYXRpb25D
b250ZXh0IGVuZEdyb3VwaW5nXTsKKyAgICB9KTsKKyAgICBfdmlkZW9FbGVtZW50LT5leGl0RnVs
bHNjcmVlbigpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIuaCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29u
dHJvbGxlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZjE4NGFkNDEwNmZjMTc4
YjY3MjY2NTkyNWZiN2JkZmVhYmM1MmQ1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlkZW9G
dWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpZiBFTkFCTEUoVklERU8pCi0KLSNpbXBvcnQgPEFwcEtpdC9O
U0J1dHRvbi5oPgotI2ltcG9ydCA8QXBwS2l0L05TQ29udHJvbC5oPgotI2ltcG9ydCA8QXBwS2l0
L05TVGV4dEZpZWxkLmg+Ci0jaW1wb3J0IDxBcHBLaXQvTlNUcmFja2luZ0FyZWEuaD4KLSNpbXBv
cnQgPEFwcEtpdC9OU1dpbmRvdy5oPgotI2ltcG9ydCA8QXBwS2l0L05TV2luZG93Q29udHJvbGxl
ci5oPgotI2ltcG9ydCA8d3RmL05ha2VkUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNs
YXNzIEhUTUxWaWRlb0VsZW1lbnQ7Ci19Ci0KLUBwcm90b2NvbCBXZWJWaWRlb0Z1bGxzY3JlZW5I
VURXaW5kb3dDb250cm9sbGVyRGVsZWdhdGU7Ci0KLUBpbnRlcmZhY2UgV2ViVmlkZW9GdWxsc2Ny
ZWVuSFVEV2luZG93Q29udHJvbGxlciA6IE5TV2luZG93Q29udHJvbGxlciB7Ci0gICAgaWQgPFdl
YlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXJEZWxlZ2F0ZT4gX2RlbGVnYXRlOwot
ICAgIE5TVGltZXIgKl90aW1lbGluZVVwZGF0ZVRpbWVyOwotICAgIE5TVHJhY2tpbmdBcmVhICpf
YXJlYTsKLSAgICBCT09MIF9tb3VzZUlzSW5IVUQ7Ci0gICAgQk9PTCBfaXNFbmRpbmdGdWxsc2Ny
ZWVuOwotICAgIEJPT0wgX2lzU2NydWJiaW5nOwotCi0gICAgTlNDb250cm9sICpfdGltZWxpbmU7
Ci0gICAgTlNUZXh0RmllbGQgKl9yZW1haW5pbmdUaW1lVGV4dDsKLSAgICBOU1RleHRGaWVsZCAq
X2VsYXBzZWRUaW1lVGV4dDsKLSAgICBOU0NvbnRyb2wgKl92b2x1bWVTbGlkZXI7Ci0gICAgTlNC
dXR0b24gKl9wbGF5QnV0dG9uOwotfQotCi0tIChpZCA8V2ViVmlkZW9GdWxsc2NyZWVuSFVEV2lu
ZG93Q29udHJvbGxlckRlbGVnYXRlPilkZWxlZ2F0ZTsKLS0gKHZvaWQpc2V0RGVsZWdhdGU6KGlk
IDxXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyRGVsZWdhdGU+KWRlbGVnYXRl
OwotLSAodm9pZClmYWRlV2luZG93SW47Ci0tICh2b2lkKWZhZGVXaW5kb3dPdXQ7Ci0tICh2b2lk
KWNsb3NlV2luZG93OwotLSAodm9pZCl1cGRhdGVSYXRlOwotCi1AZW5kCi0KLUBwcm90b2NvbCBX
ZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyRGVsZWdhdGUgPE5TT2JqZWN0Pgot
LSAodm9pZClyZXF1ZXN0RXhpdEZ1bGxzY3JlZW47Ci0tIChOYWtlZFB0cjxXZWJDb3JlOjpIVE1M
VmlkZW9FbGVtZW50Pil2aWRlb0VsZW1lbnQ7Ci1AZW5kCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5k
b3dDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWRl
b0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBhZTdlNGEyOGEwOGJhMTk4Mjk4YTFkODQ4MjYwMmJmN2I1ZjJiMThlLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5tbQor
KysgL2Rldi9udWxsCkBAIC0xLDczNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5
LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZiBFTkFCTEUo
VklERU8pICYmIFBMQVRGT1JNKE1BQykKLQotI2ltcG9ydCAiV2ViVmlkZW9GdWxsc2NyZWVuSFVE
V2luZG93Q29udHJvbGxlci5oIgotCi0jaW1wb3J0IDxXZWJDb3JlL0Zsb2F0Q29udmVyc2lvbi5o
PgotI2ltcG9ydCA8V2ViQ29yZS9IVE1MVmlkZW9FbGVtZW50Lmg+Ci0jaW1wb3J0IDxwYWwvc3Bp
L2NnL0NvcmVHcmFwaGljc1NQSS5oPgotI2ltcG9ydCA8cGFsL3NwaS9tYWMvUVRLaXRTUEkuaD4K
LSNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgotCi1TT0ZUX0xJTktfRlJBTUVXT1JLX09QVElP
TkFMKFFUS2l0KQotCi1TT0ZUX0xJTktfQ0xBU1NfT1BUSU9OQUwoUVRLaXQsIFFUSFVEQmFja2dy
b3VuZFZpZXcpCi1TT0ZUX0xJTktfQ0xBU1NfT1BUSU9OQUwoUVRLaXQsIFFUSFVEQnV0dG9uKQot
U09GVF9MSU5LX0NMQVNTX09QVElPTkFMKFFUS2l0LCBRVEhVRFNsaWRlcikKLVNPRlRfTElOS19D
TEFTU19PUFRJT05BTChRVEtpdCwgUVRIVURUaW1lbGluZSkKLQotI2RlZmluZSBRVEhVREJhY2tn
cm91bmRWaWV3IGdldFFUSFVEQmFja2dyb3VuZFZpZXdDbGFzcygpCi0jZGVmaW5lIFFUSFVEQnV0
dG9uIGdldFFUSFVEQnV0dG9uQ2xhc3MoKQotI2RlZmluZSBRVEhVRFNsaWRlciBnZXRRVEhVRFNs
aWRlckNsYXNzKCkKLSNkZWZpbmUgUVRIVURUaW1lbGluZSBnZXRRVEhVRFRpbWVsaW5lQ2xhc3Mo
KQotCi1lbnVtIGNsYXNzIE1lZGlhVUlDb250cm9sIHsKLSAgICBUaW1lbGluZSwKLSAgICBTbGlk
ZXIsCi0gICAgUGxheVBhdXNlQnV0dG9uLAotICAgIEV4aXRGdWxsc2NyZWVuQnV0dG9uLAotICAg
IFJld2luZEJ1dHRvbiwKLSAgICBGYXN0Rm9yd2FyZEJ1dHRvbiwKLSAgICBWb2x1bWVVcEJ1dHRv
biwKLSAgICBWb2x1bWVEb3duQnV0dG9uLAotfTsKLQotdXNpbmcgV2ViQ29yZTo6SFRNTFZpZGVv
RWxlbWVudDsKLXVzaW5nIFdlYkNvcmU6Om5hcnJvd1ByZWNpc2lvblRvRmxvYXQ7Ci0KLUBpbnRl
cmZhY2UgV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlciAoUHJpdmF0ZSkgPE5T
V2luZG93RGVsZWdhdGU+Ci0KLS0gKHZvaWQpdXBkYXRlVGltZTsKLS0gKHZvaWQpdGltZWxpbmVQ
b3NpdGlvbkNoYW5nZWQ6KGlkKXNlbmRlcjsKLS0gKGZsb2F0KWN1cnJlbnRUaW1lOwotLSAodm9p
ZClzZXRDdXJyZW50VGltZTooZmxvYXQpY3VycmVudFRpbWU7Ci0tIChkb3VibGUpZHVyYXRpb247
Ci0KLS0gKHZvaWQpdm9sdW1lQ2hhbmdlZDooaWQpc2VuZGVyOwotLSAoZmxvYXQpbWF4Vm9sdW1l
OwotLSAoZmxvYXQpdm9sdW1lOwotLSAodm9pZClzZXRWb2x1bWU6KGZsb2F0KXZvbHVtZTsKLS0g
KHZvaWQpZGVjcmVtZW50Vm9sdW1lOwotLSAodm9pZClpbmNyZW1lbnRWb2x1bWU7Ci0KLS0gKHZv
aWQpdXBkYXRlUGxheUJ1dHRvbjsKLS0gKHZvaWQpdG9nZ2xlUGxheWluZzooaWQpc2VuZGVyOwot
LSAoQk9PTClwbGF5aW5nOwotLSAodm9pZClzZXRQbGF5aW5nOihCT09MKXBsYXlpbmc7Ci0KLS0g
KHZvaWQpcmV3aW5kOihpZClzZW5kZXI7Ci0tICh2b2lkKWZhc3RGb3J3YXJkOihpZClzZW5kZXI7
Ci0KLS0gKE5TU3RyaW5nICopcmVtYWluaW5nVGltZVRleHQ7Ci0tIChOU1N0cmluZyAqKWVsYXBz
ZWRUaW1lVGV4dDsKLQotLSAodm9pZClleGl0RnVsbHNjcmVlbjooaWQpc2VuZGVyOwotQGVuZAot
Ci1AaW50ZXJmYWNlIFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvdyA6IE5TV2luZG93Ci1AZW5k
Ci0KLUBpbXBsZW1lbnRhdGlvbiBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3cKLQotLSAoaWQp
aW5pdFdpdGhDb250ZW50UmVjdDooTlNSZWN0KWNvbnRlbnRSZWN0IHN0eWxlTWFzazooTlNVSW50
ZWdlcilhU3R5bGUgYmFja2luZzooTlNCYWNraW5nU3RvcmVUeXBlKWJ1ZmZlcmluZ1R5cGUgZGVm
ZXI6KEJPT0wpZmxhZwotewotICAgIFVOVVNFRF9QQVJBTShhU3R5bGUpOwotICAgIHNlbGYgPSBb
c3VwZXIgaW5pdFdpdGhDb250ZW50UmVjdDpjb250ZW50UmVjdCBzdHlsZU1hc2s6TlNXaW5kb3dT
dHlsZU1hc2tCb3JkZXJsZXNzIGJhY2tpbmc6YnVmZmVyaW5nVHlwZSBkZWZlcjpmbGFnXTsKLSAg
ICBpZiAoIXNlbGYpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBbc2VsZiBzZXRPcGFxdWU6
Tk9dOwotICAgIFtzZWxmIHNldEJhY2tncm91bmRDb2xvcjpbTlNDb2xvciBjbGVhckNvbG9yXV07
Ci0gICAgW3NlbGYgc2V0TGV2ZWw6TlNQb3BVcE1lbnVXaW5kb3dMZXZlbF07Ci0gICAgW3NlbGYg
c2V0QWNjZXB0c01vdXNlTW92ZWRFdmVudHM6WUVTXTsKLSAgICBbc2VsZiBzZXRJZ25vcmVzTW91
c2VFdmVudHM6Tk9dOwotICAgIFtzZWxmIHNldE1vdmFibGVCeVdpbmRvd0JhY2tncm91bmQ6WUVT
XTsKLQotICAgIHJldHVybiBzZWxmOwotfQotCi0tIChCT09MKWNhbkJlY29tZUtleVdpbmRvdwot
ewotICAgIHJldHVybiBZRVM7Ci19Ci0KLS0gKHZvaWQpY2FuY2VsT3BlcmF0aW9uOihpZClzZW5k
ZXIKLXsKLSAgICBVTlVTRURfUEFSQU0oc2VuZGVyKTsKLSAgICBbW3NlbGYgd2luZG93Q29udHJv
bGxlcl0gZXhpdEZ1bGxzY3JlZW46c2VsZl07Ci19Ci0KLS0gKHZvaWQpY2VudGVyCi17Ci0gICAg
TlNSZWN0IGh1ZEZyYW1lID0gW3NlbGYgZnJhbWVdOwotICAgIE5TUmVjdCBzY3JlZW5GcmFtZSA9
IFtbTlNTY3JlZW4gbWFpblNjcmVlbl0gZnJhbWVdOwotICAgIFtzZWxmIHNldEZyYW1lVG9wTGVm
dFBvaW50Ok5TTWFrZVBvaW50KHNjcmVlbkZyYW1lLm9yaWdpbi54ICsgKHNjcmVlbkZyYW1lLnNp
emUud2lkdGggLSBodWRGcmFtZS5zaXplLndpZHRoKSAvIDIsIHNjcmVlbkZyYW1lLm9yaWdpbi55
ICsgKHNjcmVlbkZyYW1lLnNpemUuaGVpZ2h0IC0gaHVkRnJhbWUuc2l6ZS5oZWlnaHQpIC8gNild
OwotfQotCi0tICh2b2lkKWtleURvd246KE5TRXZlbnQgKilldmVudAotewotICAgIFtzdXBlciBr
ZXlEb3duOmV2ZW50XTsKLSAgICBbW3NlbGYgd2luZG93Q29udHJvbGxlcl0gZmFkZVdpbmRvd0lu
XTsKLX0KLQotLSAoQk9PTClyZXNpZ25GaXJzdFJlc3BvbmRlcgotewotICAgIHJldHVybiBOTzsK
LX0KLQotLSAoQk9PTClwZXJmb3JtS2V5RXF1aXZhbGVudDooTlNFdmVudCAqKWV2ZW50Ci17Ci0g
ICAgLy8gQmxvY2sgYWxsIGNvbW1hbmQga2V5IGV2ZW50cyB3aGlsZSB0aGUgZnVsbHNjcmVlbiB3
aW5kb3cgaXMgdXAuCi0gICAgaWYgKFtldmVudCB0eXBlXSAhPSBOU0V2ZW50VHlwZUtleURvd24p
Ci0gICAgICAgIHJldHVybiBOTzsKLSAgICAKLSAgICBpZiAoIShbZXZlbnQgbW9kaWZpZXJGbGFn
c10gJiBOU0V2ZW50TW9kaWZpZXJGbGFnQ29tbWFuZCkpCi0gICAgICAgIHJldHVybiBOTzsKLSAg
ICByZXR1cm4gWUVTOwotfQotCi1AZW5kCi0KLXN0YXRpYyBjb25zdCBDR0Zsb2F0IHdpbmRvd0hl
aWdodCA9IDU5Owotc3RhdGljIGNvbnN0IENHRmxvYXQgd2luZG93V2lkdGggPSA0Mzg7Ci0KLXN0
YXRpYyBjb25zdCBOU1RpbWVJbnRlcnZhbCBIVURXaW5kb3dGYWRlT3V0RGVsYXkgPSAzOwotCi1A
aW1wbGVtZW50YXRpb24gV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlcgotCi0t
IChpZClpbml0Ci17Ci0gICAgTlNXaW5kb3cgKndpbmRvdyA9IFtbV2ViVmlkZW9GdWxsc2NyZWVu
SFVEV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0Ok5TTWFrZVJlY3QoMCwgMCwgd2lu
ZG93V2lkdGgsIHdpbmRvd0hlaWdodCkgc3R5bGVNYXNrOk5TV2luZG93U3R5bGVNYXNrQm9yZGVy
bGVzcyBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6Tk9dOwotICAgIHNlbGYg
PSBbc3VwZXIgaW5pdFdpdGhXaW5kb3c6d2luZG93XTsKLSAgICBbd2luZG93IHNldERlbGVnYXRl
OnNlbGZdOwotICAgIFt3aW5kb3cgcmVsZWFzZV07Ci0gICAgaWYgKCFzZWxmKQotICAgICAgICBy
ZXR1cm4gbmlsOwotICAgIFtzZWxmIHdpbmRvd0RpZExvYWRdOwotICAgIHJldHVybiBzZWxmOwot
fQotCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBBU1NFUlQoIV90aW1lbGluZVVwZGF0ZVRpbWVy
KTsKLSAgICBBU1NFUlQoIV9hcmVhKTsKLSAgICBBU1NFUlQoIV9pc1NjcnViYmluZyk7Ci0gICAg
W190aW1lbGluZSByZWxlYXNlXTsKLSAgICBbX3JlbWFpbmluZ1RpbWVUZXh0IHJlbGVhc2VdOwot
ICAgIFtfZWxhcHNlZFRpbWVUZXh0IHJlbGVhc2VdOwotICAgIFtfdm9sdW1lU2xpZGVyIHJlbGVh
c2VdOwotICAgIFtfcGxheUJ1dHRvbiByZWxlYXNlXTsKLSAgICBbc3VwZXIgZGVhbGxvY107Ci19
Ci0KLS0gKHZvaWQpc2V0QXJlYTooTlNUcmFja2luZ0FyZWEgKilhcmVhCi17Ci0gICAgaWYgKGFy
ZWEgPT0gX2FyZWEpCi0gICAgICAgIHJldHVybjsKLSAgICBbX2FyZWEgcmVsZWFzZV07Ci0gICAg
X2FyZWEgPSBbYXJlYSByZXRhaW5dOwotfQotCi0tICh2b2lkKWtleURvd246KE5TRXZlbnQgKill
dmVudAotewotICAgIE5TU3RyaW5nICpjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMgPSBbZXZl
bnQgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzXTsKLSAgICBpZiAoW2NoYXJhY3RlcnNJZ25v
cmluZ01vZGlmaWVycyBsZW5ndGhdID09IDEpIHsKLSAgICAgICAgc3dpdGNoIChbY2hhcmFjdGVy
c0lnbm9yaW5nTW9kaWZpZXJzIGNoYXJhY3RlckF0SW5kZXg6MF0pIHsKLSAgICAgICAgY2FzZSAn
ICc6Ci0gICAgICAgICAgICBbc2VsZiB0b2dnbGVQbGF5aW5nOm5pbF07Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIGNhc2UgTlNVcEFycm93RnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICBp
ZiAoW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNFdmVudE1vZGlmaWVyRmxhZ09wdGlvbikKLSAg
ICAgICAgICAgICAgICBbc2VsZiBzZXRWb2x1bWU6W3NlbGYgbWF4Vm9sdW1lXV07Ci0gICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgW3NlbGYgaW5jcmVtZW50Vm9sdW1lXTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgY2FzZSBOU0Rvd25BcnJvd0Z1bmN0aW9uS2V5OgotICAg
ICAgICAgICAgaWYgKFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TRXZlbnRNb2RpZmllckZsYWdP
cHRpb24pCi0gICAgICAgICAgICAgICAgW3NlbGYgc2V0Vm9sdW1lOjBdOwotICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgIFtzZWxmIGRlY3JlbWVudFZvbHVtZV07Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fQotICAgIH0KLQotICAgIFtzdXBlciBrZXlEb3duOmV2ZW50XTsKLX0KLQotLSAoaWQgPFdlYlZp
ZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXJEZWxlZ2F0ZT4pZGVsZWdhdGUKLXsKLSAg
ICByZXR1cm4gX2RlbGVnYXRlOwotfQotCi0tICh2b2lkKXNldERlbGVnYXRlOihpZCA8V2ViVmlk
ZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlckRlbGVnYXRlPilkZWxlZ2F0ZQotewotICAg
IF9kZWxlZ2F0ZSA9IGRlbGVnYXRlOwotfQotCi0tICh2b2lkKXNjaGVkdWxlVGltZVVwZGF0ZQot
ewotICAgIFtOU09iamVjdCBjYW5jZWxQcmV2aW91c1BlcmZvcm1SZXF1ZXN0c1dpdGhUYXJnZXQ6
c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IodW5zY2hlZHVsZVRpbWVVcGRhdGUpIG9iamVjdDpzZWxm
XTsKLQotICAgIC8vIEZpcnN0LCB1cGRhdGUgcmlnaHQgYXdheSwgdGhlbiBzY2hlZHVsZSBmdXR1
cmUgdXBkYXRlCi0gICAgW3NlbGYgdXBkYXRlVGltZV07Ci0gICAgW3NlbGYgdXBkYXRlUGxheUJ1
dHRvbl07Ci0KLSAgICBbX3RpbWVsaW5lVXBkYXRlVGltZXIgaW52YWxpZGF0ZV07Ci0gICAgW190
aW1lbGluZVVwZGF0ZVRpbWVyIHJlbGVhc2VdOwotCi0gICAgLy8gTm90ZSB0aGF0IHRoaXMgY3Jl
YXRlcyBhIHJldGFpbiBjeWNsZSBiZXR3ZWVuIHRoZSB3aW5kb3cgYW5kIHVzLgotICAgIF90aW1l
bGluZVVwZGF0ZVRpbWVyID0gW1tOU1RpbWVyIHRpbWVyV2l0aFRpbWVJbnRlcnZhbDowLjI1IHRh
cmdldDpzZWxmIHNlbGVjdG9yOkBzZWxlY3Rvcih1cGRhdGVUaW1lKSB1c2VySW5mbzpuaWwgcmVw
ZWF0czpZRVNdIHJldGFpbl07Ci0gICAgW1tOU1J1bkxvb3AgY3VycmVudFJ1bkxvb3BdIGFkZFRp
bWVyOl90aW1lbGluZVVwZGF0ZVRpbWVyIGZvck1vZGU6TlNSdW5Mb29wQ29tbW9uTW9kZXNdOwot
fQotCi0tICh2b2lkKXVuc2NoZWR1bGVUaW1lVXBkYXRlCi17Ci0gICAgW05TT2JqZWN0IGNhbmNl
bFByZXZpb3VzUGVyZm9ybVJlcXVlc3RzV2l0aFRhcmdldDpzZWxmIHNlbGVjdG9yOkBzZWxlY3Rv
cih1bnNjaGVkdWxlVGltZVVwZGF0ZSkgb2JqZWN0Om5pbF07Ci0KLSAgICBbX3RpbWVsaW5lVXBk
YXRlVGltZXIgaW52YWxpZGF0ZV07Ci0gICAgW190aW1lbGluZVVwZGF0ZVRpbWVyIHJlbGVhc2Vd
OwotICAgIF90aW1lbGluZVVwZGF0ZVRpbWVyID0gbmlsOwotfQotCi0tICh2b2lkKWZhZGVXaW5k
b3dJbgotewotICAgIE5TV2luZG93ICp3aW5kb3cgPSBbc2VsZiB3aW5kb3ddOwotICAgIGlmICgh
W3dpbmRvdyBpc1Zpc2libGVdKQotICAgICAgICBbd2luZG93IHNldEFscGhhVmFsdWU6MF07Ci0K
LSAgICBbd2luZG93IG1ha2VLZXlBbmRPcmRlckZyb250OnNlbGZdOwotICAgIFtbd2luZG93IGFu
aW1hdG9yXSBzZXRBbHBoYVZhbHVlOjFdOwotICAgIFtzZWxmIHNjaGVkdWxlVGltZVVwZGF0ZV07
Ci0KLSAgICBbTlNPYmplY3QgY2FuY2VsUHJldmlvdXNQZXJmb3JtUmVxdWVzdHNXaXRoVGFyZ2V0
OnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGZhZGVXaW5kb3dPdXQpIG9iamVjdDpuaWxdOwotICAg
IGlmICghX21vdXNlSXNJbkhVRCAmJiBbc2VsZiBwbGF5aW5nXSkgLy8gRG9uJ3QgZmFkZSBvdXQg
d2hlbiBwYXVzZWQuCi0gICAgICAgIFtzZWxmIHBlcmZvcm1TZWxlY3RvcjpAc2VsZWN0b3IoZmFk
ZVdpbmRvd091dCkgd2l0aE9iamVjdDpuaWwgYWZ0ZXJEZWxheTpIVURXaW5kb3dGYWRlT3V0RGVs
YXldOwotfQotCi0tICh2b2lkKWZhZGVXaW5kb3dPdXQKLXsKLSAgICBbTlNDdXJzb3Igc2V0SGlk
ZGVuVW50aWxNb3VzZU1vdmVzOllFU107Ci0gICAgW1tbc2VsZiB3aW5kb3ddIGFuaW1hdG9yXSBz
ZXRBbHBoYVZhbHVlOjBdOwotICAgIFtzZWxmIHBlcmZvcm1TZWxlY3RvcjpAc2VsZWN0b3IodW5z
Y2hlZHVsZVRpbWVVcGRhdGUpIHdpdGhPYmplY3Q6bmlsIGFmdGVyRGVsYXk6MV07Ci19Ci0KLS0g
KHZvaWQpY2xvc2VXaW5kb3cKLXsKLSAgICBbTlNPYmplY3QgY2FuY2VsUHJldmlvdXNQZXJmb3Jt
UmVxdWVzdHNXaXRoVGFyZ2V0OnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGZhZGVXaW5kb3dPdXQp
IG9iamVjdDpuaWxdOwotICAgIFtzZWxmIHVuc2NoZWR1bGVUaW1lVXBkYXRlXTsKLSAgICBOU1dp
bmRvdyAqd2luZG93ID0gW3NlbGYgd2luZG93XTsKLSAgICBbW3dpbmRvdyBjb250ZW50Vmlld10g
cmVtb3ZlVHJhY2tpbmdBcmVhOl9hcmVhXTsKLSAgICBbc2VsZiBzZXRBcmVhOm5pbF07Ci0gICAg
W3dpbmRvdyBjbG9zZV07Ci0gICAgW3dpbmRvdyBzZXREZWxlZ2F0ZTpuaWxdOwotICAgIFtzZWxm
IHNldFdpbmRvdzpuaWxdOwotfQotCi1zdGF0aWMgTlNDb250cm9sICpjcmVhdGVNZWRpYVVJQ29u
dHJvbChNZWRpYVVJQ29udHJvbCBjb250cm9sVHlwZSkKLXsKLSAgICBzd2l0Y2ggKGNvbnRyb2xU
eXBlKSB7Ci0gICAgY2FzZSBNZWRpYVVJQ29udHJvbDo6VGltZWxpbmU6IHsKLSAgICAgICAgTlNT
bGlkZXIgKnNsaWRlciA9IFtbUVRIVURUaW1lbGluZSBhbGxvY10gaW5pdF07Ci0gICAgICAgIFtb
c2xpZGVyIGNlbGxdIHNldENvbnRpbnVvdXM6WUVTXTsKLSAgICAgICAgcmV0dXJuIHNsaWRlcjsK
LSAgICB9Ci0gICAgY2FzZSBNZWRpYVVJQ29udHJvbDo6U2xpZGVyOiB7Ci0gICAgICAgIE5TQnV0
dG9uICpzbGlkZXIgPSBbW1FUSFVEU2xpZGVyIGFsbG9jXSBpbml0XTsKLSAgICAgICAgW1tzbGlk
ZXIgY2VsbF0gc2V0Q29udGludW91czpZRVNdOwotICAgICAgICByZXR1cm4gc2xpZGVyOwotICAg
IH0KLSAgICBjYXNlIE1lZGlhVUlDb250cm9sOjpQbGF5UGF1c2VCdXR0b246IHsKLSAgICAgICAg
TlNCdXR0b24gKmJ1dHRvbiA9IFtbUVRIVURCdXR0b24gYWxsb2NdIGluaXRdOwotICAgICAgICBb
YnV0dG9uIHNldEltYWdlOltOU0ltYWdlIGltYWdlTmFtZWQ6QCJOU1BsYXlUZW1wbGF0ZSJdXTsK
LSAgICAgICAgW2J1dHRvbiBzZXRBbHRlcm5hdGVJbWFnZTpbTlNJbWFnZSBpbWFnZU5hbWVkOkAi
TlNQYXVzZVFUUHJpdmF0ZVRlbXBsYXRlIl1dOwotCi0gICAgICAgIFtbYnV0dG9uIGNlbGxdIHNl
dFNob3dzU3RhdGVCeTpOU0NvbnRlbnRzQ2VsbE1hc2tdOwotICAgICAgICBbYnV0dG9uIHNldEJv
cmRlcmVkOk5PXTsKLSAgICAgICAgcmV0dXJuIGJ1dHRvbjsKLSAgICB9Ci0gICAgY2FzZSBNZWRp
YVVJQ29udHJvbDo6RXhpdEZ1bGxzY3JlZW5CdXR0b246IHsKLSAgICAgICAgTlNCdXR0b24gKmJ1
dHRvbiA9IFtbUVRIVURCdXR0b24gYWxsb2NdIGluaXRdOwotICAgICAgICBbYnV0dG9uIHNldElt
YWdlOltOU0ltYWdlIGltYWdlTmFtZWQ6QCJOU0V4aXRGdWxsU2NyZWVuVGVtcGxhdGUiXV07Ci0g
ICAgICAgIFtidXR0b24gc2V0Qm9yZGVyZWQ6Tk9dOwotICAgICAgICByZXR1cm4gYnV0dG9uOwot
ICAgIH0KLSAgICBjYXNlIE1lZGlhVUlDb250cm9sOjpSZXdpbmRCdXR0b246IHsKLSAgICAgICAg
TlNCdXR0b24gKmJ1dHRvbiA9IFtbUVRIVURCdXR0b24gYWxsb2NdIGluaXRdOwotICAgICAgICBb
YnV0dG9uIHNldEltYWdlOltOU0ltYWdlIGltYWdlTmFtZWQ6QCJOU1Jld2luZFRlbXBsYXRlIl1d
OwotICAgICAgICBbYnV0dG9uIHNldEJvcmRlcmVkOk5PXTsKLSAgICAgICAgcmV0dXJuIGJ1dHRv
bjsKLSAgICB9Ci0gICAgY2FzZSBNZWRpYVVJQ29udHJvbDo6RmFzdEZvcndhcmRCdXR0b246IHsK
LSAgICAgICAgTlNCdXR0b24gKmJ1dHRvbiA9IFtbUVRIVURCdXR0b24gYWxsb2NdIGluaXRdOwot
ICAgICAgICBbYnV0dG9uIHNldEltYWdlOltOU0ltYWdlIGltYWdlTmFtZWQ6QCJOU0Zhc3RGb3J3
YXJkVGVtcGxhdGUiXV07Ci0gICAgICAgIFtidXR0b24gc2V0Qm9yZGVyZWQ6Tk9dOwotICAgICAg
ICByZXR1cm4gYnV0dG9uOwotICAgIH0KLSAgICBjYXNlIE1lZGlhVUlDb250cm9sOjpWb2x1bWVV
cEJ1dHRvbjogewotICAgICAgICBOU0J1dHRvbiAqYnV0dG9uID0gW1tRVEhVREJ1dHRvbiBhbGxv
Y10gaW5pdF07Ci0gICAgICAgIFtidXR0b24gc2V0SW1hZ2U6W05TSW1hZ2UgaW1hZ2VOYW1lZDpA
Ik5TQXVkaW9PdXRwdXRWb2x1bWVIaWdoVGVtcGxhdGUiXV07Ci0gICAgICAgIFtidXR0b24gc2V0
Qm9yZGVyZWQ6Tk9dOwotICAgICAgICByZXR1cm4gYnV0dG9uOwotICAgIH0KLSAgICBjYXNlIE1l
ZGlhVUlDb250cm9sOjpWb2x1bWVEb3duQnV0dG9uOiB7Ci0gICAgICAgIE5TQnV0dG9uICpidXR0
b24gPSBbW1FUSFVEQnV0dG9uIGFsbG9jXSBpbml0XTsKLSAgICAgICAgW2J1dHRvbiBzZXRJbWFn
ZTpbTlNJbWFnZSBpbWFnZU5hbWVkOkAiTlNBdWRpb091dHB1dFZvbHVtZUxvd1RlbXBsYXRlIl1d
OwotICAgICAgICBbYnV0dG9uIHNldEJvcmRlcmVkOk5PXTsKLSAgICAgICAgcmV0dXJuIGJ1dHRv
bjsKLSAgICB9Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJu
IG5pbDsKLX0KLQotc3RhdGljIE5TQ29udHJvbCAqY3JlYXRlQ29udHJvbFdpdGhNZWRpYVVJQ29u
dHJvbFR5cGUoTWVkaWFVSUNvbnRyb2wgY29udHJvbFR5cGUsIE5TUmVjdCBmcmFtZSkKLXsKLSAg
ICBOU0NvbnRyb2wgKmNvbnRyb2wgPSBjcmVhdGVNZWRpYVVJQ29udHJvbChjb250cm9sVHlwZSk7
Ci0gICAgY29udHJvbC5mcmFtZSA9IGZyYW1lOwotICAgIHJldHVybiBjb250cm9sOwotfQotCi1z
dGF0aWMgTlNUZXh0RmllbGQgKmNyZWF0ZVRpbWVUZXh0RmllbGQoTlNSZWN0IGZyYW1lKQotewot
ICAgIE5TVGV4dEZpZWxkICp0ZXh0RmllbGQgPSBbW05TVGV4dEZpZWxkIGFsbG9jXSBpbml0V2l0
aEZyYW1lOmZyYW1lXTsKLSAgICBbdGV4dEZpZWxkIHNldFRleHRDb2xvcjpbTlNDb2xvciB3aGl0
ZUNvbG9yXV07Ci0gICAgW3RleHRGaWVsZCBzZXRCb3JkZXJlZDpOT107Ci0gICAgW3RleHRGaWVs
ZCBzZXRGb250OltOU0ZvbnQgYm9sZFN5c3RlbUZvbnRPZlNpemU6MTBdXTsKLSAgICBbdGV4dEZp
ZWxkIHNldERyYXdzQmFja2dyb3VuZDpOT107Ci0gICAgW3RleHRGaWVsZCBzZXRCZXplbGVkOk5P
XTsKLSAgICBbdGV4dEZpZWxkIHNldEVkaXRhYmxlOk5PXTsKLSAgICBbdGV4dEZpZWxkIHNldFNl
bGVjdGFibGU6Tk9dOwotICAgIHJldHVybiB0ZXh0RmllbGQ7Ci19Ci0KLXN0YXRpYyBOU1ZpZXcg
KmNyZWF0ZU1lZGlhVUlCYWNrZ3JvdW5kVmlldygpCi17Ci0gICAgaWQgdmlldyA9IFtbUVRIVURC
YWNrZ3JvdW5kVmlldyBhbGxvY10gaW5pdF07Ci0KLSAgICBjb25zdCBDR0Zsb2F0IHF1aWNrVGlt
ZVBsYXllckhVREhlaWdodCA9IDU5OwotICAgIGNvbnN0IENHRmxvYXQgcXVpY2tUaW1lUGxheWVy
SFVEQ29udGVudEJvcmRlclBvc2l0aW9uID0gMzg7Ci0KLSAgICBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19CRUdJTgotICAgIFt2aWV3IHNldENvbnRlbnRCb3JkZXJQb3NpdGlvbjpxdWlj
a1RpbWVQbGF5ZXJIVURDb250ZW50Qm9yZGVyUG9zaXRpb24gLyBxdWlja1RpbWVQbGF5ZXJIVURI
ZWlnaHRdOwotICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAotCi0gICAgcmV0
dXJuIHZpZXc7Ci19Ci0KLS0gKHZvaWQpd2luZG93RGlkTG9hZAotewotICAgIHN0YXRpYyBjb25z
dCBDR0Zsb2F0IGhvcml6b250YWxNYXJnaW4gPSAxMDsKLSAgICBzdGF0aWMgY29uc3QgQ0dGbG9h
dCBwbGF5QnV0dG9uV2lkdGggPSA0MTsKLSAgICBzdGF0aWMgY29uc3QgQ0dGbG9hdCBwbGF5QnV0
dG9uSGVpZ2h0ID0gMzU7Ci0gICAgc3RhdGljIGNvbnN0IENHRmxvYXQgcGxheUJ1dHRvblRvcE1h
cmdpbiA9IDQ7Ci0gICAgc3RhdGljIGNvbnN0IENHRmxvYXQgdm9sdW1lU2xpZGVyV2lkdGggPSA1
MDsKLSAgICBzdGF0aWMgY29uc3QgQ0dGbG9hdCB2b2x1bWVTbGlkZXJIZWlnaHQgPSAxMzsKLSAg
ICBzdGF0aWMgY29uc3QgQ0dGbG9hdCB2b2x1bWVCdXR0b25XaWR0aCA9IDE4OwotICAgIHN0YXRp
YyBjb25zdCBDR0Zsb2F0IHZvbHVtZUJ1dHRvbkhlaWdodCA9IDE2OwotICAgIHN0YXRpYyBjb25z
dCBDR0Zsb2F0IHZvbHVtZVVwQnV0dG9uTGVmdE1hcmdpbiA9IDQ7Ci0gICAgc3RhdGljIGNvbnN0
IENHRmxvYXQgdm9sdW1lQ29udHJvbHNUb3BNYXJnaW4gPSAxMzsKLSAgICBzdGF0aWMgY29uc3Qg
Q0dGbG9hdCBleGl0RnVsbHNjcmVlbkJ1dHRvbldpZHRoID0gMjU7Ci0gICAgc3RhdGljIGNvbnN0
IENHRmxvYXQgZXhpdEZ1bGxzY3JlZW5CdXR0b25IZWlnaHQgPSAyMTsKLSAgICBzdGF0aWMgY29u
c3QgQ0dGbG9hdCBleGl0RnVsbHNjcmVlbkJ1dHRvblRvcE1hcmdpbiA9IDExOwotICAgIHN0YXRp
YyBjb25zdCBDR0Zsb2F0IHRpbWVsaW5lV2lkdGggPSAzMTU7Ci0gICAgc3RhdGljIGNvbnN0IENH
RmxvYXQgdGltZWxpbmVIZWlnaHQgPSAxNDsKLSAgICBzdGF0aWMgY29uc3QgQ0dGbG9hdCB0aW1l
bGluZUJvdHRvbU1hcmdpbiA9IDc7Ci0gICAgc3RhdGljIGNvbnN0IENHRmxvYXQgdGltZVRleHRG
aWVsZFdpZHRoID0gNTQ7Ci0gICAgc3RhdGljIGNvbnN0IENHRmxvYXQgdGltZVRleHRGaWVsZEhl
aWdodCA9IDEzOwotICAgIHN0YXRpYyBjb25zdCBDR0Zsb2F0IHRpbWVUZXh0RmllbGRIb3Jpem9u
dGFsTWFyZ2luID0gNzsKLQotICAgIGlmICghUVRLaXRMaWJyYXJ5KCkKLSAgICAgICAgfHwgIWdl
dFFUSFVEQmFja2dyb3VuZFZpZXdDbGFzcygpCi0gICAgICAgIHx8ICFnZXRRVEhVREJ1dHRvbkNs
YXNzKCkKLSAgICAgICAgfHwgIWdldFFUSFVEU2xpZGVyQ2xhc3MoKQotICAgICAgICB8fCAhZ2V0
UVRIVURUaW1lbGluZUNsYXNzKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIE5TV2luZG93ICp3
aW5kb3cgPSBbc2VsZiB3aW5kb3ddOwotICAgIEFTU0VSVCh3aW5kb3cpOwotCi0gICAgTlNWaWV3
ICpiYWNrZ3JvdW5kID0gY3JlYXRlTWVkaWFVSUJhY2tncm91bmRWaWV3KCk7Ci0KLSAgICBbd2lu
ZG93IHNldENvbnRlbnRWaWV3OmJhY2tncm91bmRdOwotICAgIF9hcmVhID0gW1tOU1RyYWNraW5n
QXJlYSBhbGxvY10gaW5pdFdpdGhSZWN0OltiYWNrZ3JvdW5kIGJvdW5kc10gb3B0aW9uczpOU1Ry
YWNraW5nTW91c2VFbnRlcmVkQW5kRXhpdGVkIHwgTlNUcmFja2luZ0FjdGl2ZUFsd2F5cyBvd25l
cjpzZWxmIHVzZXJJbmZvOm5pbF07Ci0gICAgW2JhY2tncm91bmQgYWRkVHJhY2tpbmdBcmVhOl9h
cmVhXTsKLSAgICBbYmFja2dyb3VuZCByZWxlYXNlXTsgICAgCi0KLSAgICBOU1ZpZXcgKmNvbnRl
bnRWaWV3ID0gW3dpbmRvdyBjb250ZW50Vmlld107Ci0KLSAgICBDR0Zsb2F0IGNlbnRlciA9IENH
Rmxvb3IoKHdpbmRvd1dpZHRoIC0gcGxheUJ1dHRvbldpZHRoKSAvIDIpOwotICAgIF9wbGF5QnV0
dG9uID0gKE5TQnV0dG9uICopY3JlYXRlQ29udHJvbFdpdGhNZWRpYVVJQ29udHJvbFR5cGUoTWVk
aWFVSUNvbnRyb2w6OlBsYXlQYXVzZUJ1dHRvbiwgTlNNYWtlUmVjdChjZW50ZXIsIHdpbmRvd0hl
aWdodCAtIHBsYXlCdXR0b25Ub3BNYXJnaW4gLSBwbGF5QnV0dG9uSGVpZ2h0LCBwbGF5QnV0dG9u
V2lkdGgsIHBsYXlCdXR0b25IZWlnaHQpKTsKLSAgICBBU1NFUlQoW19wbGF5QnV0dG9uIGlzS2lu
ZE9mQ2xhc3M6W05TQnV0dG9uIGNsYXNzXV0pOwotICAgIFtfcGxheUJ1dHRvbiBzZXRUYXJnZXQ6
c2VsZl07Ci0gICAgW19wbGF5QnV0dG9uIHNldEFjdGlvbjpAc2VsZWN0b3IodG9nZ2xlUGxheWlu
ZzopXTsKLSAgICBbY29udGVudFZpZXcgYWRkU3VidmlldzpfcGxheUJ1dHRvbl07Ci0KLSAgICBD
R0Zsb2F0IGNsb3NlVG9SaWdodCA9IHdpbmRvd1dpZHRoIC0gaG9yaXpvbnRhbE1hcmdpbiAtIGV4
aXRGdWxsc2NyZWVuQnV0dG9uV2lkdGg7Ci0gICAgTlNDb250cm9sICpleGl0RnVsbHNjcmVlbkJ1
dHRvbiA9IGNyZWF0ZUNvbnRyb2xXaXRoTWVkaWFVSUNvbnRyb2xUeXBlKE1lZGlhVUlDb250cm9s
OjpFeGl0RnVsbHNjcmVlbkJ1dHRvbiwgTlNNYWtlUmVjdChjbG9zZVRvUmlnaHQsIHdpbmRvd0hl
aWdodCAtIGV4aXRGdWxsc2NyZWVuQnV0dG9uVG9wTWFyZ2luIC0gZXhpdEZ1bGxzY3JlZW5CdXR0
b25IZWlnaHQsIGV4aXRGdWxsc2NyZWVuQnV0dG9uV2lkdGgsIGV4aXRGdWxsc2NyZWVuQnV0dG9u
SGVpZ2h0KSk7Ci0gICAgW2V4aXRGdWxsc2NyZWVuQnV0dG9uIHNldEFjdGlvbjpAc2VsZWN0b3Io
ZXhpdEZ1bGxzY3JlZW46KV07Ci0gICAgW2V4aXRGdWxsc2NyZWVuQnV0dG9uIHNldFRhcmdldDpz
ZWxmXTsKLSAgICBbY29udGVudFZpZXcgYWRkU3VidmlldzpleGl0RnVsbHNjcmVlbkJ1dHRvbl07
Ci0gICAgW2V4aXRGdWxsc2NyZWVuQnV0dG9uIHJlbGVhc2VdOwotICAgIAotICAgIENHRmxvYXQg
dm9sdW1lQ29udHJvbHNCb3R0b20gPSB3aW5kb3dIZWlnaHQgLSB2b2x1bWVDb250cm9sc1RvcE1h
cmdpbiAtIHZvbHVtZUJ1dHRvbkhlaWdodDsKLSAgICBDR0Zsb2F0IGxlZnQgPSBob3Jpem9udGFs
TWFyZ2luOwotICAgIE5TQ29udHJvbCAqdm9sdW1lRG93bkJ1dHRvbiA9IGNyZWF0ZUNvbnRyb2xX
aXRoTWVkaWFVSUNvbnRyb2xUeXBlKE1lZGlhVUlDb250cm9sOjpWb2x1bWVEb3duQnV0dG9uLCBO
U01ha2VSZWN0KGxlZnQsIHZvbHVtZUNvbnRyb2xzQm90dG9tLCB2b2x1bWVCdXR0b25XaWR0aCwg
dm9sdW1lQnV0dG9uSGVpZ2h0KSk7Ci0gICAgW2NvbnRlbnRWaWV3IGFkZFN1YnZpZXc6dm9sdW1l
RG93bkJ1dHRvbl07Ci0gICAgW3ZvbHVtZURvd25CdXR0b24gc2V0VGFyZ2V0OnNlbGZdOwotICAg
IFt2b2x1bWVEb3duQnV0dG9uIHNldEFjdGlvbjpAc2VsZWN0b3Ioc2V0Vm9sdW1lVG9aZXJvOild
OwotICAgIFt2b2x1bWVEb3duQnV0dG9uIHJlbGVhc2VdOwotCi0gICAgbGVmdCArPSB2b2x1bWVC
dXR0b25XaWR0aDsKLSAgICBfdm9sdW1lU2xpZGVyID0gY3JlYXRlQ29udHJvbFdpdGhNZWRpYVVJ
Q29udHJvbFR5cGUoTWVkaWFVSUNvbnRyb2w6OlNsaWRlciwgTlNNYWtlUmVjdChsZWZ0LCB2b2x1
bWVDb250cm9sc0JvdHRvbSArIENHRmxvb3IoKHZvbHVtZUJ1dHRvbkhlaWdodCAtIHZvbHVtZVNs
aWRlckhlaWdodCkgLyAyKSwgdm9sdW1lU2xpZGVyV2lkdGgsIHZvbHVtZVNsaWRlckhlaWdodCkp
OwotICAgIFtfdm9sdW1lU2xpZGVyIHNldFZhbHVlOltOU051bWJlciBudW1iZXJXaXRoRG91Ymxl
OltzZWxmIG1heFZvbHVtZV1dIGZvcktleTpAIm1heFZhbHVlIl07Ci0gICAgW192b2x1bWVTbGlk
ZXIgc2V0VGFyZ2V0OnNlbGZdOwotICAgIFtfdm9sdW1lU2xpZGVyIHNldEFjdGlvbjpAc2VsZWN0
b3Iodm9sdW1lQ2hhbmdlZDopXTsKLSAgICBbY29udGVudFZpZXcgYWRkU3Vidmlldzpfdm9sdW1l
U2xpZGVyXTsKLQotICAgIGxlZnQgKz0gdm9sdW1lU2xpZGVyV2lkdGggKyB2b2x1bWVVcEJ1dHRv
bkxlZnRNYXJnaW47Ci0gICAgTlNDb250cm9sICp2b2x1bWVVcEJ1dHRvbiA9IGNyZWF0ZUNvbnRy
b2xXaXRoTWVkaWFVSUNvbnRyb2xUeXBlKE1lZGlhVUlDb250cm9sOjpWb2x1bWVVcEJ1dHRvbiwg
TlNNYWtlUmVjdChsZWZ0LCB2b2x1bWVDb250cm9sc0JvdHRvbSwgdm9sdW1lQnV0dG9uV2lkdGgs
IHZvbHVtZUJ1dHRvbkhlaWdodCkpOwotICAgIFt2b2x1bWVVcEJ1dHRvbiBzZXRUYXJnZXQ6c2Vs
Zl07Ci0gICAgW3ZvbHVtZVVwQnV0dG9uIHNldEFjdGlvbjpAc2VsZWN0b3Ioc2V0Vm9sdW1lVG9N
YXhpbXVtOildOwotICAgIFtjb250ZW50VmlldyBhZGRTdWJ2aWV3OnZvbHVtZVVwQnV0dG9uXTsK
LSAgICBbdm9sdW1lVXBCdXR0b24gcmVsZWFzZV07Ci0KLSAgICBfdGltZWxpbmUgPSBjcmVhdGVN
ZWRpYVVJQ29udHJvbChNZWRpYVVJQ29udHJvbDo6VGltZWxpbmUpOwotCi0gICAgW190aW1lbGlu
ZSBzZXRUYXJnZXQ6c2VsZl07Ci0gICAgW190aW1lbGluZSBzZXRBY3Rpb246QHNlbGVjdG9yKHRp
bWVsaW5lUG9zaXRpb25DaGFuZ2VkOildOwotICAgIFtfdGltZWxpbmUgc2V0RnJhbWU6TlNNYWtl
UmVjdChDR0Zsb29yKCh3aW5kb3dXaWR0aCAtIHRpbWVsaW5lV2lkdGgpIC8gMiksIHRpbWVsaW5l
Qm90dG9tTWFyZ2luLCB0aW1lbGluZVdpZHRoLCB0aW1lbGluZUhlaWdodCldOwotICAgIFtjb250
ZW50VmlldyBhZGRTdWJ2aWV3Ol90aW1lbGluZV07Ci0KLSAgICBfZWxhcHNlZFRpbWVUZXh0ID0g
Y3JlYXRlVGltZVRleHRGaWVsZChOU01ha2VSZWN0KHRpbWVUZXh0RmllbGRIb3Jpem9udGFsTWFy
Z2luLCB0aW1lbGluZUJvdHRvbU1hcmdpbiwgdGltZVRleHRGaWVsZFdpZHRoLCB0aW1lVGV4dEZp
ZWxkSGVpZ2h0KSk7Ci0gICAgW19lbGFwc2VkVGltZVRleHQgc2V0QWxpZ25tZW50Ok5TVGV4dEFs
aWdubWVudExlZnRdOwotICAgIFtjb250ZW50VmlldyBhZGRTdWJ2aWV3Ol9lbGFwc2VkVGltZVRl
eHRdOwotCi0gICAgX3JlbWFpbmluZ1RpbWVUZXh0ID0gY3JlYXRlVGltZVRleHRGaWVsZChOU01h
a2VSZWN0KHdpbmRvd1dpZHRoIC0gdGltZVRleHRGaWVsZEhvcml6b250YWxNYXJnaW4gLSB0aW1l
VGV4dEZpZWxkV2lkdGgsIHRpbWVsaW5lQm90dG9tTWFyZ2luLCB0aW1lVGV4dEZpZWxkV2lkdGgs
IHRpbWVUZXh0RmllbGRIZWlnaHQpKTsKLSAgICBbX3JlbWFpbmluZ1RpbWVUZXh0IHNldEFsaWdu
bWVudDpOU1RleHRBbGlnbm1lbnRSaWdodF07Ci0gICAgW2NvbnRlbnRWaWV3IGFkZFN1YnZpZXc6
X3JlbWFpbmluZ1RpbWVUZXh0XTsKLQotICAgIFt3aW5kb3cgcmVjYWxjdWxhdGVLZXlWaWV3TG9v
cF07Ci0gICAgW3dpbmRvdyBzZXRJbml0aWFsRmlyc3RSZXNwb25kZXI6X3BsYXlCdXR0b25dOwot
ICAgIFt3aW5kb3cgY2VudGVyXTsKLX0KLQotLSAodm9pZCl1cGRhdGVWb2x1bWUKLXsKLSAgICBb
X3ZvbHVtZVNsaWRlciBzZXRGbG9hdFZhbHVlOltzZWxmIHZvbHVtZV1dOwotfQotCi0tICh2b2lk
KXVwZGF0ZVRpbWUKLXsKLSAgICBbc2VsZiB1cGRhdGVWb2x1bWVdOwotCi0gICAgW190aW1lbGlu
ZSBzZXRGbG9hdFZhbHVlOltzZWxmIGN1cnJlbnRUaW1lXV07Ci0gICAgW190aW1lbGluZSBzZXRW
YWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTpbc2VsZiBkdXJhdGlvbl1dIGZvcktleTpA
Im1heFZhbHVlIl07Ci0KLSAgICBbX3JlbWFpbmluZ1RpbWVUZXh0IHNldFN0cmluZ1ZhbHVlOltz
ZWxmIHJlbWFpbmluZ1RpbWVUZXh0XV07Ci0gICAgW19lbGFwc2VkVGltZVRleHQgc2V0U3RyaW5n
VmFsdWU6W3NlbGYgZWxhcHNlZFRpbWVUZXh0XV07Ci19Ci0KLS0gKHZvaWQpZW5kU2NydWJiaW5n
Ci17Ci0gICAgQVNTRVJUKF9pc1NjcnViYmluZyk7Ci0gICAgX2lzU2NydWJiaW5nID0gTk87Ci0g
ICAgaWYgKEhUTUxWaWRlb0VsZW1lbnQqIHZpZGVvRWxlbWVudCA9IFtfZGVsZWdhdGUgdmlkZW9F
bGVtZW50XSkKLSAgICAgICAgdmlkZW9FbGVtZW50LT5lbmRTY3J1YmJpbmcoKTsKLX0KLQotLSAo
dm9pZCl0aW1lbGluZVBvc2l0aW9uQ2hhbmdlZDooaWQpc2VuZGVyCi17Ci0gICAgVU5VU0VEX1BB
UkFNKHNlbmRlcik7Ci0gICAgW3NlbGYgc2V0Q3VycmVudFRpbWU6W190aW1lbGluZSBmbG9hdFZh
bHVlXV07Ci0gICAgaWYgKCFfaXNTY3J1YmJpbmcpIHsKLSAgICAgICAgX2lzU2NydWJiaW5nID0g
WUVTOwotICAgICAgICBpZiAoSFRNTFZpZGVvRWxlbWVudCogdmlkZW9FbGVtZW50ID0gW19kZWxl
Z2F0ZSB2aWRlb0VsZW1lbnRdKQotICAgICAgICAgICAgdmlkZW9FbGVtZW50LT5iZWdpblNjcnVi
YmluZygpOwotICAgICAgICBzdGF0aWMgTlNBcnJheSAqZW5kU2NydWJiaW5nTW9kZXMgPSBbW05T
QXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czpOU0RlZmF1bHRSdW5Mb29wTW9kZSwgTlNNb2Rh
bFBhbmVsUnVuTG9vcE1vZGUsIG5pbF07Ci0gICAgICAgIC8vIFNjaGVkdWxlIC1lbmRTY3J1YmJp
bmcgZm9yIHdoZW4gbGVhdmluZyBtb3VzZSB0cmFja2luZyBtb2RlLgotICAgICAgICBbW05TUnVu
TG9vcCBjdXJyZW50UnVuTG9vcF0gcGVyZm9ybVNlbGVjdG9yOkBzZWxlY3RvcihlbmRTY3J1YmJp
bmcpIHRhcmdldDpzZWxmIGFyZ3VtZW50Om5pbCBvcmRlcjowIG1vZGVzOmVuZFNjcnViYmluZ01v
ZGVzXTsKLSAgICB9Ci19Ci0KLS0gKGZsb2F0KWN1cnJlbnRUaW1lCi17Ci0gICAgcmV0dXJuIFtf
ZGVsZWdhdGUgdmlkZW9FbGVtZW50XSA/IFtfZGVsZWdhdGUgdmlkZW9FbGVtZW50XS0+Y3VycmVu
dFRpbWUoKSA6IDA7Ci19Ci0KLS0gKHZvaWQpc2V0Q3VycmVudFRpbWU6KGZsb2F0KWN1cnJlbnRU
aW1lCi17Ci0gICAgaWYgKCFbX2RlbGVnYXRlIHZpZGVvRWxlbWVudF0pCi0gICAgICAgIHJldHVy
bjsKLSAgICBbX2RlbGVnYXRlIHZpZGVvRWxlbWVudF0tPnNldEN1cnJlbnRUaW1lKGN1cnJlbnRU
aW1lKTsKLSAgICBbc2VsZiB1cGRhdGVUaW1lXTsKLX0KLQotLSAoZG91YmxlKWR1cmF0aW9uCi17
Ci0gICAgcmV0dXJuIFtfZGVsZWdhdGUgdmlkZW9FbGVtZW50XSA/IFtfZGVsZWdhdGUgdmlkZW9F
bGVtZW50XS0+ZHVyYXRpb24oKSA6IDA7Ci19Ci0KLS0gKGZsb2F0KW1heFZvbHVtZQotewotICAg
IC8vIFNldCB0aGUgdm9sdW1lIHNsaWRlciByZXNvbHV0aW9uCi0gICAgcmV0dXJuIDEwMDsKLX0K
LQotLSAodm9pZCl2b2x1bWVDaGFuZ2VkOihpZClzZW5kZXIKLXsKLSAgICBVTlVTRURfUEFSQU0o
c2VuZGVyKTsKLSAgICBbc2VsZiBzZXRWb2x1bWU6W192b2x1bWVTbGlkZXIgZmxvYXRWYWx1ZV1d
OwotfQotCi0tICh2b2lkKXNldFZvbHVtZVRvWmVybzooaWQpc2VuZGVyCi17Ci0gICAgVU5VU0VE
X1BBUkFNKHNlbmRlcik7Ci0gICAgW3NlbGYgc2V0Vm9sdW1lOjBdOwotfQotCi0tICh2b2lkKXNl
dFZvbHVtZVRvTWF4aW11bTooaWQpc2VuZGVyCi17Ci0gICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7
Ci0gICAgW3NlbGYgc2V0Vm9sdW1lOltzZWxmIG1heFZvbHVtZV1dOwotfQotCi0tICh2b2lkKWRl
Y3JlbWVudFZvbHVtZQotewotICAgIGlmICghW19kZWxlZ2F0ZSB2aWRlb0VsZW1lbnRdKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBmbG9hdCB2b2x1bWUgPSBbc2VsZiB2b2x1bWVdIC0gMTA7Ci0g
ICAgW3NlbGYgc2V0Vm9sdW1lOnN0ZDo6bWF4KHZvbHVtZSwgMC4wZildOwotfQotCi0tICh2b2lk
KWluY3JlbWVudFZvbHVtZQotewotICAgIGlmICghW19kZWxlZ2F0ZSB2aWRlb0VsZW1lbnRdKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBmbG9hdCB2b2x1bWUgPSBbc2VsZiB2b2x1bWVdICsgMTA7
Ci0gICAgW3NlbGYgc2V0Vm9sdW1lOnN0ZDo6bWluKHZvbHVtZSwgW3NlbGYgbWF4Vm9sdW1lXSld
OwotfQotCi0tIChmbG9hdCl2b2x1bWUKLXsKLSAgICByZXR1cm4gW19kZWxlZ2F0ZSB2aWRlb0Vs
ZW1lbnRdID8gW19kZWxlZ2F0ZSB2aWRlb0VsZW1lbnRdLT52b2x1bWUoKSAqIFtzZWxmIG1heFZv
bHVtZV0gOiAwOwotfQotCi0tICh2b2lkKXNldFZvbHVtZTooZmxvYXQpdm9sdW1lCi17Ci0gICAg
aWYgKCFbX2RlbGVnYXRlIHZpZGVvRWxlbWVudF0pCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAo
W19kZWxlZ2F0ZSB2aWRlb0VsZW1lbnRdLT5tdXRlZCgpKQotICAgICAgICBbX2RlbGVnYXRlIHZp
ZGVvRWxlbWVudF0tPnNldE11dGVkKGZhbHNlKTsKLSAgICBbX2RlbGVnYXRlIHZpZGVvRWxlbWVu
dF0tPnNldFZvbHVtZSh2b2x1bWUgLyBbc2VsZiBtYXhWb2x1bWVdKTsKLSAgICBbc2VsZiB1cGRh
dGVWb2x1bWVdOwotfQotCi0tICh2b2lkKXVwZGF0ZVBsYXlCdXR0b24KLXsKLSAgICBbX3BsYXlC
dXR0b24gc2V0SW50VmFsdWU6W3NlbGYgcGxheWluZ11dOwotfQotCi0tICh2b2lkKXVwZGF0ZVJh
dGUKLXsKLSAgICBCT09MIHBsYXlpbmcgPSBbc2VsZiBwbGF5aW5nXTsKLQotICAgIC8vIEtlZXAg
dGhlIEhVRCB2aXNpYmxlIHdoZW4gcGF1c2VkLgotICAgIGlmICghcGxheWluZykKLSAgICAgICAg
W3NlbGYgZmFkZVdpbmRvd0luXTsKLSAgICBlbHNlIGlmICghX21vdXNlSXNJbkhVRCkgewotICAg
ICAgICBbTlNPYmplY3QgY2FuY2VsUHJldmlvdXNQZXJmb3JtUmVxdWVzdHNXaXRoVGFyZ2V0OnNl
bGYgc2VsZWN0b3I6QHNlbGVjdG9yKGZhZGVXaW5kb3dPdXQpIG9iamVjdDpuaWxdOwotICAgICAg
ICBbc2VsZiBwZXJmb3JtU2VsZWN0b3I6QHNlbGVjdG9yKGZhZGVXaW5kb3dPdXQpIHdpdGhPYmpl
Y3Q6bmlsIGFmdGVyRGVsYXk6SFVEV2luZG93RmFkZU91dERlbGF5XTsKLSAgICB9Ci0gICAgW3Nl
bGYgdXBkYXRlUGxheUJ1dHRvbl07Ci19Ci0KLS0gKHZvaWQpdG9nZ2xlUGxheWluZzooaWQpc2Vu
ZGVyCi17Ci0gICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7Ci0gICAgW3NlbGYgc2V0UGxheWluZzoh
W3NlbGYgcGxheWluZ11dOwotfQotCi0tIChCT09MKXBsYXlpbmcKLXsKLSAgICBIVE1MVmlkZW9F
bGVtZW50KiB2aWRlb0VsZW1lbnQgPSBbX2RlbGVnYXRlIHZpZGVvRWxlbWVudF07Ci0gICAgaWYg
KCF2aWRlb0VsZW1lbnQpCi0gICAgICAgIHJldHVybiBOTzsKLQotICAgIHJldHVybiAhdmlkZW9F
bGVtZW50LT5jYW5QbGF5KCk7Ci19Ci0KLS0gKHZvaWQpc2V0UGxheWluZzooQk9PTClwbGF5aW5n
Ci17Ci0gICAgSFRNTFZpZGVvRWxlbWVudCogdmlkZW9FbGVtZW50ID0gW19kZWxlZ2F0ZSB2aWRl
b0VsZW1lbnRdOwotCi0gICAgaWYgKCF2aWRlb0VsZW1lbnQpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGlmIChwbGF5aW5nKQotICAgICAgICB2aWRlb0VsZW1lbnQtPnBsYXkoKTsKLSAgICBlbHNl
Ci0gICAgICAgIHZpZGVvRWxlbWVudC0+cGF1c2UoKTsKLX0KLQotc3RhdGljIE5TU3RyaW5nICp0
aW1lVG9TdHJpbmcoZG91YmxlIHRpbWUpCi17Ci0gICAgQVNTRVJUX0FSRyh0aW1lLCB0aW1lID49
IDApOwotCi0gICAgaWYgKCFzdGQ6OmlzZmluaXRlKHRpbWUpKQotICAgICAgICB0aW1lID0gMDsK
LQotICAgIGludCBzZWNvbmRzID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdChzdGQ6OmFicyh0aW1l
KSk7Ci0gICAgaW50IGhvdXJzID0gc2Vjb25kcyAvICg2MCAqIDYwKTsKLSAgICBpbnQgbWludXRl
cyA9IChzZWNvbmRzIC8gNjApICUgNjA7Ci0gICAgc2Vjb25kcyAlPSA2MDsKLQotICAgIGlmICho
b3VycykKLSAgICAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJWQ6JTAy
ZDolMDJkIiwgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHNdOwotCi0gICAgcmV0dXJuIFtOU1N0cmlu
ZyBzdHJpbmdXaXRoRm9ybWF0OkAiJTAyZDolMDJkIiwgbWludXRlcywgc2Vjb25kc107ICAgIAot
fQotCi0tIChOU1N0cmluZyAqKXJlbWFpbmluZ1RpbWVUZXh0Ci17Ci0gICAgSFRNTFZpZGVvRWxl
bWVudCogdmlkZW9FbGVtZW50ID0gW19kZWxlZ2F0ZSB2aWRlb0VsZW1lbnRdOwotICAgIGlmICgh
dmlkZW9FbGVtZW50KQotICAgICAgICByZXR1cm4gQCIiOwotCi0gICAgZG91YmxlIHJlbWFpbmlu
Z1RpbWUgPSAwOwotCi0gICAgaWYgKHN0ZDo6aXNmaW5pdGUodmlkZW9FbGVtZW50LT5kdXJhdGlv
bigpKSAmJiBzdGQ6OmlzZmluaXRlKHZpZGVvRWxlbWVudC0+Y3VycmVudFRpbWUoKSkpCi0gICAg
ICAgIHJlbWFpbmluZ1RpbWUgPSB2aWRlb0VsZW1lbnQtPmR1cmF0aW9uKCkgLSB2aWRlb0VsZW1l
bnQtPmN1cnJlbnRUaW1lKCk7Ci0KLSAgICByZXR1cm4gW0AiLSIgc3RyaW5nQnlBcHBlbmRpbmdT
dHJpbmc6dGltZVRvU3RyaW5nKHJlbWFpbmluZ1RpbWUpXTsKLX0KLQotLSAoTlNTdHJpbmcgKill
bGFwc2VkVGltZVRleHQKLXsKLSAgICBpZiAoIVtfZGVsZWdhdGUgdmlkZW9FbGVtZW50XSkKLSAg
ICAgICAgcmV0dXJuIEAiIjsKLQotICAgIHJldHVybiB0aW1lVG9TdHJpbmcoW19kZWxlZ2F0ZSB2
aWRlb0VsZW1lbnRdLT5jdXJyZW50VGltZSgpKTsKLX0KLQotLy8gTUFSSzogTlNSZXNwb25kZXIK
LQotLSAodm9pZCltb3VzZUVudGVyZWQ6KE5TRXZlbnQgKil0aGVFdmVudAotewotICAgIFVOVVNF
RF9QQVJBTSh0aGVFdmVudCk7Ci0gICAgLy8gTWFrZSBzdXJlIHRoZSBIVUQgd29uJ3QgYmUgaGlk
ZGVuIGZyb20gbm93Ci0gICAgX21vdXNlSXNJbkhVRCA9IFlFUzsKLSAgICBbc2VsZiBmYWRlV2lu
ZG93SW5dOwotfQotCi0tICh2b2lkKW1vdXNlRXhpdGVkOihOU0V2ZW50ICopdGhlRXZlbnQKLXsK
LSAgICBVTlVTRURfUEFSQU0odGhlRXZlbnQpOwotICAgIF9tb3VzZUlzSW5IVUQgPSBOTzsKLSAg
ICBbc2VsZiBmYWRlV2luZG93SW5dOwotfQotCi0tICh2b2lkKXJld2luZDooaWQpc2VuZGVyCi17
Ci0gICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7Ci0gICAgaWYgKCFbX2RlbGVnYXRlIHZpZGVvRWxl
bWVudF0pCi0gICAgICAgIHJldHVybjsKLSAgICBbX2RlbGVnYXRlIHZpZGVvRWxlbWVudF0tPnJl
d2luZCgzMCk7Ci19Ci0KLS0gKHZvaWQpZmFzdEZvcndhcmQ6KGlkKXNlbmRlcgotewotICAgIFVO
VVNFRF9QQVJBTShzZW5kZXIpOwotICAgIGlmICghW19kZWxlZ2F0ZSB2aWRlb0VsZW1lbnRdKQot
ICAgICAgICByZXR1cm47Ci19Ci0KLS0gKHZvaWQpZXhpdEZ1bGxzY3JlZW46KGlkKXNlbmRlcgot
ewotICAgIFVOVVNFRF9QQVJBTShzZW5kZXIpOwotICAgIGlmIChfaXNFbmRpbmdGdWxsc2NyZWVu
KQotICAgICAgICByZXR1cm47Ci0gICAgX2lzRW5kaW5nRnVsbHNjcmVlbiA9IFlFUzsKLSAgICBb
X2RlbGVnYXRlIHJlcXVlc3RFeGl0RnVsbHNjcmVlbl07IAotfQotCi0vLyBNQVJLOiBOU1dpbmRv
d0RlbGVnYXRlCi0KLS0gKHZvaWQpd2luZG93RGlkRXhwb3NlOihOU05vdGlmaWNhdGlvbiAqKW5v
dGlmaWNhdGlvbgotewotICAgIFVOVVNFRF9QQVJBTShub3RpZmljYXRpb24pOwotICAgIFtzZWxm
IHNjaGVkdWxlVGltZVVwZGF0ZV07Ci19Ci0KLS0gKHZvaWQpd2luZG93RGlkQ2xvc2U6KE5TTm90
aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCi17Ci0gICAgVU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlv
bik7Ci0gICAgW3NlbGYgdW5zY2hlZHVsZVRpbWVVcGRhdGVdOwotfQotCi1AZW5kCi0KLSNlbmRp
Zgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390942</attachid>
            <date>2020-02-17 11:02:37 -0800</date>
            <delta_ts>2020-02-17 11:58:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207795-20200217110236.patch</filename>
            <type>text/plain</type>
            <size>79693</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2NTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTU3Yzk0NDI5ZDdhMzBj
MWRiNGUxMTVlMDA1ODVhMDRlMTdkNTZlZi4uZmFlN2M4MzgxZjg3MjY3YzliNTM4MDE4MTVmNTBk
MjU5YTJkNGZkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIwLTAyLTE0ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFN0b3AgdXNpbmcgUVRLaXQg
Zm9yIHJlbmRlcmluZyBXSzEgdmlkZW8gZnVsbHNjcmVlbiBjb250cm9scworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3Nzk1CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS80ODg5NDkxNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBEcml2ZS1ieSBmaXhlczoKKworICAgICAgICAtIERvbid0IHNldCB0aGUg
dmlkZW8gbGF5ZXIgdG8gbm90LXZpc2libGUgd2hlbiBpbiB2aWRlbyBmdWxsc2NyZWVuIG1vZGUu
CisgICAgICAgIC0gRXhwb3J0IHByZXZpb3VzbHkgdW4tZXhwb3J0ZWQgbWV0aG9kcy4KKyAgICAg
ICAgLSBNYWtlIHNvbWUgaW9zLW9ubHkgY2xhc3NlcyBhdmFpbGFibGUgb24gbWFjLgorICAgICAg
ICAtIEFkZCBhIGNvdXBsZSBwcmV2aW91c2x5IHVuaW1wbGVtZW50ZWQgcHJvcGVydGllcyB0byBX
ZWJBVlBsYXllckNvbnRyb2xsZXIgbmVlZGVkIGJ5IEFWS2l0LgorICAgICAgICAtIFdlYkNvcmVG
dWxsc2NyZWVuV2luZG93IGRvZXNuJ3QgZGVwZW5kIG9uIEZVTExTQ1JFRU5fQVBJLgorCisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
Ojp2aXNpYmlsaXR5U3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1l
bnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNldFZpZGVvRnVsbHNj
cmVlbkxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlQVZLaXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlQVZLaXQubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VB
VktpdDo6ZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9X
ZWJBVlBsYXllckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViQVZQbGF5
ZXJDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgY2FuU2Vl
a0ZyYW1lQmFja3dhcmRdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIGNhblNl
ZWtGcmFtZUZvcndhcmRdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZUZ1bGxTY3Jl
ZW5XaW5kb3cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZUZ1bGxTY3JlZW5XaW5k
b3cubW06CisKIDIwMjAtMDItMTMgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAK
ICAgICAgICAgTWVkaWFUb29sYm94IG1heSBub3QgYmUgYXZhaWxhYmxlOyBjaGVjayBiZWZvcmUg
Y2FsbGluZyBNVE92ZXJyaWRlU2hvdWxkUGxheUhEUlZpZGVvKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmlu
ZGV4IDg5MGE4NDM4ZmEwZjA2NzU3NmQ1MGE3OTRmZDJlMTBiMzYwYTU1MTMuLjFlYmU3OTZlNmE2
YWM1N2UyOGI2OGE3YTUyZjgwZTRiOTIzYmY4ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE2IEBACisyMDIwLTAyLTE0ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgor
CisgICAgICAgIFN0b3AgdXNpbmcgUVRLaXQgZm9yIHJlbmRlcmluZyBXSzEgdmlkZW8gZnVsbHNj
cmVlbiBjb250cm9scworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA3Nzk1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80ODg5NDkxNT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBBTC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhbC9zcGkvY29jb2EvQVZLaXRTUEkuaDoKKyAg
ICAgICAgKiBwYWwvc3BpL21hYy9OU1dpbmRvd1NQSS5oOgorICAgICAgICAqIHBhbC9zcGkvbWFj
L1FUS2l0U1BJLmg6IFJlbW92ZWQuCisKIDIwMjAtMDItMTIgIFJ5YW4gSGFkZGFkICA8cnlhbmhh
ZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjI1NjAx
MC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBlNjA3NDRmZjRiMjczMTBkMDJmZTAy
YjkxN2RmMDk0NTIzNGVhM2MwLi42ZWM1MTQzYzkzNjE4MzEwN2YxNTU1NDg4MmViYjM0ZTBjYTY0
ZTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzYgQEAKKzIwMjAt
MDItMTQgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcCB1
c2luZyBRVEtpdCBmb3IgcmVuZGVyaW5nIFdLMSB2aWRlbyBmdWxsc2NyZWVuIGNvbnRyb2xzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc3OTUKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ4ODk0OTE1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFN3aXRjaCB0byB1c2luZyBBVlBsYXllclZpZXcgaW5z
dGVhZCBvZiBRVEhVRCB0byByZW5kZXIgb3VyIGZ1bGxzY3JlZW4gY29udHJvbHMuCisKKyAgICAg
ICAgSW4gYWRkaXRpb24sIHN3aXRjaCB0byBhIG1vZGVybiBOU1dpbmRvdyBmdWxsc2NyZWVuIEFQ
SSwgd2l0aCBjdXN0b20sIHNtb290aCBhbmltYXRpb25zIHdoaWNoIAorICAgICAgICBtb3ZlIHRo
ZSBmdWxsc2NyZWVuIHdpbmRvdyB0byBhIHNlcGFyYXRlIHNwYWNlLiBUaGlzIHJlcXVpcmVzIHN1
YmNsYXNzaW5nIEFWUGxheWVyVmlldyBzbyB0aGF0CisgICAgICAgIGZ1bGxzY3JlZW4gdG9nZ2xp
bmcgd2lsbCBzaWduYWwgdG8gdGhlIGNvbnRyb2xsZXIsIHNvIHRoYXQgb3VyIGZ1bGxzY3JlZW4g
YnV0dG9uIGFuZCB0aGUgaW5saW5lCisgICAgICAgIHZlcnNpb24gb2Ygc2FtZSBkb24ndCBnZXQg
b3V0IG9mIHN5bmMuIEJlY2F1c2UgQVZQbGF5ZXJWaWV3IHJlcXVpcmVzIGFuIEFWUGxheWVyIGlu
IG9yZGVyIHRvCisgICAgICAgIGRpc3BsYXkgdGhlIHZpZGVvIGxheWVyLCBhbmQgd2Ugd29uJ3Qg
bmVjZXNzYXJpbHkgaGF2ZSBhbiBBVlBsYXllciBmb3IgTVNFLWJhY2tlZCB2aWRlb3MsIGluc3Rl
YWQKKyAgICAgICAgaW5zdGFsbCBhIGN1c3RvbSBvdmVybGF5IHZpZXcgaW5zaWRlIHRoZSBBVlBs
YXllclZpZXcgaW4gd2hpY2ggdG8gaG9zdCB0aGUgZnVsbHNjcmVlbiB2aWRlbyBsYXllci4KKwor
ICAgICAgICAqIFdlYlZpZXcvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5oOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbToKKyAgICAgICAgKC1b
V2ViT3ZlcmxheUxheWVyIGxheW91dFN1YmxheWVyc10pOgorICAgICAgICAoV2ViQVZQbGF5ZXJW
aWV3X2RlbGVnYXRlKToKKyAgICAgICAgKFdlYkFWUGxheWVyVmlld19zZXREZWxlZ2F0ZSk6Cisg
ICAgICAgIChXZWJBVlBsYXllclZpZXdfaXNGdWxsU2NyZWVuKToKKyAgICAgICAgKFdlYkFWUGxh
eWVyVmlld19lbnRlckZ1bGxTY3JlZW4pOgorICAgICAgICAoV2ViQVZQbGF5ZXJWaWV3X2V4aXRG
dWxsU2NyZWVuKToKKyAgICAgICAgKGFsbG9jV2ViQVZQbGF5ZXJWaWV3SW5zdGFuY2UpOgorICAg
ICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIGluaXRdKToKKyAgICAgICAgKC1b
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciBkZWFsbG9jXSk6CisgICAgICAgICgtW1dlYlZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgZnVsbHNjcmVlbldpbmRvd10pOgorICAgICAgICAoLVtX
ZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIHdpbmRvd0RpZExvYWRdKToKKyAgICAgICAgKC1b
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciBzZXRWaWRlb0VsZW1lbnQ6XSk6CisgICAgICAg
ICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgZW50ZXJGdWxsc2NyZWVuOl0pOgorICAg
ICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIGV4aXRGdWxsc2NyZWVuXSk6Cisg
ICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgYXBwbGljYXRpb25EaWRSZXNp
Z25BY3RpdmU6XSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgX3Jl
cXVlc3RFeGl0XSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgX3Jl
cXVlc3RFbnRlcl0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIGNh
bmNlbE9wZXJhdGlvbjpdKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ciBwbGF5ZXJWaWV3SXNGdWxsU2NyZWVuOl0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyIHBsYXllclZpZXdSZXF1ZXN0RW50ZXJGdWxsc2NyZWVuOl0pOgorICAgICAg
ICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIHBsYXllclZpZXdSZXF1ZXN0RXhpdEZ1
bGxzY3JlZW46XSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgY3Vz
dG9tV2luZG93c1RvRW50ZXJGdWxsU2NyZWVuRm9yV2luZG93Ol0pOgorICAgICAgICAoLVtXZWJW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIHdpbmRvdzpzdGFydEN1c3RvbUFuaW1hdGlvblRvRW50
ZXJGdWxsU2NyZWVuV2l0aER1cmF0aW9uOl0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyIGN1c3RvbVdpbmRvd3NUb0V4aXRGdWxsU2NyZWVuRm9yV2luZG93Ol0pOgor
ICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIHdpbmRvdzpzdGFydEN1c3Rv
bUFuaW1hdGlvblRvRXhpdEZ1bGxTY3JlZW5XaXRoRHVyYXRpb246XSk6CisgICAgICAgICgtW1dl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgd2luZG93RGlkRW50ZXJGdWxsU2NyZWVuOl0pOgor
ICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIHdpbmRvd1dpbGxFeGl0RnVs
bFNjcmVlbjpdKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciB3aW5k
b3dEaWRFeGl0RnVsbFNjcmVlbjpdKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlciBjbGVhckZhZGVBbmltYXRpb25dKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlciB3aW5kb3dEaWRFeGl0RnVsbHNjcmVlbl0pOiBEZWxldGVk
LgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIHdpbmRvd0RpZEVudGVy
RnVsbHNjcmVlbl0pOiBEZWxldGVkLgorICAgICAgICAoZnJhbWVFeHBhbmRlZFRvUmF0aW9PZkZy
YW1lKTogRGVsZXRlZC4KKyAgICAgICAgKGNyZWF0ZUJhY2tncm91bmRGdWxsc2NyZWVuV2luZG93
KTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciBzZXR1
cEZhZGVBbmltYXRpb25JZk5lZWRlZEFuZEZhZGVJbjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1b
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciBhcHBsaWNhdGlvbkRpZENoYW5nZVNjcmVlblBh
cmFtZXRlcnM6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXIgdXBkYXRlTWVudUFuZERvY2tGb3JGdWxsc2NyZWVuXSk6IERlbGV0ZWQuCisgICAgICAg
ICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgcmVxdWVzdEV4aXRGdWxsc2NyZWVuV2l0
aEFuaW1hdGlvbjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlciByZXF1ZXN0RXhpdEZ1bGxzY3JlZW5dKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2Vi
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciBmYWRlSFVESW5dKTogRGVsZXRlZC4KKyAgICAgICAg
KC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciBvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOm9m
T2JqZWN0OmNoYW5nZTpjb250ZXh0Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyIHJhdGVDaGFuZ2VkOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtX
ZWJWaWRlb0Z1bGxzY3JlZW5XaW5kb3cgaW5pdFdpdGhDb250ZW50UmVjdDpzdHlsZU1hc2s6YmFj
a2luZzpkZWZlcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuV2lu
ZG93IGRlYWxsb2NdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuV2lu
ZG93IHJlc2lnbkZpcnN0UmVzcG9uZGVyXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlZpZGVv
RnVsbHNjcmVlbldpbmRvdyBjYW5CZWNvbWVLZXlXaW5kb3ddKTogRGVsZXRlZC4KKyAgICAgICAg
KC1bV2ViVmlkZW9GdWxsc2NyZWVuV2luZG93IG1vdXNlRG93bjpdKTogRGVsZXRlZC4KKyAgICAg
ICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuV2luZG93IGNhbmNlbE9wZXJhdGlvbjpdKTogRGVsZXRl
ZC4KKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuV2luZG93IGFuaW1hdGVkUmVzaXplRGlk
RW5kXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbldpbmRvdyBhbmlt
YXRlRnJvbVJlY3Q6dG9SZWN0OndpdGhTdWJBbmltYXRpb246Y29udHJvbGxlckFjdGlvbjpdKTog
RGVsZXRlZC4KKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuV2luZG93IGFuaW1hdGlvbkRp
ZEVuZDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuV2luZG93IG1v
dXNlTW92ZWQ6XSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViVmlldy9XZWJWaWRlb0Z1bGxzY3Jl
ZW5IVURXaW5kb3dDb250cm9sbGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogV2ViVmlldy9XZWJW
aWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1tOiBSZW1vdmVkLgorCiAyMDIwLTAy
LTEzICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIHJvbGxpbmcgb3V0IHIyNTUxNTgsIDI1NTQwNSBhbmQgcjI1NTQ4NgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDM4ZDdm
YTllNWQwOWMyY2Q5ZDhjNjA4ZWJhMzhlNzA1MDRhMzA5NmEuLmQyZTBjODIwOTEzZDU0YzYwMGQ4
ZjE0YTIwYWEzZThjNDA1NDUzODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTk1LDcgKzk1LDYgQEAKIAkJMEM3Nzg1OUMxRjQ1
MTMwRjAwRjRFQkI2IC8qIE5TVmlld1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEM3Nzg1ODMxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TVmlld1NQSS5o
ICovOyB9OwogCQkwQzc3ODU5RDFGNDUxMzBGMDBGNEVCQjYgLyogTlNXaW5kb3dTUEkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBDNzc4NTg0MUY0NTEz
MEYwMEY0RUJCNiAvKiBOU1dpbmRvd1NQSS5oICovOyB9OwogCQkwQzc3ODU5RTFGNDUxMzBGMDBG
NEVCQjYgLyogUElQU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwQzc3ODU4NTFGNDUxMzBGMDBGNEVCQjYgLyogUElQU1BJLmggKi87IH07Ci0JCTBD
Nzc4NTlGMUY0NTEzMEYwMEY0RUJCNiAvKiBRVEtpdFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEM3Nzg1ODYxRjQ1MTMwRjAwRjRFQkI2IC8qIFFU
S2l0U1BJLmggKi87IH07CiAJCTBDNzc4NUEwMUY0NTEzMEYwMEY0RUJCNiAvKiBRdWlja0xvb2tN
YWNTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBD
Nzc4NTg3MUY0NTEzMEYwMEY0RUJCNiAvKiBRdWlja0xvb2tNYWNTUEkuaCAqLzsgfTsKIAkJMEM3
Nzg1QTExRjQ1MTMwRjAwRjRFQkI2IC8qIFRlbGVwaG9ueVV0aWxpdGllc1NQSS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEM3Nzg1ODgxRjQ1MTMwRjAw
RjRFQkI2IC8qIFRlbGVwaG9ueVV0aWxpdGllc1NQSS5oICovOyB9OwogCQkwQ0Y5OUNBNDFGNzM2
Mzc1MDA3RUU3OTMgLyogTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBDMDBDRkQxMUY2OENFNDYwMEFBQzI2RCAv
KiBNZWRpYVRpbWVBVkZvdW5kYXRpb24uY3BwICovOyB9OwpAQCAtMjYzLDcgKzI2Miw2IEBACiAJ
CTBDNzc4NTgzMUY0NTEzMEYwMEY0RUJCNiAvKiBOU1ZpZXdTUEkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTlNWaWV3U1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBDNzc4NTg0MUY0NTEzMEYwMEY0RUJCNiAvKiBOU1dpbmRvd1NQSS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBOU1dpbmRvd1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwQzc3ODU4NTFGNDUxMzBGMDBGNEVCQjYgLyogUElQU1BJLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBJUFNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQkwQzc3ODU4NjFGNDUxMzBGMDBGNEVCQjYgLyogUVRLaXRTUEkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUVRLaXRTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEM3Nzg1ODcxRjQ1MTMwRjAwRjRFQkI2IC8qIFF1aWNrTG9va01hY1NQSS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdWlja0xvb2tNYWNTUEkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEM3Nzg1ODgxRjQ1MTMwRjAwRjRFQkI2IC8qIFRlbGVw
aG9ueVV0aWxpdGllc1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZWxl
cGhvbnlVdGlsaXRpZXNTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMENGOTlD
QTYxRjczODQzNjAwN0VFNzkzIC8qIENvcmVNZWRpYVNvZnRMaW5rLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvcmVNZWRpYVNvZnRMaW5rLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUxMCw3ICs1MDgsNiBAQAogCQkJCTBDNzc4NTgzMUY0NTEz
MEYwMEY0RUJCNiAvKiBOU1ZpZXdTUEkuaCAqLywKIAkJCQkwQzc3ODU4NDFGNDUxMzBGMDBGNEVC
QjYgLyogTlNXaW5kb3dTUEkuaCAqLywKIAkJCQkwQzc3ODU4NTFGNDUxMzBGMDBGNEVCQjYgLyog
UElQU1BJLmggKi8sCi0JCQkJMEM3Nzg1ODYxRjQ1MTMwRjAwRjRFQkI2IC8qIFFUS2l0U1BJLmgg
Ki8sCiAJCQkJMEM3Nzg1ODcxRjQ1MTMwRjAwRjRFQkI2IC8qIFF1aWNrTG9va01hY1NQSS5oICov
LAogCQkJCUExMTc1QjQ4MUY2QUZGOEUwMEM0QjlGMCAvKiBTcGVlY2hTeW50aGVzaXNTUEkuaCAq
LywKIAkJCQkwQzc3ODU4ODFGNDUxMzBGMDBGNEVCQjYgLyogVGVsZXBob255VXRpbGl0aWVzU1BJ
LmggKi8sCkBAIC04MTMsNyArODEwLDYgQEAKIAkJCQkwQzc3ODU5RTFGNDUxMzBGMDBGNEVCQjYg
LyogUElQU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTE3NUI0RTFGNkIzMzczMDBDNEI5RjAg
LyogUG9wdXBNZW51LmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzJEQTE1NjFGM0JFQjQ5MDBEQkMz
MTcgLyogcHRocmVhZFNQSS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEM3Nzg1OUYxRjQ1MTMwRjAw
RjRFQkI2IC8qIFFUS2l0U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzJEQTE1NzFGM0JFQjQ5
MDBEQkMzMTcgLyogUXVhcnR6Q29yZVNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEM3Nzg1QTAx
RjQ1MTMwRjAwRjRFQkI2IC8qIFF1aWNrTG9va01hY1NQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDQ1MEZDQTAyMUY1RjYwMjAwNERGQTU2IC8qIFF1aWNrTG9va1NvZnRMaW5rLmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0FWS2l0
U1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9BVktpdFNQSS5oCmluZGV4
IDA5NDY5OGExYmVmMzMyYWMwMGEzOWEyMjEzYzczODcxMDQ4ZjVkN2MuLmM2OTZlY2U4YzRjNWFm
ZWNiOGU1NTRmNzBhMWIwNjE2ZWU3MGU1YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvc3BpL2NvY29hL0FWS2l0U1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9z
cGkvY29jb2EvQVZLaXRTUEkuaApAQCAtMjYsNiArMjYsMzQgQEAKICNpbXBvcnQgPG9iamMvcnVu
dGltZS5oPgogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CiAKKyNpZiBVU0UoQVBQTEVfSU5U
RVJOQUxfU0RLKQorI2ltcG9ydCA8QVZLaXQvQVZQbGF5ZXJDb250cm9sbGVyLmg+CisjZWxzZQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisjaW1wb3J0IDxVSUtpdC9VSVJlc3BvbmRlci5oPgor
QGludGVyZmFjZSBBVlBsYXllckNvbnRyb2xsZXIgOiBVSVJlc3BvbmRlcgorI2Vsc2UKKyNpbXBv
cnQgPFVJS2l0L05TUmVzcG9uZGVyLmg+CitAaW50ZXJmYWNlIEFWUGxheWVyQ29udHJvbGxlciA6
IE5TUmVzcG9uZGVyIDxOU1VzZXJJbnRlcmZhY2VWYWxpZGF0aW9ucz4KKyNlbmRpZgorQGVuZAor
CitAaW50ZXJmYWNlIEFWUGxheWVyQ29udHJvbGxlciAoKQordHlwZWRlZiBOU19FTlVNKE5TSW50
ZWdlciwgQVZQbGF5ZXJDb250cm9sbGVyU3RhdHVzKSB7CisgICAgQVZQbGF5ZXJDb250cm9sbGVy
U3RhdHVzVW5rbm93biA9IDAsCisgICAgQVZQbGF5ZXJDb250cm9sbGVyU3RhdHVzUmVhZHlUb1Bs
YXkgPSAyLAorfTsKKwordHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgQVZQbGF5ZXJDb250cm9s
bGVyRXh0ZXJuYWxQbGF5YmFja1R5cGUpIHsKKyAgICBBVlBsYXllckNvbnRyb2xsZXJFeHRlcm5h
bFBsYXliYWNrVHlwZU5vbmUgPSAwLAorICAgIEFWUGxheWVyQ29udHJvbGxlckV4dGVybmFsUGxh
eWJhY2tUeXBlQWlyUGxheSA9IDEsCisgICAgQVZQbGF5ZXJDb250cm9sbGVyRXh0ZXJuYWxQbGF5
YmFja1R5cGVUVk91dCA9IDIsCit9OworCitAcHJvcGVydHkgKE5TX05PTkFUT01JQ19JT1NPTkxZ
LCByZWFkb25seSkgQVZQbGF5ZXJDb250cm9sbGVyU3RhdHVzIHN0YXR1czsKK0BlbmQKKyNlbmRp
ZiAvLyBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICNpbXBvcnQgPEFWS2l0L0FWS2l0Lmg+CiAjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUu
aD4KQEAgLTM3LDcgKzY1LDYgQEAKICNpbXBvcnQgPEFWS2l0L0FWQmFja2dyb3VuZFZpZXcuaD4K
ICNlbmRpZgogCi0jaW1wb3J0IDxBVktpdC9BVlBsYXllckNvbnRyb2xsZXIuaD4KIElHTk9SRV9X
QVJOSU5HU19CRUdJTigib2JqYy1wcm9wZXJ0eS1uby1hdHRyaWJ1dGUiKQogI2ltcG9ydCA8QVZL
aXQvQVZQbGF5ZXJMYXllclZpZXcuaD4KIElHTk9SRV9XQVJOSU5HU19FTkQKQEAgLTExNSwyNCAr
MTQyLDYgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgQVZCYWNrZ3JvdW5kVmlld1RpbnRF
ZmZlY3RTdHlsZSkgewogLSAodm9pZClhZGRTdWJ2aWV3OihVSVZpZXcgKilzdWJ2aWV3IGFwcGx5
aW5nTWF0ZXJpYWxTdHlsZTooQVZCYWNrZ3JvdW5kVmlld01hdGVyaWFsU3R5bGUpbWF0ZXJpYWxT
dHlsZSB0aW50RWZmZWN0U3R5bGU6KEFWQmFja2dyb3VuZFZpZXdUaW50RWZmZWN0U3R5bGUpdGlu
dEVmZmVjdFN0eWxlOwogQGVuZAogCi1AaW50ZXJmYWNlIEFWUGxheWVyQ29udHJvbGxlciA6IFVJ
UmVzcG9uZGVyCi1AZW5kCi0KLUBpbnRlcmZhY2UgQVZQbGF5ZXJDb250cm9sbGVyICgpCi10eXBl
ZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBBVlBsYXllckNvbnRyb2xsZXJTdGF0dXMpIHsKLSAgICBB
VlBsYXllckNvbnRyb2xsZXJTdGF0dXNVbmtub3duID0gMCwKLSAgICBBVlBsYXllckNvbnRyb2xs
ZXJTdGF0dXNSZWFkeVRvUGxheSA9IDIsCi19OwotCi10eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2Vy
LCBBVlBsYXllckNvbnRyb2xsZXJFeHRlcm5hbFBsYXliYWNrVHlwZSkgewotICAgIEFWUGxheWVy
Q29udHJvbGxlckV4dGVybmFsUGxheWJhY2tUeXBlTm9uZSA9IDAsCi0gICAgQVZQbGF5ZXJDb250
cm9sbGVyRXh0ZXJuYWxQbGF5YmFja1R5cGVBaXJQbGF5ID0gMSwKLSAgICBBVlBsYXllckNvbnRy
b2xsZXJFeHRlcm5hbFBsYXliYWNrVHlwZVRWT3V0ID0gMiwKLX07Ci0KLUBwcm9wZXJ0eSAoTlNf
Tk9OQVRPTUlDX0lPU09OTFksIHJlYWRvbmx5KSBBVlBsYXllckNvbnRyb2xsZXJTdGF0dXMgc3Rh
dHVzOwotQGVuZAotCiBAY2xhc3MgQVZQbGF5ZXJMYXllcjsKIAogQGludGVyZmFjZSBBVlBpY3R1
cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXcgOiBVSVZpZXcKQEAgLTE3OCw2ICsxODcsMjYgQEAg
TlNfQVNTVU1FX05PTk5VTExfRU5ECiAjZW5kaWYgLy8gVVNFKEFQUExFX0lOVEVSTkFMX1NESykK
ICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCisjaWYgUExBVEZPUk0oTUFDKQorI2lm
IFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisjaW1wb3J0IDxBVktpdC9BVlBsYXllclZpZXdfUHJp
dmF0ZS5oPgorI2Vsc2UKKyNpbXBvcnQgPEFWS2l0L0FWUGxheWVyVmlldy5oPgorCitOU19BU1NV
TUVfTk9OTlVMTF9CRUdJTgorCitAaW50ZXJmYWNlIEFWUGxheWVyVmlldyAoV2ViS2l0RnVsbHNj
cmVlblNQSSkKK0Bwcm9wZXJ0eSBBVlBsYXllckNvbnRyb2xsZXIgKnBsYXllckNvbnRyb2xsZXI7
CitAcHJvcGVydHkgKHJlYWRvbmx5KSBCT09MIGlzRnVsbFNjcmVlbjsKKy0gKHZvaWQpZW50ZXJG
dWxsU2NyZWVuOihpZClzZW5kZXI7CistICh2b2lkKWV4aXRGdWxsU2NyZWVuOihpZClzZW5kZXI7
CitAZW5kCisKK05TX0FTU1VNRV9OT05OVUxMX0VORAorCisjZW5kaWYgLy8gVVNFKEFQUExFX0lO
VEVSTkFMX1NESykKKyNlbmRpZiAvLyBQTEFURk9STShNQUMpCisKICNpZiBFTkFCTEUoV0lSRUxF
U1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2lmIFVTRShB
UFBMRV9JTlRFUk5BTF9TREspCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3Nw
aS9tYWMvTlNXaW5kb3dTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9OU1dp
bmRvd1NQSS5oCmluZGV4IDA4YWY5NWEwNDRhZDY5OTA0MjA2MjE3YTRjNGE3NTAwMzA5YTRhMTMu
LmM1Njk0MjRhYzlmYmQ0ZjRiYTFkYWUyOTc2NmYxZDBiNjQwYTBlN2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9OU1dpbmRvd1NQSS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9OU1dpbmRvd1NQSS5oCkBAIC00MCw3ICs0MCw4IEBACiAt
IChpZClfb2xkRmlyc3RSZXNwb25kZXJCZWZvcmVCZWNvbWluZzsKIC0gKGlkKV9uZXdGaXJzdFJl
c3BvbmRlckFmdGVyUmVzaWduaW5nOwogLSAodm9pZClfc2V0Q3Vyc29yRm9yTW91c2VMb2NhdGlv
bjooTlNQb2ludClwb2ludDsKLQorLSAodm9pZClleGl0RnVsbFNjcmVlbk1vZGU6KGlkKXNlbmRl
cjsKKy0gKHZvaWQpZW50ZXJGdWxsU2NyZWVuTW9kZTooaWQpc2VuZGVyOwogQGVuZAogCiBlbnVt
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9RVEtpdFNQSS5o
IGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL1FUS2l0U1BJLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDA0YmIyNDk2MjcwODU3MjlmMTViYTE0YjQyOGE0ZTcwZjJmNmJi
YzQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL1FUS2l0U1BJLmgKKysrIC9kZXYvbnVsbApAQCAtMSwx
NTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBVU0UoQVBQ
TEVfSU5URVJOQUxfU0RLKQotCi0jaW1wb3J0IDxRVEtpdC9RVEhVREJhY2tncm91bmRWaWV3X1By
aXZhdGUuaD4KLSNpbXBvcnQgPFFUS2l0L1FUS2l0X1ByaXZhdGUuaD4KLSNpbXBvcnQgPFFUS2l0
L1FUVXRpbGl0aWVzX1ByaXZhdGUuaD4KLQotI2Vsc2UKLQotZW51bSB7Ci0gICAga1FUVGltZUlz
SW5kZWZpbml0ZSA9IDEgPDwgMAotfTsKLQotdHlwZWRlZiBzdHJ1Y3QgewotICAgIGxvbmcgbG9u
ZyB0aW1lVmFsdWU7Ci0gICAgbG9uZyB0aW1lU2NhbGU7Ci0gICAgbG9uZyBmbGFnczsKLX0gUVRU
aW1lOwotCi10eXBlZGVmIHN0cnVjdCB7Ci0gICAgUVRUaW1lIHRpbWU7Ci0gICAgUVRUaW1lIGR1
cmF0aW9uOwotfSBRVFRpbWVSYW5nZTsKLQotdHlwZWRlZiBlbnVtIHsKLSAgICBRVEluY2x1ZGVD
b21tb25UeXBlcyA9IDAsCi0gICAgUVRJbmNsdWRlT25seUZpZ01lZGlhRmlsZVR5cGVzID0gMSA8
PCA4LAotfSBRVE1vdmllRmlsZVR5cGVPcHRpb25zOwotCi1lbnVtIHsKLSAgICBRVE1vdmllVHlw
ZVVua25vd24gPSAwLAotICAgIFFUTW92aWVUeXBlTG9jYWwsCi0gICAgUVRNb3ZpZVR5cGVGYXN0
U3RhcnQsCi0gICAgUVRNb3ZpZVR5cGVMaXZlU3RyZWFtLAotICAgIFFUTW92aWVUeXBlU3RvcmVk
U3RyZWFtCi19OwotCi1AY2xhc3MgUVRUcmFjazsKLQotQGludGVyZmFjZSBRVE1lZGlhIDogTlNP
YmplY3QKLQotLSAoaWQpYXR0cmlidXRlRm9yS2V5OihOU1N0cmluZyAqKWF0dHJpYnV0ZUtleTsK
LQotQGVuZAotCi1AaW50ZXJmYWNlIFFUTW92aWUgOiBOU09iamVjdCA8TlNDb2RpbmcsIE5TQ29w
eWluZz4KLQotKyAoTlNBcnJheSAqKW1vdmllRmlsZVR5cGVzOihRVE1vdmllRmlsZVR5cGVPcHRp
b25zKXR5cGVzOwotCi0rICh2b2lkKWRpc2FibGVDb21wb25lbnQ6KENvbXBvbmVudERlc2NyaXB0
aW9uKWNvbXBvbmVudDsKLQotLSAoaWQpaW5pdFdpdGhBdHRyaWJ1dGVzOihOU0RpY3Rpb25hcnkg
KilhdHRyaWJ1dGVzIGVycm9yOihOU0Vycm9yICoqKWVycm9yUHRyOwotCi0tICh2b2lkKXBsYXk7
Ci0tICh2b2lkKXN0b3A7Ci0KLS0gKFFUVGltZSlkdXJhdGlvbjsKLQotLSAoUVRUaW1lKWN1cnJl
bnRUaW1lOwotLSAodm9pZClzZXRDdXJyZW50VGltZTooUVRUaW1lKXRpbWU7Ci0KLS0gKGZsb2F0
KXJhdGU7Ci0tICh2b2lkKXNldFJhdGU6KGZsb2F0KXJhdGU7Ci0KLS0gKGZsb2F0KXZvbHVtZTsK
LS0gKHZvaWQpc2V0Vm9sdW1lOihmbG9hdCl2b2x1bWU7Ci0KLS0gKE5TRGljdGlvbmFyeSAqKW1v
dmllQXR0cmlidXRlczsKLQotLSAoaWQpYXR0cmlidXRlRm9yS2V5OihOU1N0cmluZyAqKWF0dHJp
YnV0ZUtleTsKLS0gKHZvaWQpc2V0QXR0cmlidXRlOihpZCl2YWx1ZSBmb3JLZXk6KE5TU3RyaW5n
ICopYXR0cmlidXRlS2V5OwotCi0tIChOU0FycmF5ICopdHJhY2tzOwotCi0tIChOU0FycmF5ICop
YWx0ZXJuYXRlR3JvdXBUeXBlczsKLS0gKE5TQXJyYXkgKilhbHRlcm5hdGVzRm9yTWVkaWFUeXBl
OihOU1N0cmluZyAqKXR5cGU7Ci0tICh2b2lkKWRlc2VsZWN0QWx0ZXJuYXRlR3JvdXBUcmFjazoo
UVRUcmFjayAqKWFsdGVybmF0ZVRyYWNrOwotLSAodm9pZClzZWxlY3RBbHRlcm5hdGVHcm91cFRy
YWNrOihRVFRyYWNrICopYWx0ZXJuYXRlVHJhY2s7Ci0KLS0gKE5TVVJMICopVVJMOwotLSAoVUlu
dDMyKW1vdmllVHlwZTsKLQotQGVuZAotCi1AaW50ZXJmYWNlIFFUTW92aWVMYXllciA6IENBTGF5
ZXIKLQotLSAodm9pZClzZXRNb3ZpZTooUVRNb3ZpZSAqKW1vdmllOwotLSAoUVRNb3ZpZSAqKW1v
dmllOwotCi1AZW5kCi0KLUBpbnRlcmZhY2UgTlNWYWx1ZSAoTlNWYWx1ZVFUVGltZVJhbmdlRXh0
ZW5zaW9ucykKLSsgKE5TVmFsdWUgKil2YWx1ZVdpdGhRVFRpbWVSYW5nZTooUVRUaW1lUmFuZ2Up
cmFuZ2U7Ci0tIChRVFRpbWVSYW5nZSlRVFRpbWVSYW5nZVZhbHVlOwotQGVuZAotCi1AaW50ZXJm
YWNlIFFUVHJhY2sgOiBOU09iamVjdAotCi0tIChRVE1lZGlhICopbWVkaWE7Ci0KLS0gKEJPT0wp
aXNFbmFibGVkOwotLSAodm9pZClzZXRFbmFibGVkOihCT09MKWVuYWJsZWQ7Ci0KLS0gKGlkKWF0
dHJpYnV0ZUZvcktleTooTlNTdHJpbmcgKilhdHRyaWJ1dGVLZXk7Ci0KLUBlbmQKLQotQGludGVy
ZmFjZSBRVEhVREJhY2tncm91bmRWaWV3IDogTlNWaWV3Ci0KLS0gKHZvaWQpc2V0Q29udGVudEJv
cmRlclBvc2l0aW9uOihDR0Zsb2F0KWNvbnRlbnRCb3JkZXJQb3NpdGlvbjsKLQotQGVuZAotCi1A
aW50ZXJmYWNlIFFUVXRpbGl0aWVzIDogTlNPYmplY3QKLQotKyAoaWQpcXRVdGlsaXRpZXM7Ci0K
LS0gKE5TQXJyYXkgKilzaXRlc0luRG93bmxvYWRDYWNoZTsKLS0gKHZvaWQpY2xlYXJEb3dubG9h
ZENhY2hlOwotLSAodm9pZCljbGVhckRvd25sb2FkQ2FjaGVGb3JTaXRlOihOU1N0cmluZyAqKXNp
dGU7Ci0KLUBlbmQKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcAppbmRleCBhNzNiYzBiNGMyZmVlYjMxM2RmZTc3NWM4OGQ4ZWE5ZDA5OWEwYmY1Li4yNTQy
OWQ0NmIxYWU2OWI4YTA3ZWE1OTRiYTEwNzFlN2FiNGJjNjRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTU3ODksNyArNTc4OSw3IEBAIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6bWVkaWFWb2x1bWVEaWRDaGFuZ2UoKQogCiB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OnZpc2liaWxpdHlTdGF0ZUNoYW5nZWQoKQogewotICAgIGJvb2wgZWxlbWVudElzSGlkZGVu
ID0gZG9jdW1lbnQoKS5oaWRkZW4oKSAmJiBtX3ZpZGVvRnVsbHNjcmVlbk1vZGUgIT0gVmlkZW9G
dWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmU7CisgICAgYm9vbCBlbGVtZW50SXNIaWRkZW4g
PSBkb2N1bWVudCgpLmhpZGRlbigpICYmIG1fdmlkZW9GdWxsc2NyZWVuTW9kZSA9PSBWaWRlb0Z1
bGxzY3JlZW5Nb2RlTm9uZTsKICAgICBpZiAoZWxlbWVudElzSGlkZGVuID09IG1fZWxlbWVudElz
SGlkZGVuKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmgKaW5kZXggNTUyMmY4Y2U1MmEwMzk3NzA4NmViZDYwMzk0YjZiOWE4MTJlNTg1Yi4uYzg4
YjU3M2M1Mzg2ODkwNDE4ZmMzMDMwNGU4YjlkYjI4NjQ4OGRkNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTE4MSw3ICsxODEsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRQcmVwYXJlZFRvUmV0dXJuVmlkZW9MYXllclRvSW5saW5lKGJvb2wpOwogICAgIHZvaWQg
d2FpdEZvclByZXBhcmVkRm9ySW5saW5lVGhlbihXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlciA9IFtdIHsgfSk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgKFBM
QVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKLSAgICB2b2lk
IHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBXVEY6OkZ1bmN0aW9uPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciA9IFtdIHsgfSk7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiwgV1RGOjpGdW5jdGlv
bjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIgPSBbXSB7IH0pOwogI2lmZGVmIF9fT0JKQ19f
CiAgICAgUGxhdGZvcm1MYXllciogdmlkZW9GdWxsc2NyZWVuTGF5ZXIoKSBjb25zdCB7IHJldHVy
biBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyLmdldCgpOyB9CiAjZW5kaWYKQEAgLTQ0Niw3ICs0NDYs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChWaWRl
b0Z1bGxzY3JlZW5Nb2RlKTsKIAogICAgIHZvaWQgZW50ZXJGdWxsc2NyZWVuKFZpZGVvRnVsbHNj
cmVlbk1vZGUpOwotICAgIHZvaWQgZW50ZXJGdWxsc2NyZWVuKCkgb3ZlcnJpZGU7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBlbnRlckZ1bGxzY3JlZW4oKSBvdmVycmlkZTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGV4aXRGdWxsc2NyZWVuKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRWaWRlb0Z1bGxzY3JlZW5TdGFuZGJ5KGJvb2wpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5oCmlu
ZGV4IDdkZWUxNTI3ZWYyMzk1ZjllNmJjZTBjY2NiZWJiZGU3NGQ2ZGU3NGQuLjBmOWQxMjNiNzFh
MGI4OWYwMzVlYzJjMDM5NTc5OGY0YzA3YjQ4YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5oCkBA
IC0yNiw3ICsyNiw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKKyNpZiBIQVZFKEFWS0lUKQogCiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1
ZGUgIkhUTUxNZWRpYUVsZW1lbnRFbnVtcy5oIgpAQCAtNDEsMTAgKzQxLDYgQEAKICNpbmNsdWRl
IDx3dGYvUmV0YWluUHRyLmg+CiAKIE9CSkNfQ0xBU1MgV2ViQVZQbGF5ZXJDb250cm9sbGVyOwot
T0JKQ19DTEFTUyBBVlBsYXllclZpZXdDb250cm9sbGVyOwotT0JKQ19DTEFTUyBVSVZpZXdDb250
cm9sbGVyOwotT0JKQ19DTEFTUyBVSVdpbmRvdzsKLU9CSkNfQ0xBU1MgVUlWaWV3OwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbnRSZWN0OwpAQCAtOTIsNSArODgsNCBAQCBwcm90ZWN0
ZWQ6CiAKIH0KIAotI2VuZGlmCi0KKyNlbmRpZiAvLyBIQVZFKEFWS0lUKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZUFWS2l0Lm1tCmluZGV4IGZjYWIyNmZiYjcyZGViOTg5M2QyNWUyZmNkYmI5YTFkMTU5NzNjYmUu
LjlmMjc2ZWE5YmNiOGE0N2Y4MDAxNjM1MTljZTA3MWI5ZjQ5MDAyZGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlQVZLaXQubW0KQEAgLTI3LDcgKzI3LDYgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9y
dCAiUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQuaCIKIAotI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAjaWYgSEFWRShBVktJVCkKIAogI2ltcG9ydCAiTG9nZ2luZy5oIgpAQCAtMTg1LDkg
KzE4NCw5IEBAIHZvaWQgUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OmxlZ2libGVNZWRp
YVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnN0IFZlCiB2b2lkIFBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZUFWS2l0OjpleHRlcm5hbFBsYXliYWNrQ2hhbmdlZChib29sIGVuYWJsZWQsIFBsYXli
YWNrU2Vzc2lvbk1vZGVsOjpFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSB0YXJnZXRUeXBlLCBj
b25zdCBTdHJpbmcmIGxvY2FsaXplZERldmljZU5hbWUpCiB7CiAgICAgQVZQbGF5ZXJDb250cm9s
bGVyRXh0ZXJuYWxQbGF5YmFja1R5cGUgZXh0ZXJuYWxQbGF5YmFja1R5cGUgPSBBVlBsYXllckNv
bnRyb2xsZXJFeHRlcm5hbFBsYXliYWNrVHlwZU5vbmU7Ci0gICAgaWYgKHRhcmdldFR5cGUgPT0g
UGxheWJhY2tTZXNzaW9uTW9kZWw6OlRhcmdldFR5cGVBaXJQbGF5KQorICAgIGlmIChlbmFibGVk
ICYmIHRhcmdldFR5cGUgPT0gUGxheWJhY2tTZXNzaW9uTW9kZWw6OlRhcmdldFR5cGVBaXJQbGF5
KQogICAgICAgICBleHRlcm5hbFBsYXliYWNrVHlwZSA9IEFWUGxheWVyQ29udHJvbGxlckV4dGVy
bmFsUGxheWJhY2tUeXBlQWlyUGxheTsKLSAgICBlbHNlIGlmICh0YXJnZXRUeXBlID09IFBsYXli
YWNrU2Vzc2lvbk1vZGVsOjpUYXJnZXRUeXBlVFZPdXQpCisgICAgZWxzZSBpZiAoZW5hYmxlZCAm
JiB0YXJnZXRUeXBlID09IFBsYXliYWNrU2Vzc2lvbk1vZGVsOjpUYXJnZXRUeXBlVFZPdXQpCiAg
ICAgICAgIGV4dGVybmFsUGxheWJhY2tUeXBlID0gQVZQbGF5ZXJDb250cm9sbGVyRXh0ZXJuYWxQ
bGF5YmFja1R5cGVUVk91dDsKIAogICAgIFdlYkFWUGxheWVyQ29udHJvbGxlciogcGxheWVyQ29u
dHJvbGxlciA9IG1fcGxheWVyQ29udHJvbGxlci5nZXQoKTsKQEAgLTIzMSw0ICsyMzAsMyBAQCB2
b2lkIFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Ojptb2RlbERlc3Ryb3llZCgpCiB9CiAK
ICNlbmRpZiAvLyBIQVZFKEFWS0lUKQotI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQVZQbGF5ZXJDb250cm9s
bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQVZQbGF5ZXJDb250cm9sbGVy
LmgKaW5kZXggYTYzOWE5ODFmZmMwYjA2MmRhNjMwYzgxYmVhNGJkZGJmMmY2MzZhMS4uODk0MGQw
MmMzOTAzNmEzMzA0OTY2N2RlZDMxOGViOTZmNzVkMTIwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1dlYkFWUGxheWVyQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJBVlBsYXllckNvbnRyb2xsZXIuaApAQCAtMjMsNyArMjMs
NyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYg
SEFWRShBVktJVCkKKyNpZiBIQVZFKEFWS0lUKQogCiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0FW
S2l0U1BJLmg+CiAKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlQVZLaXQ7CiBAcHJvcGVydHkgKHJldGFpbikgTlNTdHJpbmcgKmxvY2FsaXplZERpc3BsYXlO
YW1lOwogQGVuZAogCi1AaW50ZXJmYWNlIFdlYkFWUGxheWVyQ29udHJvbGxlciA6IE5TT2JqZWN0
IHsKK1dFQkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgV2ViQVZQbGF5ZXJDb250cm9sbGVyIDogTlNP
YmplY3QgewogICAgIFdlYkFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKl9jdXJyZW50QXVkaW9NZWRp
YVNlbGVjdGlvbk9wdGlvbjsKICAgICBXZWJBVk1lZGlhU2VsZWN0aW9uT3B0aW9uICpfY3VycmVu
dExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbjsKICAgICBCT09MIF9waWN0dXJlSW5QaWN0dXJl
SW50ZXJydXB0ZWQ7CkBAIC01Miw2ICs1Miw5IEBAIGNsYXNzIFBsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZUFWS2l0OwogQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBjYW5TZWVrVG9CZWdpbm5pbmc7
CiBAcHJvcGVydHkgKHJlYWRvbmx5KSBCT09MIGNhblNlZWtUb0VuZDsKIEBwcm9wZXJ0eSAocmVh
ZG9ubHkpIEJPT0wgaXNTY3J1YmJpbmc7CitAcHJvcGVydHkgKHJlYWRvbmx5KSBCT09MIGNhblNl
ZWtGcmFtZUJhY2t3YXJkOworQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBjYW5TZWVrRnJhbWVG
b3J3YXJkOworQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBoYXNDb250ZW50Q2hhcHRlcnM7CiAK
IEBwcm9wZXJ0eSBCT09MIGNhblBsYXk7CiBAcHJvcGVydHkgKGdldHRlcj1pc1BsYXlpbmcpIEJP
T0wgcGxheWluZzsKQEAgLTEwMCw0ICsxMDMsMyBAQCBjbGFzcyBQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2VBVktpdDsKIEBlbmQKIAogI2VuZGlmCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9XZWJBVlBsYXllckNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvV2ViQVZQbGF5ZXJDb250cm9sbGVyLm1tCmluZGV4IGQ1OWJhODc4NzdlYzRj
OGE4YzY2YzE4MGIxZTc1Y2FiMTlkNDQ0ZGEuLjIyOTc3NWM2Y2I1MDUzYjlhNTRlM2MwOWM0YmNj
ZjUzY2E5NzhkYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJB
VlBsYXllckNvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dl
YkFWUGxheWVyQ29udHJvbGxlci5tbQpAQCAtMjcsNyArMjcsNyBAQAogI2ltcG9ydCAiY29uZmln
LmgiCiAjaW1wb3J0ICJXZWJBVlBsYXllckNvbnRyb2xsZXIuaCIKIAotI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpICYmIEhBVkUoQVZLSVQpCisjaWYgSEFWRShBVktJVCkKIAogI2ltcG9ydCAiTG9n
Z2luZy5oIgogI2ltcG9ydCAiUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQuaCIKQEAgLTM5
Nyw2ICszOTcsMTYgQEAgLSAodm9pZClzZWVrQ2hhcHRlckZvcndhcmQ6KGlkKXNlbmRlcgogICAg
IFtzZWxmIHNlZWtUb0VuZDpzZW5kZXJdOwogfQogCistIChCT09MKWNhblNlZWtGcmFtZUJhY2t3
YXJkCit7CisgICAgcmV0dXJuIFlFUzsKK30KKworLSAoQk9PTCljYW5TZWVrRnJhbWVGb3J3YXJk
Cit7CisgICAgcmV0dXJuIFlFUzsKK30KKwogLSAoQk9PTCloYXNNZWRpYVNlbGVjdGlvbk9wdGlv
bnMKIHsKICAgICByZXR1cm4gW3NlbGYgaGFzQXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNdIHx8
IFtzZWxmIGhhc0xlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNdOwpAQCAtNjUwLDUgKzY2MCw1
IEBAIC0gKHZvaWQpZGVhbGxvYwogCiBAZW5kCiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFN
SUxZKQorI2VuZGlmIC8vIEhBVkUoQVZLSVQpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9XZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1dlYkNvcmVGdWxsU2NyZWVuV2luZG93LmgKaW5kZXggMjExY2NlYTFlNGQ0
MzU2YTU5MDcwMTY3YWVkZGY5MGMyYzUwMDg1MC4uNjI5N2IwZGJmNzhkNmJiMjFhNDRiNTIyM2Fj
YjU2NzgzNGQ4ZDVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dl
YkNvcmVGdWxsU2NyZWVuV2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1dlYkNvcmVGdWxsU2NyZWVuV2luZG93LmgKQEAgLTIzLDE0ICsyMywxMSBAQAogICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViQ29yZUZ1bGxTY3Jl
ZW5XaW5kb3dfaAotI2RlZmluZSBXZWJDb3JlRnVsbFNjcmVlbldpbmRvd19oCisjcHJhZ21hIG9u
Y2UKIAotI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkp
CisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKIFdFQkNPUkVfRVhQT1JUIEBpbnRlcmZhY2Ug
V2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cgOiBOU1dpbmRvdwogQGVuZAogCi0jZW5kaWYgLy8gRU5B
QkxFKEZVTExTQ1JFRU5fQVBJKQotCi0jZW5kaWYgLy8gV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3df
aAorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cubW0KaW5kZXggYWE2OGUw
MTNmYjRjODIwMjEyYjcwYjRkMGEwZGIwODI2OTIzOTg4Mi4uMzUzMjU1OWQ5MjI3MDNlZjdlMzIx
MDkzYjQ3NWE5OTQ0YjAwOWMwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1dlYkNvcmVGdWxsU2NyZWVuV2luZG93Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9XZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5tbQpAQCAtMjUsNyArMjUsNyBAQAogCiAj
aW1wb3J0ICJjb25maWcuaCIKIAotI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkgJiYgIVBMQVRG
T1JNKElPU19GQU1JTFkpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIldl
YkNvcmVGdWxsU2NyZWVuV2luZG93LmgiCiAKQEAgLTEwMSw0ICsxMDEsNCBAQCAtICh2b2lkKXNl
dFN0eWxlTWFzazooTlNVSW50ZWdlcilzdHlsZU1hc2sKIH0KIEBlbmQKIAotI2VuZGlmIC8vIEVO
QUJMRShGVUxMU0NSRUVOX0FQSSkKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyLmgKaW5kZXggZThmYjU2Mjk1MDk1YmYzN2E0ZDI4ODA3NTA0
NmYzNWJkZDJlMDg1YS4uOWE2NGE2MGNjM2I1YmViMTg3MjIyMWE1MjYxOWZhMmYyMmMyMzIyMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLmgKQEAgLTMzLDE0ICszMywxMiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBIVE1MVmlkZW9FbGVtZW50OwogfQogCi1AY2xhc3MgV2ViVmlk
ZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlcjsKIEBjbGFzcyBXZWJXaW5kb3dGYWRlQW5p
bWF0aW9uOwogCiBAaW50ZXJmYWNlIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgOiBOU1dp
bmRvd0NvbnRyb2xsZXIgewogICAgIFJlZlB0cjxXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50PiBf
dmlkZW9FbGVtZW50OwogCiAgICAgTlNXaW5kb3cgKl9iYWNrZ3JvdW5kRnVsbHNjcmVlbldpbmRv
dzsgLy8gKHJldGFpbikKLSAgICBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVy
ICpfaHVkQ29udHJvbGxlcjsgLy8gKHJldGFpbikKIAogICAgIFdlYldpbmRvd0ZhZGVBbmltYXRp
b24gKl9mYWRlQW5pbWF0aW9uOyAvLyAocmV0YWluKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xs
ZXIubW0KaW5kZXggNzZiYjQ3NmFiMDQ0MDFkODM4NGUwYTdjN2YyYzEwZTZmMGNkYjZmYi4uZDYw
NWI3MGM4N2ZhOTNhNjNlZWVjY2I0OTdiYzRkMzdhZDQ2MmNiZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlci5tbQpAQCAtMjcsMjggKzI3LDExMyBAQAogCiAjaWYgRU5BQkxFKFZJREVPKSAm
JiBQTEFURk9STShNQUMpCiAKLSNpbXBvcnQgIldlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0Nv
bnRyb2xsZXIuaCIKLSNpbXBvcnQgIldlYldpbmRvd0FuaW1hdGlvbi5oIgogI2ltcG9ydCA8QVZG
b3VuZGF0aW9uL0FWUGxheWVyLmg+Ci0jaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZQbGF5ZXJMYXll
ci5oPgotI2ltcG9ydCA8Q2FyYm9uL0NhcmJvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9IVE1MVmlk
ZW9FbGVtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1BsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFW
S2l0Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1BsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50
Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1dlYkFWUGxheWVyQ29udHJvbGxlci5oPgorI2ltcG9ydCA8
V2ViQ29yZS9XZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5oPgorI2ltcG9ydCA8b2JqYy9tZXNzYWdl
Lmg+CiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KLSNpbXBvcnQgPHBhbC9zeXN0ZW0vU2xlZXBE
aXNhYmxlci5oPgorI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9BVktpdFNQSS5oPgorI2ltcG9ydCA8
cGFsL3NwaS9tYWMvTlNXaW5kb3dTUEkuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAor
I2ltcG9ydCA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+CiAjaW1wb3J0IDxwYWwvY29jb2Ev
QVZGb3VuZGF0aW9uU29mdExpbmsuaD4KIAorU09GVExJTktfQVZLSVRfRlJBTUVXT1JLKCkKK1NP
RlRfTElOS19DTEFTUyhBVktpdCwgQVZQbGF5ZXJWaWV3KQorCiBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19CRUdJTgogCi1AaW50ZXJmYWNlIFdlYlZpZGVvRnVsbHNjcmVlbldpbmRvdyA6
IE5TV2luZG93PE5TQW5pbWF0aW9uRGVsZWdhdGU+IHsKLSAgICBTRUwgX2NvbnRyb2xsZXJBY3Rp
b25PbkFuaW1hdGlvbkVuZDsKLSAgICBXZWJXaW5kb3dTY2FsZUFuaW1hdGlvbiAqX2Z1bGxzY3Jl
ZW5BbmltYXRpb247IC8vIChyZXRhaW4pCitAaW50ZXJmYWNlIEFWUGxheWVyVmlldyAoU2VjcmV0
U3R1ZmYpCitAcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduKSBCT09MIHNob3dzQXVkaW9Pbmx5
SW5kaWNhdG9yVmlldzsKK0BlbmQKKworQGludGVyZmFjZSBXZWJPdmVybGF5TGF5ZXIgOiBDQUxh
eWVyCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJPdmVybGF5TGF5ZXIKKy0gKHZvaWQpbGF5
b3V0U3VibGF5ZXJzCit7CisgICAgZm9yIChDQUxheWVyKiBsYXllciBpbiBzZWxmLnN1YmxheWVy
cykKKyAgICAgICAgbGF5ZXIuZnJhbWUgPSBzZWxmLmJvdW5kczsKIH0KLS0gKHZvaWQpYW5pbWF0
ZUZyb21SZWN0OihOU1JlY3Qpc3RhcnRSZWN0IHRvUmVjdDooTlNSZWN0KWVuZFJlY3Qgd2l0aFN1
YkFuaW1hdGlvbjooTlNBbmltYXRpb24gKilzdWJBbmltYXRpb24gY29udHJvbGxlckFjdGlvbjoo
U0VMKWNvbnRyb2xsZXJBY3Rpb247CiBAZW5kCiAKLUBpbnRlcmZhY2UgV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlciAoKSA8V2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlckRl
bGVnYXRlPgorQGNsYXNzIFdlYkFWUGxheWVyVmlldzsKKworQHByb3RvY29sIFdlYkFWUGxheWVy
Vmlld0RlbGVnYXRlCistIChCT09MKXBsYXllclZpZXdJc0Z1bGxTY3JlZW46KFdlYkFWUGxheWVy
VmlldyopcGxheWVyVmlldzsKKy0gKHZvaWQpcGxheWVyVmlld1JlcXVlc3RFbnRlckZ1bGxzY3Jl
ZW46KFdlYkFWUGxheWVyVmlldyopcGxheWVyVmlldzsKKy0gKHZvaWQpcGxheWVyVmlld1JlcXVl
c3RFeGl0RnVsbHNjcmVlbjooV2ViQVZQbGF5ZXJWaWV3KilwbGF5ZXJWaWV3OworQGVuZAorCitA
aW50ZXJmYWNlIFdlYkFWUGxheWVyVmlldyA6IEFWUGxheWVyVmlldworQHByb3BlcnR5ICh3ZWFr
KSBpZDxXZWJBVlBsYXllclZpZXdEZWxlZ2F0ZT4gZGVsZWdhdGU7CitAZW5kCisKK3N0YXRpYyBp
ZDxXZWJBVlBsYXllclZpZXdEZWxlZ2F0ZT4gV2ViQVZQbGF5ZXJWaWV3X2RlbGVnYXRlKGlkIGFT
ZWxmLCBTRUwpCit7CisgICAgdm9pZCogZGVsZWdhdGUgPSBuaWw7CisgICAgb2JqZWN0X2dldElu
c3RhbmNlVmFyaWFibGUoYVNlbGYsICJfd2ViRGVsZWdhdGUiLCAmZGVsZWdhdGUpOworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxpZDxXZWJBVlBsYXllclZpZXdEZWxlZ2F0ZT4+KGRlbGVnYXRlKTsK
K30KKworc3RhdGljIHZvaWQgV2ViQVZQbGF5ZXJWaWV3X3NldERlbGVnYXRlKGlkIGFTZWxmLCBT
RUwsIGlkPFdlYkFWUGxheWVyVmlld0RlbGVnYXRlPiBkZWxlZ2F0ZSkKK3sKKyAgICBvYmplY3Rf
c2V0SW5zdGFuY2VWYXJpYWJsZShhU2VsZiwgIl93ZWJEZWxlZ2F0ZSIsIGRlbGVnYXRlKTsKK30K
Kworc3RhdGljIEJPT0wgV2ViQVZQbGF5ZXJWaWV3X2lzRnVsbFNjcmVlbihpZCBhU2VsZiwgU0VM
KQoreworICAgIFdlYkFWUGxheWVyVmlldyAqcGxheWVyVmlldyA9IGFTZWxmOworICAgIHJldHVy
biBbcGxheWVyVmlldy5kZWxlZ2F0ZSBwbGF5ZXJWaWV3SXNGdWxsU2NyZWVuOnBsYXllclZpZXdd
OworfQorCitzdGF0aWMgdm9pZCBXZWJBVlBsYXllclZpZXdfZW50ZXJGdWxsU2NyZWVuKGlkIGFT
ZWxmLCBTRUwsIGlkIHNlbmRlcikKK3sKKyAgICBXZWJBVlBsYXllclZpZXcgKnBsYXllclZpZXcg
PSBhU2VsZjsKKyAgICBbcGxheWVyVmlldy5kZWxlZ2F0ZSBwbGF5ZXJWaWV3UmVxdWVzdEVudGVy
RnVsbHNjcmVlbjpwbGF5ZXJWaWV3XTsKK30KKworc3RhdGljIHZvaWQgV2ViQVZQbGF5ZXJWaWV3
X2V4aXRGdWxsU2NyZWVuKGlkIGFTZWxmLCBTRUwsIGlkIHNlbmRlcikKK3sKKyAgICBXZWJBVlBs
YXllclZpZXcgKnBsYXllclZpZXcgPSBhU2VsZjsKKyAgICBbcGxheWVyVmlldy5kZWxlZ2F0ZSBw
bGF5ZXJWaWV3UmVxdWVzdEV4aXRGdWxsc2NyZWVuOnBsYXllclZpZXddOworfQorCitzdGF0aWMg
V2ViQVZQbGF5ZXJWaWV3ICphbGxvY1dlYkFWUGxheWVyVmlld0luc3RhbmNlKCkKK3sKKyAgICBz
dGF0aWMgQ2xhc3MgdGhlQ2xhc3MgPSBuaWw7CisgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBv
bmNlVG9rZW47CisgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeeworICAgICAgICBBU1NF
UlQoZ2V0QVZQbGF5ZXJWaWV3Q2xhc3MoKSk7CisgICAgICAgIENsYXNzIGFDbGFzcyA9IG9iamNf
YWxsb2NhdGVDbGFzc1BhaXIoZ2V0QVZQbGF5ZXJWaWV3Q2xhc3MoKSwgIldlYkFWUGxheWVyVmll
dyIsIDApOworICAgICAgICB0aGVDbGFzcyA9IGFDbGFzczsKKyAgICAgICAgY2xhc3NfYWRkTWV0
aG9kKHRoZUNsYXNzLCBAc2VsZWN0b3Ioc2V0RGVsZWdhdGU6KSwgKElNUClXZWJBVlBsYXllclZp
ZXdfc2V0RGVsZWdhdGUsICJ2QDpAIik7CisgICAgICAgIGNsYXNzX2FkZE1ldGhvZCh0aGVDbGFz
cywgQHNlbGVjdG9yKGRlbGVnYXRlKSwgKElNUClXZWJBVlBsYXllclZpZXdfZGVsZWdhdGUsICJA
QDoiKTsKKyAgICAgICAgY2xhc3NfYWRkTWV0aG9kKHRoZUNsYXNzLCBAc2VsZWN0b3IoaXNGdWxs
U2NyZWVuKSwgKElNUClXZWJBVlBsYXllclZpZXdfaXNGdWxsU2NyZWVuLCAiQkA6Iik7CisgICAg
ICAgIGNsYXNzX2FkZE1ldGhvZCh0aGVDbGFzcywgQHNlbGVjdG9yKGVudGVyRnVsbFNjcmVlbjop
LCAoSU1QKVdlYkFWUGxheWVyVmlld19lbnRlckZ1bGxTY3JlZW4sICJ2QDpAIik7CisgICAgICAg
IGNsYXNzX2FkZE1ldGhvZCh0aGVDbGFzcywgQHNlbGVjdG9yKGV4aXRGdWxsU2NyZWVuOiksIChJ
TVApV2ViQVZQbGF5ZXJWaWV3X2V4aXRGdWxsU2NyZWVuLCAidkA6QCIpOworCisgICAgICAgIGNs
YXNzX2FkZEl2YXIodGhlQ2xhc3MsICJfd2ViRGVsZWdhdGUiLCBzaXplb2YoaWQpLCBsb2cyKHNp
emVvZihpZCkpLCAiQCIpOworICAgICAgICBjbGFzc19hZGRJdmFyKHRoZUNsYXNzLCAiX3dlYklz
RnVsbFNjcmVlbiIsIHNpemVvZihCT09MKSwgbG9nMihzaXplb2YoQk9PTCkpLCAiQiIpOworCisg
ICAgICAgIG9iamNfcmVnaXN0ZXJDbGFzc1BhaXIodGhlQ2xhc3MpOworICAgIH0pOworICAgIHJl
dHVybiAoV2ViQVZQbGF5ZXJWaWV3ICopW3RoZUNsYXNzIGFsbG9jXTsKK30KKworQGludGVyZmFj
ZSBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyICgpIDxXZWJBVlBsYXllclZpZXdEZWxlZ2F0
ZSwgTlNXaW5kb3dEZWxlZ2F0ZT4geworICAgIFJlZlB0cjxXZWJDb3JlOjpQbGF5YmFja1Nlc3Np
b25Nb2RlbE1lZGlhRWxlbWVudD4gX3BsYXliYWNrTW9kZWw7CisgICAgUmVmUHRyPFdlYkNvcmU6
OlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0PiBfcGxheWJhY2tJbnRlcmZhY2U7CisgICAg
UmV0YWluUHRyPE5TVmlldz4gX2NvbnRlbnRPdmVybGF5OworICAgIEJPT0wgX2lzRnVsbFNjcmVl
bjsKK30KK0Bwcm9wZXJ0eSAocmVhZG9ubHkpIFdlYkNvcmVGdWxsU2NyZWVuV2luZG93KiBmdWxs
c2NyZWVuV2luZG93OworQHByb3BlcnR5IChyZWFkb25seSkgV2ViQVZQbGF5ZXJWaWV3KiBwbGF5
ZXJWaWV3OwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlcgpAQCAtNTYsNDEgKzE0MSw1NiBAQCBAaW1wbGVtZW50YXRpb24gV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlcgogLSAoaWQpaW5pdAogewogICAgIC8vIERvIG5vdCBkZWZlciB3aW5kb3cg
Y3JlYXRpb24sIHRvIG1ha2Ugc3VyZSAtd2luZG93TnVtYmVyIGlzIGNyZWF0ZWQgKG5lZWRlZCBi
eSBXZWJXaW5kb3dTY2FsZUFuaW1hdGlvbikuCi0gICAgTlNXaW5kb3cgKndpbmRvdyA9IFtbV2Vi
VmlkZW9GdWxsc2NyZWVuV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0Ok5TWmVyb1Jl
Y3Qgc3R5bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01hc2sgYmFja2luZzpOU0JhY2tpbmdTdG9y
ZUJ1ZmZlcmVkIGRlZmVyOk5PXTsKKyAgICBOU1dpbmRvdyAqd2luZG93ID0gW1tXZWJDb3JlRnVs
bFNjcmVlbldpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpOU1plcm9SZWN0IHN0eWxl
TWFzazooTlNXaW5kb3dTdHlsZU1hc2tGdWxsU2l6ZUNvbnRlbnRWaWV3IHwgTlNXaW5kb3dTdHls
ZU1hc2tSZXNpemFibGUpIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpOT107
CisgICAgW3dpbmRvdyBzZXRDb2xsZWN0aW9uQmVoYXZpb3I6KFt3aW5kb3cgY29sbGVjdGlvbkJl
aGF2aW9yXSB8IE5TV2luZG93Q29sbGVjdGlvbkJlaGF2aW9yRnVsbFNjcmVlblByaW1hcnkpXTsK
KyAgICB3aW5kb3cuZGVsZWdhdGUgPSBzZWxmOwogICAgIHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhX
aW5kb3c6d2luZG93XTsKICAgICBbd2luZG93IHJlbGVhc2VdOwogICAgIGlmICghc2VsZikKICAg
ICAgICAgcmV0dXJuIG5pbDsKKyAgICBfcGxheWJhY2tNb2RlbCA9IFdlYkNvcmU6OlBsYXliYWNr
U2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjpjcmVhdGUoKTsKKyAgICBfcGxheWJhY2tJbnRlcmZh
Y2UgPSBXZWJDb3JlOjpQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6Y3JlYXRlKCpfcGxh
eWJhY2tNb2RlbCk7CisgICAgX2NvbnRlbnRPdmVybGF5ID0gYWRvcHROUyhbW05TVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0XSk7CisgICAgX2NvbnRlbnRPdmVybGF5LmdldCgp
LmxheWVyQ29udGVudHNSZWRyYXdQb2xpY3kgPSBOU1ZpZXdMYXllckNvbnRlbnRzUmVkcmF3TmV2
ZXI7CisgICAgX2NvbnRlbnRPdmVybGF5LmdldCgpLmxheWVyID0gW1tbV2ViT3ZlcmxheUxheWVy
IGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgW19jb250ZW50T3ZlcmxheSBzZXRXYW50
c0xheWVyOllFU107CisgICAgW19jb250ZW50T3ZlcmxheSBzZXRBdXRvcmVzaXppbmdNYXNrOihO
U1ZpZXdXaWR0aFNpemFibGUgfCBOU1ZpZXdIZWlnaHRTaXphYmxlKV07CiAgICAgW3NlbGYgd2lu
ZG93RGlkTG9hZF07CisKICAgICByZXR1cm4gc2VsZjsKLSAgICAKIH0KIC0gKHZvaWQpZGVhbGxv
YwogewogICAgIEFTU0VSVCghX2JhY2tncm91bmRGdWxsc2NyZWVuV2luZG93KTsKICAgICBBU1NF
UlQoIV9mYWRlQW5pbWF0aW9uKTsKLSAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRD
ZW50ZXJdIHJlbW92ZU9ic2VydmVyOnNlbGZdOworICAgIF9wbGF5ZXJWaWV3LmRlbGVnYXRlID0g
bmlsOworICAgIF9wbGF5YmFja01vZGVsID0gbmlsOwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0K
IAotLSAoV2ViVmlkZW9GdWxsc2NyZWVuV2luZG93ICopZnVsbHNjcmVlbldpbmRvdworLSAoV2Vi
Q29yZUZ1bGxTY3JlZW5XaW5kb3cgKilmdWxsc2NyZWVuV2luZG93CiB7Ci0gICAgcmV0dXJuIChX
ZWJWaWRlb0Z1bGxzY3JlZW5XaW5kb3cgKilbc3VwZXIgd2luZG93XTsKKyAgICByZXR1cm4gKFdl
YkNvcmVGdWxsU2NyZWVuV2luZG93ICopW3N1cGVyIHdpbmRvd107CiB9CiAKIC0gKHZvaWQpd2lu
ZG93RGlkTG9hZAogewogICAgIGF1dG8gd2luZG93ID0gW3NlbGYgZnVsbHNjcmVlbldpbmRvd107
Ci0gICAgYXV0byBjb250ZW50VmlldyA9IFt3aW5kb3cgY29udGVudFZpZXddOwogCiAgICAgW3dp
bmRvdyBzZXRIYXNTaGFkb3c6WUVTXTsgLy8gVGhpcyBpcyBuaWNlciB3aXRoIGEgc2hhZG93Lgog
ICAgIFt3aW5kb3cgc2V0TGV2ZWw6TlNQb3BVcE1lbnVXaW5kb3dMZXZlbC0xXTsKIAotICAgIFtj
b250ZW50VmlldyBzZXRMYXllcjpbQ0FMYXllciBsYXllcl1dOwotICAgIFtjb250ZW50VmlldyBz
ZXRXYW50c0xheWVyOllFU107CisgICAgX3BsYXllclZpZXcgPSBbYWxsb2NXZWJBVlBsYXllclZp
ZXdJbnN0YW5jZSgpIGluaXRXaXRoRnJhbWU6d2luZG93LmNvbnRlbnRMYXlvdXRSZWN0XTsKKyAg
ICBfcGxheWVyVmlldy5jb250cm9sc1N0eWxlID0gQVZQbGF5ZXJWaWV3Q29udHJvbHNTdHlsZU5v
bmU7CisgICAgX3BsYXllclZpZXcuc2hvd3NGdWxsU2NyZWVuVG9nZ2xlQnV0dG9uID0gWUVTOwor
ICAgIF9wbGF5ZXJWaWV3LnNob3dzQXVkaW9Pbmx5SW5kaWNhdG9yVmlldyA9IE5POworICAgIF9w
bGF5ZXJWaWV3LmRlbGVnYXRlID0gc2VsZjsKKyAgICB3aW5kb3cuY29udGVudFZpZXcgPSBfcGxh
eWVyVmlldzsKKyAgICBbX2NvbnRlbnRPdmVybGF5IHNldEZyYW1lOl9wbGF5ZXJWaWV3LmNvbnRl
bnRPdmVybGF5Vmlldy5ib3VuZHNdOworICAgIFtfcGxheWVyVmlldy5jb250ZW50T3ZlcmxheVZp
ZXcgYWRkU3VidmlldzpfY29udGVudE92ZXJsYXkuZ2V0KCldOwogCi0gICAgW1tOU05vdGlmaWNh
dGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxl
Y3RvcihhcHBsaWNhdGlvbkRpZFJlc2lnbkFjdGl2ZTopIG5hbWU6TlNBcHBsaWNhdGlvbkRpZFJl
c2lnbkFjdGl2ZU5vdGlmaWNhdGlvbiBvYmplY3Q6TlNBcHBdOwotICAgIFtbTlNOb3RpZmljYXRp
b25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0
b3IoYXBwbGljYXRpb25EaWRDaGFuZ2VTY3JlZW5QYXJhbWV0ZXJzOikgbmFtZTpOU0FwcGxpY2F0
aW9uRGlkQ2hhbmdlU2NyZWVuUGFyYW1ldGVyc05vdGlmaWNhdGlvbiBvYmplY3Q6TlNBcHBdOwor
Ly8gICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjpz
ZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihhcHBsaWNhdGlvbkRpZFJlc2lnbkFjdGl2ZTopIG5hbWU6
TlNBcHBsaWNhdGlvbkRpZFJlc2lnbkFjdGl2ZU5vdGlmaWNhdGlvbiBvYmplY3Q6TlNBcHBdOwor
Ly8gICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjpz
ZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihhcHBsaWNhdGlvbkRpZENoYW5nZVNjcmVlblBhcmFtZXRl
cnM6KSBuYW1lOk5TQXBwbGljYXRpb25EaWRDaGFuZ2VTY3JlZW5QYXJhbWV0ZXJzTm90aWZpY2F0
aW9uIG9iamVjdDpOU0FwcF07CiB9CiAKIC0gKE5ha2VkUHRyPFdlYkNvcmU6OkhUTUxWaWRlb0Vs
ZW1lbnQ+KXZpZGVvRWxlbWVudApAQCAtMTA3LDc1ICsyMDcsMjcgQEAgLSAodm9pZClzZXRWaWRl
b0VsZW1lbnQ6KE5ha2VkUHRyPFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ+KXZpZGVvRWxlbWVu
dAogCiAgICAgaWYgKCFbc2VsZiBpc1dpbmRvd0xvYWRlZF0pCiAgICAgICAgIHJldHVybjsKLSAg
ICBhdXRvIGNvcmVQbGF5ZXIgPSB2aWRlb0VsZW1lbnQtPnBsYXllcigpOwotICAgIGlmICghY29y
ZVBsYXllcikKLSAgICAgICAgcmV0dXJuOwotICAgIGF1dG8gcGxheWVyID0gY29yZVBsYXllci0+
b2JqQ0FWRm91bmRhdGlvbkFWUGxheWVyKCk7Ci0gICAgaWYgKCFwbGF5ZXIpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGF1dG8gY29udGVudFZpZXcgPSBbW3NlbGYgZnVsbHNjcmVlbldpbmRvd10g
Y29udGVudFZpZXddOwotCi0gICAgYXV0byBsYXllciA9IGFkb3B0TlMoW1BBTDo6YWxsb2NBVlBs
YXllckxheWVySW5zdGFuY2UoKSBpbml0XSk7Ci0gICAgW2xheWVyIHNldFBsYXllcjpwbGF5ZXJd
OwotCi0gICAgW2NvbnRlbnRWaWV3IHNldExheWVyOmxheWVyLmdldCgpXTsKLQotICAgIC8vIEZJ
WE1FOiBUaGUgd2luZG93RGlkTG9hZCBtZXRob2QgYWxyZWFkeSBjYWxsZWQgdGhpcywgc28gaXQg
c2hvdWxkCi0gICAgLy8gbm90IGJlIG5lY2Vzc2FyeSB0byBkbyBpdCBhZ2FpbiBoZXJlLgotICAg
IFtjb250ZW50VmlldyBzZXRXYW50c0xheWVyOllFU107CiAKLSAgICAvLyBGSVhNRTogVGhpcyBj
YW4gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzLCBhbmQgd29uJ3QgbmVjZXNzYXJpbHkgYmUKLSAg
ICAvLyBiYWxhbmNlZCBieSBjYWxscyB0byB3aW5kb3dEaWRFeGl0RnVsbHNjcmVlbiBpbiBzb21l
IGNhc2VzLCBzbyBpdAotICAgIC8vIHdvdWxkIGJlIGJldHRlciB0byBjaGFuZ2UgdGhpbmdzIHNv
IHRoZSBvYnNlcnZlciBpcyByZWxpYWJseSBhZGRlZAotICAgIC8vIG9ubHkgb25jZSBhbmQgZ3Vh
cmFudGVlZCByZW1vdmVkIGV2ZW4gaW4gdW51c3VhbCBlZGdlIGNhc2VzLgotICAgIFtwbGF5ZXIg
YWRkT2JzZXJ2ZXI6c2VsZiBmb3JLZXlQYXRoOkAicmF0ZSIgb3B0aW9uczowIGNvbnRleHQ6bnVs
bHB0cl07CisgICAgX3BsYXliYWNrTW9kZWwtPnNldE1lZGlhRWxlbWVudCh2aWRlb0VsZW1lbnQp
OworICAgIHNlbGYucGxheWVyVmlldy5wbGF5ZXJDb250cm9sbGVyID0gKEFWUGxheWVyQ29udHJv
bGxlciopX3BsYXliYWNrSW50ZXJmYWNlLT5wbGF5ZXJDb250cm9sbGVyKCk7CiB9CiAKLS0gKENH
RmxvYXQpY2xlYXJGYWRlQW5pbWF0aW9uCi17Ci0gICAgW19mYWRlQW5pbWF0aW9uIHN0b3BBbmlt
YXRpb25dOwotICAgIENHRmxvYXQgcHJldmlvdXNBbHBoYSA9IFtfZmFkZUFuaW1hdGlvbiBjdXJy
ZW50QWxwaGFdOwotICAgIFtfZmFkZUFuaW1hdGlvbiBzZXRXaW5kb3c6bmlsXTsKLSAgICBbX2Zh
ZGVBbmltYXRpb24gcmVsZWFzZV07Ci0gICAgX2ZhZGVBbmltYXRpb24gPSBuaWw7Ci0gICAgcmV0
dXJuIHByZXZpb3VzQWxwaGE7Ci19Ci0KLS0gKHZvaWQpd2luZG93RGlkRXhpdEZ1bGxzY3JlZW4K
Ky0gKHZvaWQpZW50ZXJGdWxsc2NyZWVuOihOU1NjcmVlbiAqKXNjcmVlbgogewotICAgIENBTGF5
ZXIgKmxheWVyID0gW1tbc2VsZiB3aW5kb3ddIGNvbnRlbnRWaWV3XSBsYXllcl07Ci0gICAgaWYg
KFtsYXllciBpc0tpbmRPZkNsYXNzOlBBTDo6Z2V0QVZQbGF5ZXJMYXllckNsYXNzKCldKQotICAg
ICAgICBbWyhBVlBsYXllckxheWVyICopbGF5ZXIgcGxheWVyXSByZW1vdmVPYnNlcnZlcjpzZWxm
IGZvcktleVBhdGg6QCJyYXRlIl07Ci0KLSAgICBbc2VsZiBjbGVhckZhZGVBbmltYXRpb25dOwot
ICAgIFtbc2VsZiB3aW5kb3ddIGNsb3NlXTsKLSAgICBbc2VsZiBzZXRXaW5kb3c6bmlsXTsKLSAg
ICBbc2VsZiB1cGRhdGVNZW51QW5kRG9ja0ZvckZ1bGxzY3JlZW5dOyAgIAotICAgIFtfaHVkQ29u
dHJvbGxlciBzZXREZWxlZ2F0ZTpuaWxdOwotICAgIFtfaHVkQ29udHJvbGxlciByZWxlYXNlXTsK
LSAgICBfaHVkQ29udHJvbGxlciA9IG5pbDsKLSAgICBbX2JhY2tncm91bmRGdWxsc2NyZWVuV2lu
ZG93IGNsb3NlXTsKLSAgICBbX2JhY2tncm91bmRGdWxsc2NyZWVuV2luZG93IHJlbGVhc2VdOwot
ICAgIF9iYWNrZ3JvdW5kRnVsbHNjcmVlbldpbmRvdyA9IG5pbDsKLSAgICAKLSAgICBbc2VsZiBh
dXRvcmVsZWFzZV07IC8vIEFzc29jaWF0ZWQgLXJldGFpbiBpcyBpbiAtZXhpdEZ1bGxzY3JlZW4u
Ci0gICAgX2lzRW5kaW5nRnVsbHNjcmVlbiA9IE5POworICAgIGlmICghX3ZpZGVvRWxlbWVudCkK
KyAgICAgICAgcmV0dXJuOworICAgIFtOU0FuaW1hdGlvbkNvbnRleHQgYmVnaW5Hcm91cGluZ107
CisgICAgX3ZpZGVvRWxlbWVudC0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoX2NvbnRlbnRPdmVy
bGF5LmdldCgpLmxheWVyLCBbc2VsZiwgcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKV0g
eworICAgICAgICBbc2VsZi5mdWxsc2NyZWVuV2luZG93IHNldEZyYW1lOnNlbGYudmlkZW9FbGVt
ZW50UmVjdCBkaXNwbGF5OllFU107CisgICAgICAgIFtzZWxmLmZ1bGxzY3JlZW5XaW5kb3cgbWFr
ZUtleUFuZE9yZGVyRnJvbnQ6c2VsZl07CisgICAgICAgIFtzZWxmLmZ1bGxzY3JlZW5XaW5kb3cg
ZW50ZXJGdWxsU2NyZWVuTW9kZTpzZWxmXTsKKyAgICAgICAgW05TQW5pbWF0aW9uQ29udGV4dCBl
bmRHcm91cGluZ107CisgICAgfSk7CiB9CiAKLS0gKHZvaWQpd2luZG93RGlkRW50ZXJGdWxsc2Ny
ZWVuCistICh2b2lkKWV4aXRGdWxsc2NyZWVuCiB7Ci0gICAgW3NlbGYgY2xlYXJGYWRlQW5pbWF0
aW9uXTsKLQotICAgIEFTU0VSVCghX2h1ZENvbnRyb2xsZXIpOwotICAgIF9odWRDb250cm9sbGVy
ID0gW1tXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyIGFsbG9jXSBpbml0XTsK
LSAgICBbX2h1ZENvbnRyb2xsZXIgc2V0RGVsZWdhdGU6c2VsZl07Ci0KLSAgICBbc2VsZiB1cGRh
dGVNZW51QW5kRG9ja0ZvckZ1bGxzY3JlZW5dOwotICAgIFtOU0N1cnNvciBzZXRIaWRkZW5VbnRp
bE1vdXNlTW92ZXM6WUVTXTsKLSAgICAKLSAgICAvLyBHaXZlIHRoZSBIVUQga2V5Ym9hcmQgZm9j
dXMgaW5pdGlhbGx5Ci0gICAgW19odWRDb250cm9sbGVyIGZhZGVXaW5kb3dJbl07CisgICAgW3Nl
bGYuZnVsbHNjcmVlbldpbmRvdyBleGl0RnVsbFNjcmVlbk1vZGU6c2VsZl07CiB9CiAKIC0gKE5T
UmVjdCl2aWRlb0VsZW1lbnRSZWN0CkBAIC0xODQsMzI0ICsyMzYsMTA3IEBAIC0gKE5TUmVjdCl2
aWRlb0VsZW1lbnRSZWN0CiB9CiAKIC0gKHZvaWQpYXBwbGljYXRpb25EaWRSZXNpZ25BY3RpdmU6
KE5TTm90aWZpY2F0aW9uKilub3RpZmljYXRpb24KLXsgICAKK3sKICAgICBVTlVTRURfUEFSQU0o
bm90aWZpY2F0aW9uKTsKICAgICBOU1dpbmRvdyogZnVsbHNjcmVlbldpbmRvdyA9IFtzZWxmIGZ1
bGxzY3JlZW5XaW5kb3ddOwogCiAgICAgLy8gUmVwbGljYXRlIHRoZSBRdWlja1RpbWUgUGxheWVy
IChYKSBiZWhhdmlvciB3aGVuIGxvc2luZyBhY3RpdmUgYXBwbGljYXRpb24gc3RhdHVzOgotICAg
IC8vIElzIHRoZSBmdWxsc2NyZWVuIHNjcmVlbiB0aGUgbWFpbiBzY3JlZW4/IChOb3RlOiB0aGlz
IGNvdmVycyB0aGUgY2FzZSB3aGVyZSBvbmx5IGEgCi0gICAgLy8gc2luZ2xlIHNjcmVlbiBpcyBh
dmFpbGFibGUuKSAgSXMgdGhlIGZ1bGxzY3JlZW4gc2NyZWVuIG9uIHRoZSBjdXJyZW50IHNwYWNl
PyBJRkYgc28sIAotICAgIC8vIHRoZW4gZXhpdCBmdWxsc2NyZWVuIG1vZGUuICAgIAorICAgIC8v
IElzIHRoZSBmdWxsc2NyZWVuIHNjcmVlbiB0aGUgbWFpbiBzY3JlZW4/IChOb3RlOiB0aGlzIGNv
dmVycyB0aGUgY2FzZSB3aGVyZSBvbmx5IGEKKyAgICAvLyBzaW5nbGUgc2NyZWVuIGlzIGF2YWls
YWJsZS4pICBJcyB0aGUgZnVsbHNjcmVlbiBzY3JlZW4gb24gdGhlIGN1cnJlbnQgc3BhY2U/IElG
RiBzbywKKyAgICAvLyB0aGVuIGV4aXQgZnVsbHNjcmVlbiBtb2RlLgogICAgIGlmIChmdWxsc2Ny
ZWVuV2luZG93LnNjcmVlbiA9PSBbTlNTY3JlZW4gc2NyZWVuc11bMF0gJiYgZnVsbHNjcmVlbldp
bmRvdy5vbkFjdGl2ZVNwYWNlKQotICAgICAgICBbc2VsZiByZXF1ZXN0RXhpdEZ1bGxzY3JlZW5X
aXRoQW5pbWF0aW9uOk5PXTsKLX0KLQotCi0vLyBNQVJLOiAtCi0vLyBNQVJLOiBFeHBvc2VkIElu
dGVyZmFjZQotCi1zdGF0aWMgTlNSZWN0IGZyYW1lRXhwYW5kZWRUb1JhdGlvT2ZGcmFtZShOU1Jl
Y3QgZnJhbWVUb0V4cGFuZCwgTlNSZWN0IGZyYW1lKQotewotICAgIC8vIEtlZXAgYSBjb25zdHJh
aW5lZCBhc3BlY3QgcmF0aW8gZm9yIHRoZSBkZXN0aW5hdGlvbiB3aW5kb3cKLSAgICBOU1JlY3Qg
cmVzdWx0ID0gZnJhbWVUb0V4cGFuZDsKLSAgICBDR0Zsb2F0IG5ld1JhdGlvID0gZnJhbWUuc2l6
ZS53aWR0aCAvIGZyYW1lLnNpemUuaGVpZ2h0OwotICAgIENHRmxvYXQgb3JpZ2luYWxSYXRpbyA9
IGZyYW1lVG9FeHBhbmQuc2l6ZS53aWR0aCAvIGZyYW1lVG9FeHBhbmQuc2l6ZS5oZWlnaHQ7Ci0g
ICAgaWYgKG5ld1JhdGlvID4gb3JpZ2luYWxSYXRpbykgewotICAgICAgICBDR0Zsb2F0IG5ld1dp
ZHRoID0gbmV3UmF0aW8gKiBmcmFtZVRvRXhwYW5kLnNpemUuaGVpZ2h0OwotICAgICAgICBDR0Zs
b2F0IGRpZmYgPSBuZXdXaWR0aCAtIGZyYW1lVG9FeHBhbmQuc2l6ZS53aWR0aDsKLSAgICAgICAg
cmVzdWx0LnNpemUud2lkdGggPSBuZXdXaWR0aDsKLSAgICAgICAgcmVzdWx0Lm9yaWdpbi54IC09
IGRpZmYgLyAyOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIENHRmxvYXQgbmV3SGVpZ2h0ID0gZnJh
bWVUb0V4cGFuZC5zaXplLndpZHRoIC8gbmV3UmF0aW87Ci0gICAgICAgIENHRmxvYXQgZGlmZiA9
IG5ld0hlaWdodCAtIGZyYW1lVG9FeHBhbmQuc2l6ZS5oZWlnaHQ7Ci0gICAgICAgIHJlc3VsdC5z
aXplLmhlaWdodCA9IG5ld0hlaWdodDsKLSAgICAgICAgcmVzdWx0Lm9yaWdpbi55IC09IGRpZmYg
LyAyOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1zdGF0aWMgTlNXaW5kb3cgKmNy
ZWF0ZUJhY2tncm91bmRGdWxsc2NyZWVuV2luZG93KE5TUmVjdCBmcmFtZSwgaW50IGxldmVsKQot
ewotICAgIE5TV2luZG93ICp3aW5kb3cgPSBbW05TV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRl
bnRSZWN0OmZyYW1lIHN0eWxlTWFzazpOU0JvcmRlcmxlc3NXaW5kb3dNYXNrIGJhY2tpbmc6TlNC
YWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpOT107Ci0gICAgW3dpbmRvdyBzZXRPcGFxdWU6WUVT
XTsKLSAgICBbd2luZG93IHNldEJhY2tncm91bmRDb2xvcjpbTlNDb2xvciBibGFja0NvbG9yXV07
Ci0gICAgW3dpbmRvdyBzZXRMZXZlbDpsZXZlbF07Ci0gICAgW3dpbmRvdyBzZXRSZWxlYXNlZFdo
ZW5DbG9zZWQ6Tk9dOwotICAgIHJldHVybiB3aW5kb3c7Ci19Ci0KLS0gKHZvaWQpc2V0dXBGYWRl
QW5pbWF0aW9uSWZOZWVkZWRBbmRGYWRlSW46KEJPT0wpZmFkZUluCi17Ci0gICAgQ0dGbG9hdCBp
bml0aWFsQWxwaGEgPSBmYWRlSW4gPyAwIDogMTsKLSAgICBpZiAoX2ZhZGVBbmltYXRpb24pIHsK
LSAgICAgICAgLy8gTWFrZSBzdXJlIHdlIHN1cHBvcnQgcXVldWluZyBhbmltYXRpb24gaWYgdGhl
IHByZXZpb3VzIG9uZSBpc24ndCBvdmVyIHlldAotICAgICAgICBpbml0aWFsQWxwaGEgPSBbc2Vs
ZiBjbGVhckZhZGVBbmltYXRpb25dOwotICAgIH0KLSAgICBpZiAoIV9mb3JjZURpc2FibGVBbmlt
YXRpb24pCi0gICAgICAgIF9mYWRlQW5pbWF0aW9uID0gW1tXZWJXaW5kb3dGYWRlQW5pbWF0aW9u
IGFsbG9jXSBpbml0V2l0aER1cmF0aW9uOjAuMiB3aW5kb3c6X2JhY2tncm91bmRGdWxsc2NyZWVu
V2luZG93IGluaXRpYWxBbHBoYTppbml0aWFsQWxwaGEgZmluYWxBbHBoYTpmYWRlSW4gPyAxIDog
MF07Ci19Ci0KLS0gKHZvaWQpZW50ZXJGdWxsc2NyZWVuOihOU1NjcmVlbiAqKXNjcmVlbgotewot
ICAgIGlmICghc2NyZWVuKQotICAgICAgICBzY3JlZW4gPSBbTlNTY3JlZW4gbWFpblNjcmVlbl07
Ci0KLSAgICBOU1JlY3QgZW5kRnJhbWUgPSBbc2NyZWVuIGZyYW1lXTsKLSAgICBOU1JlY3QgZnJh
bWUgPSBmcmFtZUV4cGFuZGVkVG9SYXRpb09mRnJhbWUoW3NlbGYgdmlkZW9FbGVtZW50UmVjdF0s
IGVuZEZyYW1lKTsKLQotICAgIC8vIENyZWF0ZSBhIGJsYWNrIHdpbmRvdyBpZiBuZWVkZWQKLSAg
ICBpZiAoIV9iYWNrZ3JvdW5kRnVsbHNjcmVlbldpbmRvdykKLSAgICAgICAgX2JhY2tncm91bmRG
dWxsc2NyZWVuV2luZG93ID0gY3JlYXRlQmFja2dyb3VuZEZ1bGxzY3JlZW5XaW5kb3coW3NjcmVl
biBmcmFtZV0sIFtbc2VsZiB3aW5kb3ddIGxldmVsXS0xKTsKLSAgICBlbHNlCi0gICAgICAgIFtf
YmFja2dyb3VuZEZ1bGxzY3JlZW5XaW5kb3cgc2V0RnJhbWU6W3NjcmVlbiBmcmFtZV0gZGlzcGxh
eTpOT107Ci0KLSAgICBbc2VsZiBzZXR1cEZhZGVBbmltYXRpb25JZk5lZWRlZEFuZEZhZGVJbjpZ
RVNdOwotICAgIGlmIChfZm9yY2VEaXNhYmxlQW5pbWF0aW9uKSB7Ci0gICAgICAgIC8vIFRoaXMg
d2lsbCBkaXNhYmxlIHNjYWxlIGFuaW1hdGlvbgotICAgICAgICBmcmFtZSA9IE5TWmVyb1JlY3Q7
Ci0gICAgfQotICAgIFtbc2VsZiBmdWxsc2NyZWVuV2luZG93XSBhbmltYXRlRnJvbVJlY3Q6ZnJh
bWUgdG9SZWN0OmVuZEZyYW1lIHdpdGhTdWJBbmltYXRpb246X2ZhZGVBbmltYXRpb24gY29udHJv
bGxlckFjdGlvbjpAc2VsZWN0b3Iod2luZG93RGlkRW50ZXJGdWxsc2NyZWVuKV07Ci0KLSAgICBb
X2JhY2tncm91bmRGdWxsc2NyZWVuV2luZG93IG9yZGVyV2luZG93Ok5TV2luZG93QmVsb3cgcmVs
YXRpdmVUbzpbW3NlbGYgZnVsbHNjcmVlbldpbmRvd10gd2luZG93TnVtYmVyXV07Ci19Ci0KLS0g
KHZvaWQpZXhpdEZ1bGxzY3JlZW4KLXsKLSAgICBpZiAoX2lzRW5kaW5nRnVsbHNjcmVlbikKLSAg
ICAgICAgcmV0dXJuOwotICAgIF9pc0VuZGluZ0Z1bGxzY3JlZW4gPSBZRVM7Ci0gICAgW19odWRD
b250cm9sbGVyIGNsb3NlV2luZG93XTsKLQotICAgIE5TUmVjdCBlbmRGcmFtZSA9IFtzZWxmIHZp
ZGVvRWxlbWVudFJlY3RdOwotCi0gICAgW3NlbGYgc2V0dXBGYWRlQW5pbWF0aW9uSWZOZWVkZWRB
bmRGYWRlSW46Tk9dOwotICAgIGlmIChfZm9yY2VEaXNhYmxlQW5pbWF0aW9uKSB7Ci0gICAgICAg
IC8vIFRoaXMgd2lsbCBkaXNhYmxlIHNjYWxlIGFuaW1hdGlvbgotICAgICAgICBlbmRGcmFtZSA9
IE5TWmVyb1JlY3Q7Ci0gICAgfQotICAgIAotICAgIC8vIFdlIGhhdmUgdG8gcmV0YWluIG91cnNl
bHZlcyBiZWNhdXNlIHdlIHdhbnQgdG8gYmUgYWxpdmUgZm9yIHRoZSBlbmQgb2YgdGhlIGFuaW1h
dGlvbi4KLSAgICAvLyBJZiBvdXIgb3duZXIgcmVsZWFzZXMgdXMgd2UgY291bGQgY3Jhc2ggaWYg
dGhpcyBpcyBub3QgdGhlIGNhc2UuCi0gICAgLy8gQmFsYW5jZWQgaW4gd2luZG93RGlkRXhpdEZ1
bGxzY3JlZW4KLSAgICBbc2VsZiByZXRhaW5dOyAgICAKLQotICAgIE5TUmVjdCBzdGFydEZyYW1l
ID0gW1tzZWxmIHdpbmRvd10gZnJhbWVdOwotICAgIGVuZEZyYW1lID0gZnJhbWVFeHBhbmRlZFRv
UmF0aW9PZkZyYW1lKGVuZEZyYW1lLCBzdGFydEZyYW1lKTsKLQotICAgIFtbc2VsZiBmdWxsc2Ny
ZWVuV2luZG93XSBhbmltYXRlRnJvbVJlY3Q6c3RhcnRGcmFtZSB0b1JlY3Q6ZW5kRnJhbWUgd2l0
aFN1YkFuaW1hdGlvbjpfZmFkZUFuaW1hdGlvbiBjb250cm9sbGVyQWN0aW9uOkBzZWxlY3Rvcih3
aW5kb3dEaWRFeGl0RnVsbHNjcmVlbildOworICAgICAgICBbc2VsZiBfcmVxdWVzdEV4aXRdOwog
fQogCi0tICh2b2lkKWFwcGxpY2F0aW9uRGlkQ2hhbmdlU2NyZWVuUGFyYW1ldGVyczooTlNOb3Rp
ZmljYXRpb24qKW5vdGlmaWNhdGlvbgotewotICAgIFVOVVNFRF9QQVJBTShub3RpZmljYXRpb24p
OwotICAgIC8vIFRoZSB1c2VyIG1heSBoYXZlIGNoYW5nZWQgdGhlIG1haW4gc2NyZWVuIGJ5IG1v
dmluZyB0aGUgbWVudSBiYXIsIG9yIHRoZXkgbWF5IGhhdmUgY2hhbmdlZAotICAgIC8vIHRoZSBE
b2NrJ3Mgc2l6ZSBvciBsb2NhdGlvbiwgb3IgdGhleSBtYXkgaGF2ZSBjaGFuZ2VkIHRoZSBmdWxs
c2NyZWVuIHNjcmVlbidzIGRpbWVuc2lvbnMuICAKLSAgICAvLyBVcGRhdGUgb3VyIHByZXNlbnRh
dGlvbiBwYXJhbWV0ZXJzLCBhbmQgZW5zdXJlIHRoYXQgdGhlIGZ1bGwgc2NyZWVuIHdpbmRvdyBv
Y2N1cGllcyB0aGUgCi0gICAgLy8gZW50aXJlIHNjcmVlbjoKLSAgICBbc2VsZiB1cGRhdGVNZW51
QW5kRG9ja0ZvckZ1bGxzY3JlZW5dOwotICAgIFtbc2VsZiB3aW5kb3ddIHNldEZyYW1lOltbW3Nl
bGYgd2luZG93XSBzY3JlZW5dIGZyYW1lXSBkaXNwbGF5OllFU107Ci19Ci0KLS0gKHZvaWQpdXBk
YXRlTWVudUFuZERvY2tGb3JGdWxsc2NyZWVuCi17Ci0gICAgLy8gTlNBcHBsaWNhdGlvblByZXNl
bnRhdGlvbk9wdGlvbnMgaXMgYXZhaWxhYmxlIG9uID4gMTAuNiBvbmx5OgotICAgIE5TQXBwbGlj
YXRpb25QcmVzZW50YXRpb25PcHRpb25zIG9wdGlvbnMgPSBOU0FwcGxpY2F0aW9uUHJlc2VudGF0
aW9uRGVmYXVsdDsKLSAgICBOU1NjcmVlbiogZnVsbHNjcmVlblNjcmVlbiA9IFtbc2VsZiB3aW5k
b3ddIHNjcmVlbl07Ci0KLSAgICBpZiAoIV9pc0VuZGluZ0Z1bGxzY3JlZW4pIHsKLSAgICAgICAg
Ly8gQXV0by1oaWRlIHRoZSBtZW51IGJhciBpZiB0aGUgZnVsbHNjcmVlblNjcmVlbiBjb250YWlu
cyB0aGUgbWVudSBiYXI6Ci0gICAgICAgIC8vIE5PVEU6IGlmIHRoZSBmdWxsc2NyZWVuU2NyZWVu
IGNvbnRhaW5zIHRoZSBtZW51IGJhciBidXQgbm90IHRoZSBkb2NrLCB3ZSBtdXN0IHN0aWxsIAot
ICAgICAgICAvLyBhdXRvLWhpZGUgdGhlIGRvY2ssIG9yIGFuIGV4Y2VwdGlvbiB3aWxsIGJlIHRo
cm93bi4KLSAgICAgICAgaWYgKFtbTlNTY3JlZW4gc2NyZWVuc10gb2JqZWN0QXRJbmRleDowXSA9
PSBmdWxsc2NyZWVuU2NyZWVuKQotICAgICAgICAgICAgb3B0aW9ucyB8PSAoTlNBcHBsaWNhdGlv
blByZXNlbnRhdGlvbkF1dG9IaWRlTWVudUJhciB8IE5TQXBwbGljYXRpb25QcmVzZW50YXRpb25B
dXRvSGlkZURvY2spOwotICAgICAgICAvLyBDaGVjayBpZiB0aGUgY3VycmVudCBzY3JlZW4gY29u
dGFpbnMgdGhlIGRvY2sgYnkgY29tcGFyaW5nIHRoZSBzY3JlZW4ncyBmcmFtZSB0byBpdHMKLSAg
ICAgICAgLy8gdmlzaWJsZUZyYW1lOyBpZiBhIGRvY2sgaXMgcHJlc2VudCwgdGhlIHZpc2libGVG
cmFtZSB3aWxsIGRpZmZlci4gSWYgdGhlIGN1cnJlbnQgc2NyZWVuCi0gICAgICAgIC8vIGNvbnRh
aW5zIHRoZSBkb2NrLCBoaWRlIGl0LgotICAgICAgICBlbHNlIGlmICghTlNFcXVhbFJlY3RzKFtm
dWxsc2NyZWVuU2NyZWVuIGZyYW1lXSwgW2Z1bGxzY3JlZW5TY3JlZW4gdmlzaWJsZUZyYW1lXSkp
Ci0gICAgICAgICAgICBvcHRpb25zIHw9IE5TQXBwbGljYXRpb25QcmVzZW50YXRpb25BdXRvSGlk
ZURvY2s7Ci0gICAgfQotCi0gICAgTlNBcHAucHJlc2VudGF0aW9uT3B0aW9ucyA9IG9wdGlvbnM7
Ci19Ci0KLS8vIE1BUks6IC0KLS8vIE1BUks6IFdpbmRvdyBjYWxsYmFjawotCiAtICh2b2lkKV9y
ZXF1ZXN0RXhpdAogewotICAgIGlmIChfdmlkZW9FbGVtZW50KQotICAgICAgICBfdmlkZW9FbGVt
ZW50LT5leGl0RnVsbHNjcmVlbigpOwotICAgIF9mb3JjZURpc2FibGVBbmltYXRpb24gPSBOTzsK
LX0KLQotLSAodm9pZClyZXF1ZXN0RXhpdEZ1bGxzY3JlZW5XaXRoQW5pbWF0aW9uOihCT09MKWFu
aW1hdGlvbgotewotICAgIGlmIChfaXNFbmRpbmdGdWxsc2NyZWVuKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBfZm9yY2VEaXNhYmxlQW5pbWF0aW9uID0gIWFuaW1hdGlvbjsKLSAgICBbc2VsZiBw
ZXJmb3JtU2VsZWN0b3I6QHNlbGVjdG9yKF9yZXF1ZXN0RXhpdCkgd2l0aE9iamVjdDpuaWwgYWZ0
ZXJEZWxheTowXTsKLQorICAgIFtzZWxmLmZ1bGxzY3JlZW5XaW5kb3cgZXhpdEZ1bGxTY3JlZW5N
b2RlOnNlbGZdOwogfQogCi0tICh2b2lkKXJlcXVlc3RFeGl0RnVsbHNjcmVlbgorLSAodm9pZClf
cmVxdWVzdEVudGVyCiB7Ci0gICAgW3NlbGYgcmVxdWVzdEV4aXRGdWxsc2NyZWVuV2l0aEFuaW1h
dGlvbjpZRVNdOworICAgIGlmIChfdmlkZW9FbGVtZW50KQorICAgICAgICBfdmlkZW9FbGVtZW50
LT5lbnRlckZ1bGxzY3JlZW4oKTsKIH0KIAotLSAodm9pZClmYWRlSFVESW4KKy0gKHZvaWQpY2Fu
Y2VsT3BlcmF0aW9uOihpZClzZW5kZXIKIHsKLSAgICBbX2h1ZENvbnRyb2xsZXIgZmFkZVdpbmRv
d0luXTsKKyAgICBbc2VsZiBfcmVxdWVzdEV4aXRdOwogfQogCi0tICh2b2lkKW9ic2VydmVWYWx1
ZUZvcktleVBhdGg6KE5TU3RyaW5nICopa2V5UGF0aCBvZk9iamVjdDooaWQpb2JqZWN0IGNoYW5n
ZTooTlNEaWN0aW9uYXJ5ICopY2hhbmdlIGNvbnRleHQ6KHZvaWQgKiljb250ZXh0CistIChCT09M
KXBsYXllclZpZXdJc0Z1bGxTY3JlZW46KFdlYkFWUGxheWVyVmlldyopcGxheWVyVmlldwogewot
ICAgIFVOVVNFRF9QQVJBTShvYmplY3QpOwotICAgIFVOVVNFRF9QQVJBTShjaGFuZ2UpOwotICAg
IFVOVVNFRF9QQVJBTShjb250ZXh0KTsKLQotICAgIGlmIChba2V5UGF0aCBpc0VxdWFsVG86QCJy
YXRlIl0pCi0gICAgICAgIFtzZWxmIHJhdGVDaGFuZ2VkOm5pbF07CisgICAgcmV0dXJuIF9pc0Z1
bGxTY3JlZW47CiB9CiAKLS0gKHZvaWQpcmF0ZUNoYW5nZWQ6KE5TTm90aWZpY2F0aW9uICopdW51
c2VkTm90aWZpY2F0aW9uCistICh2b2lkKXBsYXllclZpZXdSZXF1ZXN0RW50ZXJGdWxsc2NyZWVu
OihBVlBsYXllclZpZXcqKXBsYXllclZpZXcKIHsKLSAgICBVTlVTRURfUEFSQU0odW51c2VkTm90
aWZpY2F0aW9uKTsKLSAgICBbX2h1ZENvbnRyb2xsZXIgdXBkYXRlUmF0ZV07CisgICAgW3NlbGYg
X3JlcXVlc3RFbnRlcl07CiB9CiAKLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIFdlYlZpZGVvRnVs
bHNjcmVlbldpbmRvdwotCi0tIChpZClpbml0V2l0aENvbnRlbnRSZWN0OihOU1JlY3QpY29udGVu
dFJlY3Qgc3R5bGVNYXNrOihOU1VJbnRlZ2VyKWFTdHlsZSBiYWNraW5nOihOU0JhY2tpbmdTdG9y
ZVR5cGUpYnVmZmVyaW5nVHlwZSBkZWZlcjooQk9PTClmbGFnCistICh2b2lkKXBsYXllclZpZXdS
ZXF1ZXN0RXhpdEZ1bGxzY3JlZW46KEFWUGxheWVyVmlldyopcGxheWVyVmlldwogewotICAgIFVO
VVNFRF9QQVJBTShhU3R5bGUpOwotICAgIHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhDb250ZW50UmVj
dDpjb250ZW50UmVjdCBzdHlsZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayBiYWNraW5nOmJ1
ZmZlcmluZ1R5cGUgZGVmZXI6ZmxhZ107Ci0gICAgaWYgKCFzZWxmKQotICAgICAgICByZXR1cm4g
bmlsOwotICAgIFtzZWxmIHNldE9wYXF1ZTpOT107Ci0gICAgW3NlbGYgc2V0QmFja2dyb3VuZENv
bG9yOltOU0NvbG9yIGNsZWFyQ29sb3JdXTsKLSAgICBbc2VsZiBzZXRJZ25vcmVzTW91c2VFdmVu
dHM6Tk9dOwotICAgIFtzZWxmIHNldEFjY2VwdHNNb3VzZU1vdmVkRXZlbnRzOllFU107Ci0gICAg
cmV0dXJuIHNlbGY7CisgICAgW3NlbGYgX3JlcXVlc3RFeGl0XTsKIH0KIAotLSAodm9pZClkZWFs
bG9jCistIChudWxsYWJsZSBOU0FycmF5PE5TV2luZG93ICo+ICopY3VzdG9tV2luZG93c1RvRW50
ZXJGdWxsU2NyZWVuRm9yV2luZG93OihOU1dpbmRvdyAqKXdpbmRvdwogewotICAgIEFTU0VSVCgh
X2Z1bGxzY3JlZW5BbmltYXRpb24pOwotICAgIFtzdXBlciBkZWFsbG9jXTsKKyAgICByZXR1cm4g
QFtzZWxmLmZ1bGxzY3JlZW5XaW5kb3ddOwogfQogCi0tIChCT09MKXJlc2lnbkZpcnN0UmVzcG9u
ZGVyCistICh2b2lkKXdpbmRvdzooTlNXaW5kb3cgKil3aW5kb3cgc3RhcnRDdXN0b21BbmltYXRp
b25Ub0VudGVyRnVsbFNjcmVlbldpdGhEdXJhdGlvbjooTlNUaW1lSW50ZXJ2YWwpZHVyYXRpb24K
IHsKLSAgICByZXR1cm4gTk87CisgICAgW05TQW5pbWF0aW9uQ29udGV4dCBydW5BbmltYXRpb25H
cm91cDpeKE5TQW5pbWF0aW9uQ29udGV4dCAqY29udGV4dCkgeworICAgICAgICBjb250ZXh0LmFs
bG93c0ltcGxpY2l0QW5pbWF0aW9uID0gWUVTOworICAgICAgICBjb250ZXh0LmR1cmF0aW9uID0g
ZHVyYXRpb247CisgICAgICAgIFt3aW5kb3cgc2V0RnJhbWU6d2luZG93LnNjcmVlbi5mcmFtZSBk
aXNwbGF5OllFU107CisgICAgfSBjb21wbGV0aW9uSGFuZGxlcjpOVUxMXTsKIH0KIAotLSAoQk9P
TCljYW5CZWNvbWVLZXlXaW5kb3cKKy0gKG51bGxhYmxlIE5TQXJyYXk8TlNXaW5kb3cgKj4gKilj
dXN0b21XaW5kb3dzVG9FeGl0RnVsbFNjcmVlbkZvcldpbmRvdzooTlNXaW5kb3cgKil3aW5kb3cK
IHsKLSAgICByZXR1cm4gTk87CisgICAgcmV0dXJuIEBbc2VsZi5mdWxsc2NyZWVuV2luZG93XTsK
IH0KIAotLSAodm9pZCltb3VzZURvd246KE5TRXZlbnQgKilldmVudAorLSAodm9pZCl3aW5kb3c6
KE5TV2luZG93ICopd2luZG93IHN0YXJ0Q3VzdG9tQW5pbWF0aW9uVG9FeGl0RnVsbFNjcmVlbldp
dGhEdXJhdGlvbjooTlNUaW1lSW50ZXJ2YWwpZHVyYXRpb24KIHsKLSAgICBVTlVTRURfUEFSQU0o
ZXZlbnQpOworICAgIFtOU0FuaW1hdGlvbkNvbnRleHQgcnVuQW5pbWF0aW9uR3JvdXA6XihOU0Fu
aW1hdGlvbkNvbnRleHQgKmNvbnRleHQpIHsKKyAgICAgICAgY29udGV4dC5hbGxvd3NJbXBsaWNp
dEFuaW1hdGlvbiA9IFlFUzsKKyAgICAgICAgY29udGV4dC5kdXJhdGlvbiA9IGR1cmF0aW9uOwor
ICAgICAgICBbd2luZG93IHNldEZyYW1lOnNlbGYudmlkZW9FbGVtZW50UmVjdCBkaXNwbGF5OllF
U107CisgICAgfSBjb21wbGV0aW9uSGFuZGxlcjpOVUxMXTsKIH0KIAotLSAodm9pZCljYW5jZWxP
cGVyYXRpb246KGlkKXNlbmRlcgorLSAodm9pZCl3aW5kb3dEaWRFbnRlckZ1bGxTY3JlZW46KE5T
Tm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7
Ci0gICAgW1tzZWxmIHdpbmRvd0NvbnRyb2xsZXJdIHJlcXVlc3RFeGl0RnVsbHNjcmVlbl07Cisg
ICAgX3BsYXllclZpZXcuY29udHJvbHNTdHlsZSA9IEFWUGxheWVyVmlld0NvbnRyb2xzU3R5bGVG
bG9hdGluZzsKKyAgICBbX3BsYXllclZpZXcgd2lsbENoYW5nZVZhbHVlRm9yS2V5OkAiaXNGdWxs
U2NyZWVuIl07CisgICAgX2lzRnVsbFNjcmVlbiA9IFlFUzsKKyAgICBbX3BsYXllclZpZXcgZGlk
Q2hhbmdlVmFsdWVGb3JLZXk6QCJpc0Z1bGxTY3JlZW4iXTsKIH0KIAotLSAodm9pZClhbmltYXRl
ZFJlc2l6ZURpZEVuZAorLSAodm9pZCl3aW5kb3dXaWxsRXhpdEZ1bGxTY3JlZW46KE5TTm90aWZp
Y2F0aW9uICopbm90aWZpY2F0aW9uCiB7Ci0gICAgaWYgKF9jb250cm9sbGVyQWN0aW9uT25Bbmlt
YXRpb25FbmQpCi0gICAgICAgIFtbc2VsZiB3aW5kb3dDb250cm9sbGVyXSBwZXJmb3JtU2VsZWN0
b3I6X2NvbnRyb2xsZXJBY3Rpb25PbkFuaW1hdGlvbkVuZF07Ci0gICAgX2NvbnRyb2xsZXJBY3Rp
b25PbkFuaW1hdGlvbkVuZCA9IE5VTEw7CisgICAgX3BsYXllclZpZXcuY29udHJvbHNTdHlsZSA9
IEFWUGxheWVyVmlld0NvbnRyb2xzU3R5bGVOb25lOwogfQogCi0vLwotLy8gVGhpcyBmdW5jdGlv
biB3aWxsIGFuaW1hdGUgYSBjaGFuZ2Ugb2YgZnJhbWUgcmVjdGFuZ2xlCi0vLyBXZSBzdXBwb3J0
IHF1ZXVpbmcgYW5pbWF0aW9uLCB0aGF0IG1lYW5zIHRoYXQgd2UnbGwgY29ycmVjdGx5Ci0vLyBp
bnRlcnJ1cHQgdGhlIHJ1bm5pbmcgYW5pbWF0aW9uLCBhbmQgcXVldWUgdGhlIG5leHQgb25lLgot
Ly8KLS0gKHZvaWQpYW5pbWF0ZUZyb21SZWN0OihOU1JlY3Qpc3RhcnRSZWN0IHRvUmVjdDooTlNS
ZWN0KWVuZFJlY3Qgd2l0aFN1YkFuaW1hdGlvbjooTlNBbmltYXRpb24gKilzdWJBbmltYXRpb24g
Y29udHJvbGxlckFjdGlvbjooU0VMKWNvbnRyb2xsZXJBY3Rpb24KKy0gKHZvaWQpd2luZG93RGlk
RXhpdEZ1bGxTY3JlZW46KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCiB7Ci0gICAgX2Nv
bnRyb2xsZXJBY3Rpb25PbkFuaW1hdGlvbkVuZCA9IGNvbnRyb2xsZXJBY3Rpb247Ci0KLSAgICBC
T09MIHdhc0FuaW1hdGluZyA9IE5POwotICAgIGlmIChfZnVsbHNjcmVlbkFuaW1hdGlvbikgewot
ICAgICAgICB3YXNBbmltYXRpbmcgPSBZRVM7CisgICAgW19wbGF5ZXJWaWV3IHdpbGxDaGFuZ2VW
YWx1ZUZvcktleTpAImlzRnVsbFNjcmVlbiJdOworICAgIF9pc0Z1bGxTY3JlZW4gPSBOTzsKKyAg
ICBbX3BsYXllclZpZXcgZGlkQ2hhbmdlVmFsdWVGb3JLZXk6QCJpc0Z1bGxTY3JlZW4iXTsKIAot
ICAgICAgICAvLyBJbnRlcnJ1cHQgYW55IHJ1bm5pbmcgYW5pbWF0aW9uLgotICAgICAgICBbX2Z1
bGxzY3JlZW5BbmltYXRpb24gc3RvcEFuaW1hdGlvbl07Ci0KLSAgICAgICAgLy8gU2F2ZSB0aGUg
Y3VycmVudCByZWN0IHRvIGVuc3VyZSBhIHNtb290aCB0cmFuc2l0aW9uLgotICAgICAgICBzdGFy
dFJlY3QgPSBbX2Z1bGxzY3JlZW5BbmltYXRpb24gY3VycmVudEZyYW1lXTsKLSAgICAgICAgW19m
dWxsc2NyZWVuQW5pbWF0aW9uIHJlbGVhc2VdOwotICAgICAgICBfZnVsbHNjcmVlbkFuaW1hdGlv
biA9IG5pbDsKLSAgICB9Ci0gICAgCi0gICAgaWYgKE5TSXNFbXB0eVJlY3Qoc3RhcnRSZWN0KSB8
fCBOU0lzRW1wdHlSZWN0KGVuZFJlY3QpKSB7Ci0gICAgICAgIC8vIEZha2VseSBlbmQgdGhlIHN1
YmFuaW1hdGlvbi4KLSAgICAgICAgW3N1YkFuaW1hdGlvbiBzZXRDdXJyZW50UHJvZ3Jlc3M6MV07
Ci0gICAgICAgIC8vIEFuZCByZW1vdmUgdGhlIHdlYWsgbGluayB0byB0aGUgd2luZG93LgotICAg
ICAgICBbc3ViQW5pbWF0aW9uIHN0b3BBbmltYXRpb25dOwotCi0gICAgICAgIFtzZWxmIHNldEZy
YW1lOmVuZFJlY3QgZGlzcGxheTpOT107Ci0gICAgICAgIFtzZWxmIG1ha2VLZXlBbmRPcmRlckZy
b250OnNlbGZdOwotICAgICAgICBbc2VsZiBhbmltYXRlZFJlc2l6ZURpZEVuZF07CisgICAgaWYg
KCFfdmlkZW9FbGVtZW50KSB7CisgICAgICAgIFtzZWxmLmZ1bGxzY3JlZW5XaW5kb3cgY2xvc2Vd
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCF3YXNBbmltYXRpbmcpIHsKLSAg
ICAgICAgLy8gV2UnbGwgZG93bnNjYWxlIHRoZSB3aW5kb3cgZHVyaW5nIHRoZSBhbmltYXRpb24g
YmFzZWQgb24gdGhlIGhpZ2hlciByZXNvbHV0aW9uIHJlY3QKLSAgICAgICAgQk9PTCBoaWdoZXJS
ZXNvbHV0aW9uSXNFbmRSZWN0ID0gc3RhcnRSZWN0LnNpemUud2lkdGggPCBlbmRSZWN0LnNpemUu
d2lkdGggJiYgc3RhcnRSZWN0LnNpemUuaGVpZ2h0IDwgZW5kUmVjdC5zaXplLmhlaWdodDsKLSAg
ICAgICAgW3NlbGYgc2V0RnJhbWU6aGlnaGVyUmVzb2x1dGlvbklzRW5kUmVjdCA/IGVuZFJlY3Qg
OiBzdGFydFJlY3QgZGlzcGxheTpOT107Ci0gICAgfQotICAgIAotICAgIEFTU0VSVCghX2Z1bGxz
Y3JlZW5BbmltYXRpb24pOwotICAgIF9mdWxsc2NyZWVuQW5pbWF0aW9uID0gW1tXZWJXaW5kb3dT
Y2FsZUFuaW1hdGlvbiBhbGxvY10gaW5pdFdpdGhIaW50ZWREdXJhdGlvbjowLjIgd2luZG93OnNl
bGYgaW5pdGFsRnJhbWU6c3RhcnRSZWN0IGZpbmFsRnJhbWU6ZW5kUmVjdF07Ci0gICAgW19mdWxs
c2NyZWVuQW5pbWF0aW9uIHNldFN1YkFuaW1hdGlvbjpzdWJBbmltYXRpb25dOwotICAgIFtfZnVs
bHNjcmVlbkFuaW1hdGlvbiBzZXREZWxlZ2F0ZTpzZWxmXTsKLSAgICAKLSAgICAvLyBNYWtlIHN1
cmUgdGhlIGFuaW1hdGlvbiBoYXMgc2NhbGVkIHRoZSB3aW5kb3cgYmVmb3JlIHNob3dpbmcgaXQu
Ci0gICAgW19mdWxsc2NyZWVuQW5pbWF0aW9uIHNldEN1cnJlbnRQcm9ncmVzczowXTsKLSAgICBb
c2VsZiBtYWtlS2V5QW5kT3JkZXJGcm9udDpzZWxmXTsKLQotICAgIFtfZnVsbHNjcmVlbkFuaW1h
dGlvbiBzdGFydEFuaW1hdGlvbl07Ci19Ci0KLS0gKHZvaWQpYW5pbWF0aW9uRGlkRW5kOihOU0Fu
aW1hdGlvbiAqKWFuaW1hdGlvbgotewotICAgIGlmICghW05TVGhyZWFkIGlzTWFpblRocmVhZF0p
IHsKLSAgICAgICAgW3NlbGYgcGVyZm9ybVNlbGVjdG9yT25NYWluVGhyZWFkOkBzZWxlY3Rvcihh
bmltYXRpb25EaWRFbmQ6KSB3aXRoT2JqZWN0OmFuaW1hdGlvbiB3YWl0VW50aWxEb25lOk5PXTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoYW5pbWF0aW9uICE9IF9mdWxsc2NyZWVu
QW5pbWF0aW9uKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBUaGUgYW5pbWF0aW9uIGlzIG5v
dCByZWFsbHkgb3ZlciBhbmQgd2FzIGludGVycnVwdGVkCi0gICAgLy8gRG9uJ3Qgc2VuZCBjb21w
bGV0aW9uIGV2ZW50cy4KLSAgICBpZiAoW2FuaW1hdGlvbiBjdXJyZW50UHJvZ3Jlc3NdIDwgMS4w
KQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBFbnN1cmUgdGhhdCBhbmltYXRpb24gKGFuZCBz
dWJhbmltYXRpb24pIGRvbid0IGtlZXAKLSAgICAvLyB0aGUgd2VhayByZWZlcmVuY2UgdG8gdGhl
IHdpbmRvdyBpdmFyIHRoYXQgbWF5IGJlIGRlc3Ryb3llZCBmcm9tCi0gICAgLy8gbm93IG9uLgot
ICAgIFtfZnVsbHNjcmVlbkFuaW1hdGlvbiBzZXRXaW5kb3c6bmlsXTsKLQotICAgIFtfZnVsbHNj
cmVlbkFuaW1hdGlvbiBhdXRvcmVsZWFzZV07Ci0gICAgX2Z1bGxzY3JlZW5BbmltYXRpb24gPSBu
aWw7Ci0KLSAgICBbc2VsZiBhbmltYXRlZFJlc2l6ZURpZEVuZF07Ci19Ci0KLS0gKHZvaWQpbW91
c2VNb3ZlZDooTlNFdmVudCAqKWV2ZW50Ci17Ci0gICAgVU5VU0VEX1BBUkFNKGV2ZW50KTsKLSAg
ICBbW3NlbGYgd2luZG93Q29udHJvbGxlcl0gZmFkZUhVREluXTsKKyAgICBbTlNBbmltYXRpb25D
b250ZXh0IGJlZ2luR3JvdXBpbmddOworICAgIF92aWRlb0VsZW1lbnQtPnNldFZpZGVvRnVsbHNj
cmVlbkxheWVyKG5pbCwgW3NlbGYsIHByb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZildIHsK
KyAgICAgICAgW3NlbGYuZnVsbHNjcmVlbldpbmRvdyBjbG9zZV07CisgICAgICAgIFtOU0FuaW1h
dGlvbkNvbnRleHQgZW5kR3JvdXBpbmddOworICAgIH0pOworICAgIF92aWRlb0VsZW1lbnQtPmV4
aXRGdWxsc2NyZWVuKCk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5oIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5k
b3dDb250cm9sbGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZmMTg0YWQ0MTA2
ZmMxNzhiNjcyNjY1OTI1ZmI3YmRmZWFiYzUyZDUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJW
aWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3
MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmIEVOQUJMRShWSURFTykKLQotI2ltcG9ydCA8QXBw
S2l0L05TQnV0dG9uLmg+Ci0jaW1wb3J0IDxBcHBLaXQvTlNDb250cm9sLmg+Ci0jaW1wb3J0IDxB
cHBLaXQvTlNUZXh0RmllbGQuaD4KLSNpbXBvcnQgPEFwcEtpdC9OU1RyYWNraW5nQXJlYS5oPgot
I2ltcG9ydCA8QXBwS2l0L05TV2luZG93Lmg+Ci0jaW1wb3J0IDxBcHBLaXQvTlNXaW5kb3dDb250
cm9sbGVyLmg+Ci0jaW1wb3J0IDx3dGYvTmFrZWRQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotY2xhc3MgSFRNTFZpZGVvRWxlbWVudDsKLX0KLQotQHByb3RvY29sIFdlYlZpZGVvRnVsbHNj
cmVlbkhVRFdpbmRvd0NvbnRyb2xsZXJEZWxlZ2F0ZTsKLQotQGludGVyZmFjZSBXZWJWaWRlb0Z1
bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyIDogTlNXaW5kb3dDb250cm9sbGVyIHsKLSAgICBp
ZCA8V2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlckRlbGVnYXRlPiBfZGVsZWdh
dGU7Ci0gICAgTlNUaW1lciAqX3RpbWVsaW5lVXBkYXRlVGltZXI7Ci0gICAgTlNUcmFja2luZ0Fy
ZWEgKl9hcmVhOwotICAgIEJPT0wgX21vdXNlSXNJbkhVRDsKLSAgICBCT09MIF9pc0VuZGluZ0Z1
bGxzY3JlZW47Ci0gICAgQk9PTCBfaXNTY3J1YmJpbmc7Ci0KLSAgICBOU0NvbnRyb2wgKl90aW1l
bGluZTsKLSAgICBOU1RleHRGaWVsZCAqX3JlbWFpbmluZ1RpbWVUZXh0OwotICAgIE5TVGV4dEZp
ZWxkICpfZWxhcHNlZFRpbWVUZXh0OwotICAgIE5TQ29udHJvbCAqX3ZvbHVtZVNsaWRlcjsKLSAg
ICBOU0J1dHRvbiAqX3BsYXlCdXR0b247Ci19Ci0KLS0gKGlkIDxXZWJWaWRlb0Z1bGxzY3JlZW5I
VURXaW5kb3dDb250cm9sbGVyRGVsZWdhdGU+KWRlbGVnYXRlOwotLSAodm9pZClzZXREZWxlZ2F0
ZTooaWQgPFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXJEZWxlZ2F0ZT4pZGVs
ZWdhdGU7Ci0tICh2b2lkKWZhZGVXaW5kb3dJbjsKLS0gKHZvaWQpZmFkZVdpbmRvd091dDsKLS0g
KHZvaWQpY2xvc2VXaW5kb3c7Ci0tICh2b2lkKXVwZGF0ZVJhdGU7Ci0KLUBlbmQKLQotQHByb3Rv
Y29sIFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXJEZWxlZ2F0ZSA8TlNPYmpl
Y3Q+Ci0tICh2b2lkKXJlcXVlc3RFeGl0RnVsbHNjcmVlbjsKLS0gKE5ha2VkUHRyPFdlYkNvcmU6
OkhUTUxWaWRlb0VsZW1lbnQ+KXZpZGVvRWxlbWVudDsKLUBlbmQKLQotI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZGVvRnVsbHNjcmVlbkhV
RFdpbmRvd0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW0KZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGFlN2U0YTI4YTA4YmExOTgyOThhMWQ4NDgyNjAyYmY3YjVmMmIxOGUuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVy
Lm1tCisrKyAvZGV2L251bGwKQEAgLTEsNzM3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0g
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmIEVO
QUJMRShWSURFTykgJiYgUExBVEZPUk0oTUFDKQotCi0jaW1wb3J0ICJXZWJWaWRlb0Z1bGxzY3Jl
ZW5IVURXaW5kb3dDb250cm9sbGVyLmgiCi0KLSNpbXBvcnQgPFdlYkNvcmUvRmxvYXRDb252ZXJz
aW9uLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0hUTUxWaWRlb0VsZW1lbnQuaD4KLSNpbXBvcnQgPHBh
bC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+Ci0jaW1wb3J0IDxwYWwvc3BpL21hYy9RVEtpdFNQ
SS5oPgotI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+Ci0KLVNPRlRfTElOS19GUkFNRVdPUktf
T1BUSU9OQUwoUVRLaXQpCi0KLVNPRlRfTElOS19DTEFTU19PUFRJT05BTChRVEtpdCwgUVRIVURC
YWNrZ3JvdW5kVmlldykKLVNPRlRfTElOS19DTEFTU19PUFRJT05BTChRVEtpdCwgUVRIVURCdXR0
b24pCi1TT0ZUX0xJTktfQ0xBU1NfT1BUSU9OQUwoUVRLaXQsIFFUSFVEU2xpZGVyKQotU09GVF9M
SU5LX0NMQVNTX09QVElPTkFMKFFUS2l0LCBRVEhVRFRpbWVsaW5lKQotCi0jZGVmaW5lIFFUSFVE
QmFja2dyb3VuZFZpZXcgZ2V0UVRIVURCYWNrZ3JvdW5kVmlld0NsYXNzKCkKLSNkZWZpbmUgUVRI
VURCdXR0b24gZ2V0UVRIVURCdXR0b25DbGFzcygpCi0jZGVmaW5lIFFUSFVEU2xpZGVyIGdldFFU
SFVEU2xpZGVyQ2xhc3MoKQotI2RlZmluZSBRVEhVRFRpbWVsaW5lIGdldFFUSFVEVGltZWxpbmVD
bGFzcygpCi0KLWVudW0gY2xhc3MgTWVkaWFVSUNvbnRyb2wgewotICAgIFRpbWVsaW5lLAotICAg
IFNsaWRlciwKLSAgICBQbGF5UGF1c2VCdXR0b24sCi0gICAgRXhpdEZ1bGxzY3JlZW5CdXR0b24s
Ci0gICAgUmV3aW5kQnV0dG9uLAotICAgIEZhc3RGb3J3YXJkQnV0dG9uLAotICAgIFZvbHVtZVVw
QnV0dG9uLAotICAgIFZvbHVtZURvd25CdXR0b24sCi19OwotCi11c2luZyBXZWJDb3JlOjpIVE1M
VmlkZW9FbGVtZW50OwotdXNpbmcgV2ViQ29yZTo6bmFycm93UHJlY2lzaW9uVG9GbG9hdDsKLQot
QGludGVyZmFjZSBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyIChQcml2YXRl
KSA8TlNXaW5kb3dEZWxlZ2F0ZT4KLQotLSAodm9pZCl1cGRhdGVUaW1lOwotLSAodm9pZCl0aW1l
bGluZVBvc2l0aW9uQ2hhbmdlZDooaWQpc2VuZGVyOwotLSAoZmxvYXQpY3VycmVudFRpbWU7Ci0t
ICh2b2lkKXNldEN1cnJlbnRUaW1lOihmbG9hdCljdXJyZW50VGltZTsKLS0gKGRvdWJsZSlkdXJh
dGlvbjsKLQotLSAodm9pZCl2b2x1bWVDaGFuZ2VkOihpZClzZW5kZXI7Ci0tIChmbG9hdCltYXhW
b2x1bWU7Ci0tIChmbG9hdCl2b2x1bWU7Ci0tICh2b2lkKXNldFZvbHVtZTooZmxvYXQpdm9sdW1l
OwotLSAodm9pZClkZWNyZW1lbnRWb2x1bWU7Ci0tICh2b2lkKWluY3JlbWVudFZvbHVtZTsKLQot
LSAodm9pZCl1cGRhdGVQbGF5QnV0dG9uOwotLSAodm9pZCl0b2dnbGVQbGF5aW5nOihpZClzZW5k
ZXI7Ci0tIChCT09MKXBsYXlpbmc7Ci0tICh2b2lkKXNldFBsYXlpbmc6KEJPT0wpcGxheWluZzsK
LQotLSAodm9pZClyZXdpbmQ6KGlkKXNlbmRlcjsKLS0gKHZvaWQpZmFzdEZvcndhcmQ6KGlkKXNl
bmRlcjsKLQotLSAoTlNTdHJpbmcgKilyZW1haW5pbmdUaW1lVGV4dDsKLS0gKE5TU3RyaW5nICop
ZWxhcHNlZFRpbWVUZXh0OwotCi0tICh2b2lkKWV4aXRGdWxsc2NyZWVuOihpZClzZW5kZXI7Ci1A
ZW5kCi0KLUBpbnRlcmZhY2UgV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93IDogTlNXaW5kb3cK
LUBlbmQKLQotQGltcGxlbWVudGF0aW9uIFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvdwotCi0t
IChpZClpbml0V2l0aENvbnRlbnRSZWN0OihOU1JlY3QpY29udGVudFJlY3Qgc3R5bGVNYXNrOihO
U1VJbnRlZ2VyKWFTdHlsZSBiYWNraW5nOihOU0JhY2tpbmdTdG9yZVR5cGUpYnVmZmVyaW5nVHlw
ZSBkZWZlcjooQk9PTClmbGFnCi17Ci0gICAgVU5VU0VEX1BBUkFNKGFTdHlsZSk7Ci0gICAgc2Vs
ZiA9IFtzdXBlciBpbml0V2l0aENvbnRlbnRSZWN0OmNvbnRlbnRSZWN0IHN0eWxlTWFzazpOU1dp
bmRvd1N0eWxlTWFza0JvcmRlcmxlc3MgYmFja2luZzpidWZmZXJpbmdUeXBlIGRlZmVyOmZsYWdd
OwotICAgIGlmICghc2VsZikKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIFtzZWxmIHNldE9w
YXF1ZTpOT107Ci0gICAgW3NlbGYgc2V0QmFja2dyb3VuZENvbG9yOltOU0NvbG9yIGNsZWFyQ29s
b3JdXTsKLSAgICBbc2VsZiBzZXRMZXZlbDpOU1BvcFVwTWVudVdpbmRvd0xldmVsXTsKLSAgICBb
c2VsZiBzZXRBY2NlcHRzTW91c2VNb3ZlZEV2ZW50czpZRVNdOwotICAgIFtzZWxmIHNldElnbm9y
ZXNNb3VzZUV2ZW50czpOT107Ci0gICAgW3NlbGYgc2V0TW92YWJsZUJ5V2luZG93QmFja2dyb3Vu
ZDpZRVNdOwotCi0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKEJPT0wpY2FuQmVjb21lS2V5V2lu
ZG93Ci17Ci0gICAgcmV0dXJuIFlFUzsKLX0KLQotLSAodm9pZCljYW5jZWxPcGVyYXRpb246KGlk
KXNlbmRlcgotewotICAgIFVOVVNFRF9QQVJBTShzZW5kZXIpOwotICAgIFtbc2VsZiB3aW5kb3dD
b250cm9sbGVyXSBleGl0RnVsbHNjcmVlbjpzZWxmXTsKLX0KLQotLSAodm9pZCljZW50ZXIKLXsK
LSAgICBOU1JlY3QgaHVkRnJhbWUgPSBbc2VsZiBmcmFtZV07Ci0gICAgTlNSZWN0IHNjcmVlbkZy
YW1lID0gW1tOU1NjcmVlbiBtYWluU2NyZWVuXSBmcmFtZV07Ci0gICAgW3NlbGYgc2V0RnJhbWVU
b3BMZWZ0UG9pbnQ6TlNNYWtlUG9pbnQoc2NyZWVuRnJhbWUub3JpZ2luLnggKyAoc2NyZWVuRnJh
bWUuc2l6ZS53aWR0aCAtIGh1ZEZyYW1lLnNpemUud2lkdGgpIC8gMiwgc2NyZWVuRnJhbWUub3Jp
Z2luLnkgKyAoc2NyZWVuRnJhbWUuc2l6ZS5oZWlnaHQgLSBodWRGcmFtZS5zaXplLmhlaWdodCkg
LyA2KV07Ci19Ci0KLS0gKHZvaWQpa2V5RG93bjooTlNFdmVudCAqKWV2ZW50Ci17Ci0gICAgW3N1
cGVyIGtleURvd246ZXZlbnRdOwotICAgIFtbc2VsZiB3aW5kb3dDb250cm9sbGVyXSBmYWRlV2lu
ZG93SW5dOwotfQotCi0tIChCT09MKXJlc2lnbkZpcnN0UmVzcG9uZGVyCi17Ci0gICAgcmV0dXJu
IE5POwotfQotCi0tIChCT09MKXBlcmZvcm1LZXlFcXVpdmFsZW50OihOU0V2ZW50ICopZXZlbnQK
LXsKLSAgICAvLyBCbG9jayBhbGwgY29tbWFuZCBrZXkgZXZlbnRzIHdoaWxlIHRoZSBmdWxsc2Ny
ZWVuIHdpbmRvdyBpcyB1cC4KLSAgICBpZiAoW2V2ZW50IHR5cGVdICE9IE5TRXZlbnRUeXBlS2V5
RG93bikKLSAgICAgICAgcmV0dXJuIE5POwotICAgIAotICAgIGlmICghKFtldmVudCBtb2RpZmll
ckZsYWdzXSAmIE5TRXZlbnRNb2RpZmllckZsYWdDb21tYW5kKSkKLSAgICAgICAgcmV0dXJuIE5P
OwotICAgIHJldHVybiBZRVM7Ci19Ci0KLUBlbmQKLQotc3RhdGljIGNvbnN0IENHRmxvYXQgd2lu
ZG93SGVpZ2h0ID0gNTk7Ci1zdGF0aWMgY29uc3QgQ0dGbG9hdCB3aW5kb3dXaWR0aCA9IDQzODsK
LQotc3RhdGljIGNvbnN0IE5TVGltZUludGVydmFsIEhVRFdpbmRvd0ZhZGVPdXREZWxheSA9IDM7
Ci0KLUBpbXBsZW1lbnRhdGlvbiBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVy
Ci0KLS0gKGlkKWluaXQKLXsKLSAgICBOU1dpbmRvdyAqd2luZG93ID0gW1tXZWJWaWRlb0Z1bGxz
Y3JlZW5IVURXaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6TlNNYWtlUmVjdCgwLCAw
LCB3aW5kb3dXaWR0aCwgd2luZG93SGVpZ2h0KSBzdHlsZU1hc2s6TlNXaW5kb3dTdHlsZU1hc2tC
b3JkZXJsZXNzIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpOT107Ci0gICAg
c2VsZiA9IFtzdXBlciBpbml0V2l0aFdpbmRvdzp3aW5kb3ddOwotICAgIFt3aW5kb3cgc2V0RGVs
ZWdhdGU6c2VsZl07Ci0gICAgW3dpbmRvdyByZWxlYXNlXTsKLSAgICBpZiAoIXNlbGYpCi0gICAg
ICAgIHJldHVybiBuaWw7Ci0gICAgW3NlbGYgd2luZG93RGlkTG9hZF07Ci0gICAgcmV0dXJuIHNl
bGY7Ci19Ci0KLS0gKHZvaWQpZGVhbGxvYwotewotICAgIEFTU0VSVCghX3RpbWVsaW5lVXBkYXRl
VGltZXIpOwotICAgIEFTU0VSVCghX2FyZWEpOwotICAgIEFTU0VSVCghX2lzU2NydWJiaW5nKTsK
LSAgICBbX3RpbWVsaW5lIHJlbGVhc2VdOwotICAgIFtfcmVtYWluaW5nVGltZVRleHQgcmVsZWFz
ZV07Ci0gICAgW19lbGFwc2VkVGltZVRleHQgcmVsZWFzZV07Ci0gICAgW192b2x1bWVTbGlkZXIg
cmVsZWFzZV07Ci0gICAgW19wbGF5QnV0dG9uIHJlbGVhc2VdOwotICAgIFtzdXBlciBkZWFsbG9j
XTsKLX0KLQotLSAodm9pZClzZXRBcmVhOihOU1RyYWNraW5nQXJlYSAqKWFyZWEKLXsKLSAgICBp
ZiAoYXJlYSA9PSBfYXJlYSkKLSAgICAgICAgcmV0dXJuOwotICAgIFtfYXJlYSByZWxlYXNlXTsK
LSAgICBfYXJlYSA9IFthcmVhIHJldGFpbl07Ci19Ci0KLS0gKHZvaWQpa2V5RG93bjooTlNFdmVu
dCAqKWV2ZW50Ci17Ci0gICAgTlNTdHJpbmcgKmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyA9
IFtldmVudCBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnNdOwotICAgIGlmIChbY2hhcmFjdGVy
c0lnbm9yaW5nTW9kaWZpZXJzIGxlbmd0aF0gPT0gMSkgewotICAgICAgICBzd2l0Y2ggKFtjaGFy
YWN0ZXJzSWdub3JpbmdNb2RpZmllcnMgY2hhcmFjdGVyQXRJbmRleDowXSkgewotICAgICAgICBj
YXNlICcgJzoKLSAgICAgICAgICAgIFtzZWxmIHRvZ2dsZVBsYXlpbmc6bmlsXTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgY2FzZSBOU1VwQXJyb3dGdW5jdGlvbktleToKLSAgICAgICAg
ICAgIGlmIChbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0V2ZW50TW9kaWZpZXJGbGFnT3B0aW9u
KQotICAgICAgICAgICAgICAgIFtzZWxmIHNldFZvbHVtZTpbc2VsZiBtYXhWb2x1bWVdXTsKLSAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBbc2VsZiBpbmNyZW1lbnRWb2x1bWVdOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBjYXNlIE5TRG93bkFycm93RnVuY3Rpb25LZXk6
Ci0gICAgICAgICAgICBpZiAoW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNFdmVudE1vZGlmaWVy
RmxhZ09wdGlvbikKLSAgICAgICAgICAgICAgICBbc2VsZiBzZXRWb2x1bWU6MF07Ci0gICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgW3NlbGYgZGVjcmVtZW50Vm9sdW1lXTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgW3N1cGVyIGtleURvd246ZXZlbnRdOwotfQotCi0tIChpZCA8
V2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlckRlbGVnYXRlPilkZWxlZ2F0ZQot
ewotICAgIHJldHVybiBfZGVsZWdhdGU7Ci19Ci0KLS0gKHZvaWQpc2V0RGVsZWdhdGU6KGlkIDxX
ZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyRGVsZWdhdGU+KWRlbGVnYXRlCi17
Ci0gICAgX2RlbGVnYXRlID0gZGVsZWdhdGU7Ci19Ci0KLS0gKHZvaWQpc2NoZWR1bGVUaW1lVXBk
YXRlCi17Ci0gICAgW05TT2JqZWN0IGNhbmNlbFByZXZpb3VzUGVyZm9ybVJlcXVlc3RzV2l0aFRh
cmdldDpzZWxmIHNlbGVjdG9yOkBzZWxlY3Rvcih1bnNjaGVkdWxlVGltZVVwZGF0ZSkgb2JqZWN0
OnNlbGZdOwotCi0gICAgLy8gRmlyc3QsIHVwZGF0ZSByaWdodCBhd2F5LCB0aGVuIHNjaGVkdWxl
IGZ1dHVyZSB1cGRhdGUKLSAgICBbc2VsZiB1cGRhdGVUaW1lXTsKLSAgICBbc2VsZiB1cGRhdGVQ
bGF5QnV0dG9uXTsKLQotICAgIFtfdGltZWxpbmVVcGRhdGVUaW1lciBpbnZhbGlkYXRlXTsKLSAg
ICBbX3RpbWVsaW5lVXBkYXRlVGltZXIgcmVsZWFzZV07Ci0KLSAgICAvLyBOb3RlIHRoYXQgdGhp
cyBjcmVhdGVzIGEgcmV0YWluIGN5Y2xlIGJldHdlZW4gdGhlIHdpbmRvdyBhbmQgdXMuCi0gICAg
X3RpbWVsaW5lVXBkYXRlVGltZXIgPSBbW05TVGltZXIgdGltZXJXaXRoVGltZUludGVydmFsOjAu
MjUgdGFyZ2V0OnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKHVwZGF0ZVRpbWUpIHVzZXJJbmZvOm5p
bCByZXBlYXRzOllFU10gcmV0YWluXTsKLSAgICBbW05TUnVuTG9vcCBjdXJyZW50UnVuTG9vcF0g
YWRkVGltZXI6X3RpbWVsaW5lVXBkYXRlVGltZXIgZm9yTW9kZTpOU1J1bkxvb3BDb21tb25Nb2Rl
c107Ci19Ci0KLS0gKHZvaWQpdW5zY2hlZHVsZVRpbWVVcGRhdGUKLXsKLSAgICBbTlNPYmplY3Qg
Y2FuY2VsUHJldmlvdXNQZXJmb3JtUmVxdWVzdHNXaXRoVGFyZ2V0OnNlbGYgc2VsZWN0b3I6QHNl
bGVjdG9yKHVuc2NoZWR1bGVUaW1lVXBkYXRlKSBvYmplY3Q6bmlsXTsKLQotICAgIFtfdGltZWxp
bmVVcGRhdGVUaW1lciBpbnZhbGlkYXRlXTsKLSAgICBbX3RpbWVsaW5lVXBkYXRlVGltZXIgcmVs
ZWFzZV07Ci0gICAgX3RpbWVsaW5lVXBkYXRlVGltZXIgPSBuaWw7Ci19Ci0KLS0gKHZvaWQpZmFk
ZVdpbmRvd0luCi17Ci0gICAgTlNXaW5kb3cgKndpbmRvdyA9IFtzZWxmIHdpbmRvd107Ci0gICAg
aWYgKCFbd2luZG93IGlzVmlzaWJsZV0pCi0gICAgICAgIFt3aW5kb3cgc2V0QWxwaGFWYWx1ZTow
XTsKLQotICAgIFt3aW5kb3cgbWFrZUtleUFuZE9yZGVyRnJvbnQ6c2VsZl07Ci0gICAgW1t3aW5k
b3cgYW5pbWF0b3JdIHNldEFscGhhVmFsdWU6MV07Ci0gICAgW3NlbGYgc2NoZWR1bGVUaW1lVXBk
YXRlXTsKLQotICAgIFtOU09iamVjdCBjYW5jZWxQcmV2aW91c1BlcmZvcm1SZXF1ZXN0c1dpdGhU
YXJnZXQ6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoZmFkZVdpbmRvd091dCkgb2JqZWN0Om5pbF07
Ci0gICAgaWYgKCFfbW91c2VJc0luSFVEICYmIFtzZWxmIHBsYXlpbmddKSAvLyBEb24ndCBmYWRl
IG91dCB3aGVuIHBhdXNlZC4KLSAgICAgICAgW3NlbGYgcGVyZm9ybVNlbGVjdG9yOkBzZWxlY3Rv
cihmYWRlV2luZG93T3V0KSB3aXRoT2JqZWN0Om5pbCBhZnRlckRlbGF5OkhVRFdpbmRvd0ZhZGVP
dXREZWxheV07Ci19Ci0KLS0gKHZvaWQpZmFkZVdpbmRvd091dAotewotICAgIFtOU0N1cnNvciBz
ZXRIaWRkZW5VbnRpbE1vdXNlTW92ZXM6WUVTXTsKLSAgICBbW1tzZWxmIHdpbmRvd10gYW5pbWF0
b3JdIHNldEFscGhhVmFsdWU6MF07Ci0gICAgW3NlbGYgcGVyZm9ybVNlbGVjdG9yOkBzZWxlY3Rv
cih1bnNjaGVkdWxlVGltZVVwZGF0ZSkgd2l0aE9iamVjdDpuaWwgYWZ0ZXJEZWxheToxXTsKLX0K
LQotLSAodm9pZCljbG9zZVdpbmRvdwotewotICAgIFtOU09iamVjdCBjYW5jZWxQcmV2aW91c1Bl
cmZvcm1SZXF1ZXN0c1dpdGhUYXJnZXQ6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoZmFkZVdpbmRv
d091dCkgb2JqZWN0Om5pbF07Ci0gICAgW3NlbGYgdW5zY2hlZHVsZVRpbWVVcGRhdGVdOwotICAg
IE5TV2luZG93ICp3aW5kb3cgPSBbc2VsZiB3aW5kb3ddOwotICAgIFtbd2luZG93IGNvbnRlbnRW
aWV3XSByZW1vdmVUcmFja2luZ0FyZWE6X2FyZWFdOwotICAgIFtzZWxmIHNldEFyZWE6bmlsXTsK
LSAgICBbd2luZG93IGNsb3NlXTsKLSAgICBbd2luZG93IHNldERlbGVnYXRlOm5pbF07Ci0gICAg
W3NlbGYgc2V0V2luZG93Om5pbF07Ci19Ci0KLXN0YXRpYyBOU0NvbnRyb2wgKmNyZWF0ZU1lZGlh
VUlDb250cm9sKE1lZGlhVUlDb250cm9sIGNvbnRyb2xUeXBlKQotewotICAgIHN3aXRjaCAoY29u
dHJvbFR5cGUpIHsKLSAgICBjYXNlIE1lZGlhVUlDb250cm9sOjpUaW1lbGluZTogewotICAgICAg
ICBOU1NsaWRlciAqc2xpZGVyID0gW1tRVEhVRFRpbWVsaW5lIGFsbG9jXSBpbml0XTsKLSAgICAg
ICAgW1tzbGlkZXIgY2VsbF0gc2V0Q29udGludW91czpZRVNdOwotICAgICAgICByZXR1cm4gc2xp
ZGVyOwotICAgIH0KLSAgICBjYXNlIE1lZGlhVUlDb250cm9sOjpTbGlkZXI6IHsKLSAgICAgICAg
TlNCdXR0b24gKnNsaWRlciA9IFtbUVRIVURTbGlkZXIgYWxsb2NdIGluaXRdOwotICAgICAgICBb
W3NsaWRlciBjZWxsXSBzZXRDb250aW51b3VzOllFU107Ci0gICAgICAgIHJldHVybiBzbGlkZXI7
Ci0gICAgfQotICAgIGNhc2UgTWVkaWFVSUNvbnRyb2w6OlBsYXlQYXVzZUJ1dHRvbjogewotICAg
ICAgICBOU0J1dHRvbiAqYnV0dG9uID0gW1tRVEhVREJ1dHRvbiBhbGxvY10gaW5pdF07Ci0gICAg
ICAgIFtidXR0b24gc2V0SW1hZ2U6W05TSW1hZ2UgaW1hZ2VOYW1lZDpAIk5TUGxheVRlbXBsYXRl
Il1dOwotICAgICAgICBbYnV0dG9uIHNldEFsdGVybmF0ZUltYWdlOltOU0ltYWdlIGltYWdlTmFt
ZWQ6QCJOU1BhdXNlUVRQcml2YXRlVGVtcGxhdGUiXV07Ci0KLSAgICAgICAgW1tidXR0b24gY2Vs
bF0gc2V0U2hvd3NTdGF0ZUJ5Ok5TQ29udGVudHNDZWxsTWFza107Ci0gICAgICAgIFtidXR0b24g
c2V0Qm9yZGVyZWQ6Tk9dOwotICAgICAgICByZXR1cm4gYnV0dG9uOwotICAgIH0KLSAgICBjYXNl
IE1lZGlhVUlDb250cm9sOjpFeGl0RnVsbHNjcmVlbkJ1dHRvbjogewotICAgICAgICBOU0J1dHRv
biAqYnV0dG9uID0gW1tRVEhVREJ1dHRvbiBhbGxvY10gaW5pdF07Ci0gICAgICAgIFtidXR0b24g
c2V0SW1hZ2U6W05TSW1hZ2UgaW1hZ2VOYW1lZDpAIk5TRXhpdEZ1bGxTY3JlZW5UZW1wbGF0ZSJd
XTsKLSAgICAgICAgW2J1dHRvbiBzZXRCb3JkZXJlZDpOT107Ci0gICAgICAgIHJldHVybiBidXR0
b247Ci0gICAgfQotICAgIGNhc2UgTWVkaWFVSUNvbnRyb2w6OlJld2luZEJ1dHRvbjogewotICAg
ICAgICBOU0J1dHRvbiAqYnV0dG9uID0gW1tRVEhVREJ1dHRvbiBhbGxvY10gaW5pdF07Ci0gICAg
ICAgIFtidXR0b24gc2V0SW1hZ2U6W05TSW1hZ2UgaW1hZ2VOYW1lZDpAIk5TUmV3aW5kVGVtcGxh
dGUiXV07Ci0gICAgICAgIFtidXR0b24gc2V0Qm9yZGVyZWQ6Tk9dOwotICAgICAgICByZXR1cm4g
YnV0dG9uOwotICAgIH0KLSAgICBjYXNlIE1lZGlhVUlDb250cm9sOjpGYXN0Rm9yd2FyZEJ1dHRv
bjogewotICAgICAgICBOU0J1dHRvbiAqYnV0dG9uID0gW1tRVEhVREJ1dHRvbiBhbGxvY10gaW5p
dF07Ci0gICAgICAgIFtidXR0b24gc2V0SW1hZ2U6W05TSW1hZ2UgaW1hZ2VOYW1lZDpAIk5TRmFz
dEZvcndhcmRUZW1wbGF0ZSJdXTsKLSAgICAgICAgW2J1dHRvbiBzZXRCb3JkZXJlZDpOT107Ci0g
ICAgICAgIHJldHVybiBidXR0b247Ci0gICAgfQotICAgIGNhc2UgTWVkaWFVSUNvbnRyb2w6OlZv
bHVtZVVwQnV0dG9uOiB7Ci0gICAgICAgIE5TQnV0dG9uICpidXR0b24gPSBbW1FUSFVEQnV0dG9u
IGFsbG9jXSBpbml0XTsKLSAgICAgICAgW2J1dHRvbiBzZXRJbWFnZTpbTlNJbWFnZSBpbWFnZU5h
bWVkOkAiTlNBdWRpb091dHB1dFZvbHVtZUhpZ2hUZW1wbGF0ZSJdXTsKLSAgICAgICAgW2J1dHRv
biBzZXRCb3JkZXJlZDpOT107Ci0gICAgICAgIHJldHVybiBidXR0b247Ci0gICAgfQotICAgIGNh
c2UgTWVkaWFVSUNvbnRyb2w6OlZvbHVtZURvd25CdXR0b246IHsKLSAgICAgICAgTlNCdXR0b24g
KmJ1dHRvbiA9IFtbUVRIVURCdXR0b24gYWxsb2NdIGluaXRdOwotICAgICAgICBbYnV0dG9uIHNl
dEltYWdlOltOU0ltYWdlIGltYWdlTmFtZWQ6QCJOU0F1ZGlvT3V0cHV0Vm9sdW1lTG93VGVtcGxh
dGUiXV07Ci0gICAgICAgIFtidXR0b24gc2V0Qm9yZGVyZWQ6Tk9dOwotICAgICAgICByZXR1cm4g
YnV0dG9uOwotICAgIH0KLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBy
ZXR1cm4gbmlsOwotfQotCi1zdGF0aWMgTlNDb250cm9sICpjcmVhdGVDb250cm9sV2l0aE1lZGlh
VUlDb250cm9sVHlwZShNZWRpYVVJQ29udHJvbCBjb250cm9sVHlwZSwgTlNSZWN0IGZyYW1lKQot
ewotICAgIE5TQ29udHJvbCAqY29udHJvbCA9IGNyZWF0ZU1lZGlhVUlDb250cm9sKGNvbnRyb2xU
eXBlKTsKLSAgICBjb250cm9sLmZyYW1lID0gZnJhbWU7Ci0gICAgcmV0dXJuIGNvbnRyb2w7Ci19
Ci0KLXN0YXRpYyBOU1RleHRGaWVsZCAqY3JlYXRlVGltZVRleHRGaWVsZChOU1JlY3QgZnJhbWUp
Ci17Ci0gICAgTlNUZXh0RmllbGQgKnRleHRGaWVsZCA9IFtbTlNUZXh0RmllbGQgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6ZnJhbWVdOwotICAgIFt0ZXh0RmllbGQgc2V0VGV4dENvbG9yOltOU0NvbG9y
IHdoaXRlQ29sb3JdXTsKLSAgICBbdGV4dEZpZWxkIHNldEJvcmRlcmVkOk5PXTsKLSAgICBbdGV4
dEZpZWxkIHNldEZvbnQ6W05TRm9udCBib2xkU3lzdGVtRm9udE9mU2l6ZToxMF1dOwotICAgIFt0
ZXh0RmllbGQgc2V0RHJhd3NCYWNrZ3JvdW5kOk5PXTsKLSAgICBbdGV4dEZpZWxkIHNldEJlemVs
ZWQ6Tk9dOwotICAgIFt0ZXh0RmllbGQgc2V0RWRpdGFibGU6Tk9dOwotICAgIFt0ZXh0RmllbGQg
c2V0U2VsZWN0YWJsZTpOT107Ci0gICAgcmV0dXJuIHRleHRGaWVsZDsKLX0KLQotc3RhdGljIE5T
VmlldyAqY3JlYXRlTWVkaWFVSUJhY2tncm91bmRWaWV3KCkKLXsKLSAgICBpZCB2aWV3ID0gW1tR
VEhVREJhY2tncm91bmRWaWV3IGFsbG9jXSBpbml0XTsKLQotICAgIGNvbnN0IENHRmxvYXQgcXVp
Y2tUaW1lUGxheWVySFVESGVpZ2h0ID0gNTk7Ci0gICAgY29uc3QgQ0dGbG9hdCBxdWlja1RpbWVQ
bGF5ZXJIVURDb250ZW50Qm9yZGVyUG9zaXRpb24gPSAzODsKLQotICAgIEFMTE9XX0RFUFJFQ0FU
RURfREVDTEFSQVRJT05TX0JFR0lOCi0gICAgW3ZpZXcgc2V0Q29udGVudEJvcmRlclBvc2l0aW9u
OnF1aWNrVGltZVBsYXllckhVRENvbnRlbnRCb3JkZXJQb3NpdGlvbiAvIHF1aWNrVGltZVBsYXll
ckhVREhlaWdodF07Ci0gICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECi0KLSAg
ICByZXR1cm4gdmlldzsKLX0KLQotLSAodm9pZCl3aW5kb3dEaWRMb2FkCi17Ci0gICAgc3RhdGlj
IGNvbnN0IENHRmxvYXQgaG9yaXpvbnRhbE1hcmdpbiA9IDEwOwotICAgIHN0YXRpYyBjb25zdCBD
R0Zsb2F0IHBsYXlCdXR0b25XaWR0aCA9IDQxOwotICAgIHN0YXRpYyBjb25zdCBDR0Zsb2F0IHBs
YXlCdXR0b25IZWlnaHQgPSAzNTsKLSAgICBzdGF0aWMgY29uc3QgQ0dGbG9hdCBwbGF5QnV0dG9u
VG9wTWFyZ2luID0gNDsKLSAgICBzdGF0aWMgY29uc3QgQ0dGbG9hdCB2b2x1bWVTbGlkZXJXaWR0
aCA9IDUwOwotICAgIHN0YXRpYyBjb25zdCBDR0Zsb2F0IHZvbHVtZVNsaWRlckhlaWdodCA9IDEz
OwotICAgIHN0YXRpYyBjb25zdCBDR0Zsb2F0IHZvbHVtZUJ1dHRvbldpZHRoID0gMTg7Ci0gICAg
c3RhdGljIGNvbnN0IENHRmxvYXQgdm9sdW1lQnV0dG9uSGVpZ2h0ID0gMTY7Ci0gICAgc3RhdGlj
IGNvbnN0IENHRmxvYXQgdm9sdW1lVXBCdXR0b25MZWZ0TWFyZ2luID0gNDsKLSAgICBzdGF0aWMg
Y29uc3QgQ0dGbG9hdCB2b2x1bWVDb250cm9sc1RvcE1hcmdpbiA9IDEzOwotICAgIHN0YXRpYyBj
b25zdCBDR0Zsb2F0IGV4aXRGdWxsc2NyZWVuQnV0dG9uV2lkdGggPSAyNTsKLSAgICBzdGF0aWMg
Y29uc3QgQ0dGbG9hdCBleGl0RnVsbHNjcmVlbkJ1dHRvbkhlaWdodCA9IDIxOwotICAgIHN0YXRp
YyBjb25zdCBDR0Zsb2F0IGV4aXRGdWxsc2NyZWVuQnV0dG9uVG9wTWFyZ2luID0gMTE7Ci0gICAg
c3RhdGljIGNvbnN0IENHRmxvYXQgdGltZWxpbmVXaWR0aCA9IDMxNTsKLSAgICBzdGF0aWMgY29u
c3QgQ0dGbG9hdCB0aW1lbGluZUhlaWdodCA9IDE0OwotICAgIHN0YXRpYyBjb25zdCBDR0Zsb2F0
IHRpbWVsaW5lQm90dG9tTWFyZ2luID0gNzsKLSAgICBzdGF0aWMgY29uc3QgQ0dGbG9hdCB0aW1l
VGV4dEZpZWxkV2lkdGggPSA1NDsKLSAgICBzdGF0aWMgY29uc3QgQ0dGbG9hdCB0aW1lVGV4dEZp
ZWxkSGVpZ2h0ID0gMTM7Ci0gICAgc3RhdGljIGNvbnN0IENHRmxvYXQgdGltZVRleHRGaWVsZEhv
cml6b250YWxNYXJnaW4gPSA3OwotCi0gICAgaWYgKCFRVEtpdExpYnJhcnkoKQotICAgICAgICB8
fCAhZ2V0UVRIVURCYWNrZ3JvdW5kVmlld0NsYXNzKCkKLSAgICAgICAgfHwgIWdldFFUSFVEQnV0
dG9uQ2xhc3MoKQotICAgICAgICB8fCAhZ2V0UVRIVURTbGlkZXJDbGFzcygpCi0gICAgICAgIHx8
ICFnZXRRVEhVRFRpbWVsaW5lQ2xhc3MoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTlNXaW5k
b3cgKndpbmRvdyA9IFtzZWxmIHdpbmRvd107Ci0gICAgQVNTRVJUKHdpbmRvdyk7Ci0KLSAgICBO
U1ZpZXcgKmJhY2tncm91bmQgPSBjcmVhdGVNZWRpYVVJQmFja2dyb3VuZFZpZXcoKTsKLQotICAg
IFt3aW5kb3cgc2V0Q29udGVudFZpZXc6YmFja2dyb3VuZF07Ci0gICAgX2FyZWEgPSBbW05TVHJh
Y2tpbmdBcmVhIGFsbG9jXSBpbml0V2l0aFJlY3Q6W2JhY2tncm91bmQgYm91bmRzXSBvcHRpb25z
Ok5TVHJhY2tpbmdNb3VzZUVudGVyZWRBbmRFeGl0ZWQgfCBOU1RyYWNraW5nQWN0aXZlQWx3YXlz
IG93bmVyOnNlbGYgdXNlckluZm86bmlsXTsKLSAgICBbYmFja2dyb3VuZCBhZGRUcmFja2luZ0Fy
ZWE6X2FyZWFdOwotICAgIFtiYWNrZ3JvdW5kIHJlbGVhc2VdOyAgICAKLQotICAgIE5TVmlldyAq
Y29udGVudFZpZXcgPSBbd2luZG93IGNvbnRlbnRWaWV3XTsKLQotICAgIENHRmxvYXQgY2VudGVy
ID0gQ0dGbG9vcigod2luZG93V2lkdGggLSBwbGF5QnV0dG9uV2lkdGgpIC8gMik7Ci0gICAgX3Bs
YXlCdXR0b24gPSAoTlNCdXR0b24gKiljcmVhdGVDb250cm9sV2l0aE1lZGlhVUlDb250cm9sVHlw
ZShNZWRpYVVJQ29udHJvbDo6UGxheVBhdXNlQnV0dG9uLCBOU01ha2VSZWN0KGNlbnRlciwgd2lu
ZG93SGVpZ2h0IC0gcGxheUJ1dHRvblRvcE1hcmdpbiAtIHBsYXlCdXR0b25IZWlnaHQsIHBsYXlC
dXR0b25XaWR0aCwgcGxheUJ1dHRvbkhlaWdodCkpOwotICAgIEFTU0VSVChbX3BsYXlCdXR0b24g
aXNLaW5kT2ZDbGFzczpbTlNCdXR0b24gY2xhc3NdXSk7Ci0gICAgW19wbGF5QnV0dG9uIHNldFRh
cmdldDpzZWxmXTsKLSAgICBbX3BsYXlCdXR0b24gc2V0QWN0aW9uOkBzZWxlY3Rvcih0b2dnbGVQ
bGF5aW5nOildOwotICAgIFtjb250ZW50VmlldyBhZGRTdWJ2aWV3Ol9wbGF5QnV0dG9uXTsKLQot
ICAgIENHRmxvYXQgY2xvc2VUb1JpZ2h0ID0gd2luZG93V2lkdGggLSBob3Jpem9udGFsTWFyZ2lu
IC0gZXhpdEZ1bGxzY3JlZW5CdXR0b25XaWR0aDsKLSAgICBOU0NvbnRyb2wgKmV4aXRGdWxsc2Ny
ZWVuQnV0dG9uID0gY3JlYXRlQ29udHJvbFdpdGhNZWRpYVVJQ29udHJvbFR5cGUoTWVkaWFVSUNv
bnRyb2w6OkV4aXRGdWxsc2NyZWVuQnV0dG9uLCBOU01ha2VSZWN0KGNsb3NlVG9SaWdodCwgd2lu
ZG93SGVpZ2h0IC0gZXhpdEZ1bGxzY3JlZW5CdXR0b25Ub3BNYXJnaW4gLSBleGl0RnVsbHNjcmVl
bkJ1dHRvbkhlaWdodCwgZXhpdEZ1bGxzY3JlZW5CdXR0b25XaWR0aCwgZXhpdEZ1bGxzY3JlZW5C
dXR0b25IZWlnaHQpKTsKLSAgICBbZXhpdEZ1bGxzY3JlZW5CdXR0b24gc2V0QWN0aW9uOkBzZWxl
Y3RvcihleGl0RnVsbHNjcmVlbjopXTsKLSAgICBbZXhpdEZ1bGxzY3JlZW5CdXR0b24gc2V0VGFy
Z2V0OnNlbGZdOwotICAgIFtjb250ZW50VmlldyBhZGRTdWJ2aWV3OmV4aXRGdWxsc2NyZWVuQnV0
dG9uXTsKLSAgICBbZXhpdEZ1bGxzY3JlZW5CdXR0b24gcmVsZWFzZV07Ci0gICAgCi0gICAgQ0dG
bG9hdCB2b2x1bWVDb250cm9sc0JvdHRvbSA9IHdpbmRvd0hlaWdodCAtIHZvbHVtZUNvbnRyb2xz
VG9wTWFyZ2luIC0gdm9sdW1lQnV0dG9uSGVpZ2h0OwotICAgIENHRmxvYXQgbGVmdCA9IGhvcml6
b250YWxNYXJnaW47Ci0gICAgTlNDb250cm9sICp2b2x1bWVEb3duQnV0dG9uID0gY3JlYXRlQ29u
dHJvbFdpdGhNZWRpYVVJQ29udHJvbFR5cGUoTWVkaWFVSUNvbnRyb2w6OlZvbHVtZURvd25CdXR0
b24sIE5TTWFrZVJlY3QobGVmdCwgdm9sdW1lQ29udHJvbHNCb3R0b20sIHZvbHVtZUJ1dHRvbldp
ZHRoLCB2b2x1bWVCdXR0b25IZWlnaHQpKTsKLSAgICBbY29udGVudFZpZXcgYWRkU3Vidmlldzp2
b2x1bWVEb3duQnV0dG9uXTsKLSAgICBbdm9sdW1lRG93bkJ1dHRvbiBzZXRUYXJnZXQ6c2VsZl07
Ci0gICAgW3ZvbHVtZURvd25CdXR0b24gc2V0QWN0aW9uOkBzZWxlY3RvcihzZXRWb2x1bWVUb1pl
cm86KV07Ci0gICAgW3ZvbHVtZURvd25CdXR0b24gcmVsZWFzZV07Ci0KLSAgICBsZWZ0ICs9IHZv
bHVtZUJ1dHRvbldpZHRoOwotICAgIF92b2x1bWVTbGlkZXIgPSBjcmVhdGVDb250cm9sV2l0aE1l
ZGlhVUlDb250cm9sVHlwZShNZWRpYVVJQ29udHJvbDo6U2xpZGVyLCBOU01ha2VSZWN0KGxlZnQs
IHZvbHVtZUNvbnRyb2xzQm90dG9tICsgQ0dGbG9vcigodm9sdW1lQnV0dG9uSGVpZ2h0IC0gdm9s
dW1lU2xpZGVySGVpZ2h0KSAvIDIpLCB2b2x1bWVTbGlkZXJXaWR0aCwgdm9sdW1lU2xpZGVySGVp
Z2h0KSk7Ci0gICAgW192b2x1bWVTbGlkZXIgc2V0VmFsdWU6W05TTnVtYmVyIG51bWJlcldpdGhE
b3VibGU6W3NlbGYgbWF4Vm9sdW1lXV0gZm9yS2V5OkAibWF4VmFsdWUiXTsKLSAgICBbX3ZvbHVt
ZVNsaWRlciBzZXRUYXJnZXQ6c2VsZl07Ci0gICAgW192b2x1bWVTbGlkZXIgc2V0QWN0aW9uOkBz
ZWxlY3Rvcih2b2x1bWVDaGFuZ2VkOildOwotICAgIFtjb250ZW50VmlldyBhZGRTdWJ2aWV3Ol92
b2x1bWVTbGlkZXJdOwotCi0gICAgbGVmdCArPSB2b2x1bWVTbGlkZXJXaWR0aCArIHZvbHVtZVVw
QnV0dG9uTGVmdE1hcmdpbjsKLSAgICBOU0NvbnRyb2wgKnZvbHVtZVVwQnV0dG9uID0gY3JlYXRl
Q29udHJvbFdpdGhNZWRpYVVJQ29udHJvbFR5cGUoTWVkaWFVSUNvbnRyb2w6OlZvbHVtZVVwQnV0
dG9uLCBOU01ha2VSZWN0KGxlZnQsIHZvbHVtZUNvbnRyb2xzQm90dG9tLCB2b2x1bWVCdXR0b25X
aWR0aCwgdm9sdW1lQnV0dG9uSGVpZ2h0KSk7Ci0gICAgW3ZvbHVtZVVwQnV0dG9uIHNldFRhcmdl
dDpzZWxmXTsKLSAgICBbdm9sdW1lVXBCdXR0b24gc2V0QWN0aW9uOkBzZWxlY3RvcihzZXRWb2x1
bWVUb01heGltdW06KV07Ci0gICAgW2NvbnRlbnRWaWV3IGFkZFN1YnZpZXc6dm9sdW1lVXBCdXR0
b25dOwotICAgIFt2b2x1bWVVcEJ1dHRvbiByZWxlYXNlXTsKLQotICAgIF90aW1lbGluZSA9IGNy
ZWF0ZU1lZGlhVUlDb250cm9sKE1lZGlhVUlDb250cm9sOjpUaW1lbGluZSk7Ci0KLSAgICBbX3Rp
bWVsaW5lIHNldFRhcmdldDpzZWxmXTsKLSAgICBbX3RpbWVsaW5lIHNldEFjdGlvbjpAc2VsZWN0
b3IodGltZWxpbmVQb3NpdGlvbkNoYW5nZWQ6KV07Ci0gICAgW190aW1lbGluZSBzZXRGcmFtZTpO
U01ha2VSZWN0KENHRmxvb3IoKHdpbmRvd1dpZHRoIC0gdGltZWxpbmVXaWR0aCkgLyAyKSwgdGlt
ZWxpbmVCb3R0b21NYXJnaW4sIHRpbWVsaW5lV2lkdGgsIHRpbWVsaW5lSGVpZ2h0KV07Ci0gICAg
W2NvbnRlbnRWaWV3IGFkZFN1YnZpZXc6X3RpbWVsaW5lXTsKLQotICAgIF9lbGFwc2VkVGltZVRl
eHQgPSBjcmVhdGVUaW1lVGV4dEZpZWxkKE5TTWFrZVJlY3QodGltZVRleHRGaWVsZEhvcml6b250
YWxNYXJnaW4sIHRpbWVsaW5lQm90dG9tTWFyZ2luLCB0aW1lVGV4dEZpZWxkV2lkdGgsIHRpbWVU
ZXh0RmllbGRIZWlnaHQpKTsKLSAgICBbX2VsYXBzZWRUaW1lVGV4dCBzZXRBbGlnbm1lbnQ6TlNU
ZXh0QWxpZ25tZW50TGVmdF07Ci0gICAgW2NvbnRlbnRWaWV3IGFkZFN1YnZpZXc6X2VsYXBzZWRU
aW1lVGV4dF07Ci0KLSAgICBfcmVtYWluaW5nVGltZVRleHQgPSBjcmVhdGVUaW1lVGV4dEZpZWxk
KE5TTWFrZVJlY3Qod2luZG93V2lkdGggLSB0aW1lVGV4dEZpZWxkSG9yaXpvbnRhbE1hcmdpbiAt
IHRpbWVUZXh0RmllbGRXaWR0aCwgdGltZWxpbmVCb3R0b21NYXJnaW4sIHRpbWVUZXh0RmllbGRX
aWR0aCwgdGltZVRleHRGaWVsZEhlaWdodCkpOwotICAgIFtfcmVtYWluaW5nVGltZVRleHQgc2V0
QWxpZ25tZW50Ok5TVGV4dEFsaWdubWVudFJpZ2h0XTsKLSAgICBbY29udGVudFZpZXcgYWRkU3Vi
dmlldzpfcmVtYWluaW5nVGltZVRleHRdOwotCi0gICAgW3dpbmRvdyByZWNhbGN1bGF0ZUtleVZp
ZXdMb29wXTsKLSAgICBbd2luZG93IHNldEluaXRpYWxGaXJzdFJlc3BvbmRlcjpfcGxheUJ1dHRv
bl07Ci0gICAgW3dpbmRvdyBjZW50ZXJdOwotfQotCi0tICh2b2lkKXVwZGF0ZVZvbHVtZQotewot
ICAgIFtfdm9sdW1lU2xpZGVyIHNldEZsb2F0VmFsdWU6W3NlbGYgdm9sdW1lXV07Ci19Ci0KLS0g
KHZvaWQpdXBkYXRlVGltZQotewotICAgIFtzZWxmIHVwZGF0ZVZvbHVtZV07Ci0KLSAgICBbX3Rp
bWVsaW5lIHNldEZsb2F0VmFsdWU6W3NlbGYgY3VycmVudFRpbWVdXTsKLSAgICBbX3RpbWVsaW5l
IHNldFZhbHVlOltOU051bWJlciBudW1iZXJXaXRoRG91YmxlOltzZWxmIGR1cmF0aW9uXV0gZm9y
S2V5OkAibWF4VmFsdWUiXTsKLQotICAgIFtfcmVtYWluaW5nVGltZVRleHQgc2V0U3RyaW5nVmFs
dWU6W3NlbGYgcmVtYWluaW5nVGltZVRleHRdXTsKLSAgICBbX2VsYXBzZWRUaW1lVGV4dCBzZXRT
dHJpbmdWYWx1ZTpbc2VsZiBlbGFwc2VkVGltZVRleHRdXTsKLX0KLQotLSAodm9pZCllbmRTY3J1
YmJpbmcKLXsKLSAgICBBU1NFUlQoX2lzU2NydWJiaW5nKTsKLSAgICBfaXNTY3J1YmJpbmcgPSBO
TzsKLSAgICBpZiAoSFRNTFZpZGVvRWxlbWVudCogdmlkZW9FbGVtZW50ID0gW19kZWxlZ2F0ZSB2
aWRlb0VsZW1lbnRdKQotICAgICAgICB2aWRlb0VsZW1lbnQtPmVuZFNjcnViYmluZygpOwotfQot
Ci0tICh2b2lkKXRpbWVsaW5lUG9zaXRpb25DaGFuZ2VkOihpZClzZW5kZXIKLXsKLSAgICBVTlVT
RURfUEFSQU0oc2VuZGVyKTsKLSAgICBbc2VsZiBzZXRDdXJyZW50VGltZTpbX3RpbWVsaW5lIGZs
b2F0VmFsdWVdXTsKLSAgICBpZiAoIV9pc1NjcnViYmluZykgewotICAgICAgICBfaXNTY3J1YmJp
bmcgPSBZRVM7Ci0gICAgICAgIGlmIChIVE1MVmlkZW9FbGVtZW50KiB2aWRlb0VsZW1lbnQgPSBb
X2RlbGVnYXRlIHZpZGVvRWxlbWVudF0pCi0gICAgICAgICAgICB2aWRlb0VsZW1lbnQtPmJlZ2lu
U2NydWJiaW5nKCk7Ci0gICAgICAgIHN0YXRpYyBOU0FycmF5ICplbmRTY3J1YmJpbmdNb2RlcyA9
IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOk5TRGVmYXVsdFJ1bkxvb3BNb2RlLCBO
U01vZGFsUGFuZWxSdW5Mb29wTW9kZSwgbmlsXTsKLSAgICAgICAgLy8gU2NoZWR1bGUgLWVuZFNj
cnViYmluZyBmb3Igd2hlbiBsZWF2aW5nIG1vdXNlIHRyYWNraW5nIG1vZGUuCi0gICAgICAgIFtb
TlNSdW5Mb29wIGN1cnJlbnRSdW5Mb29wXSBwZXJmb3JtU2VsZWN0b3I6QHNlbGVjdG9yKGVuZFNj
cnViYmluZykgdGFyZ2V0OnNlbGYgYXJndW1lbnQ6bmlsIG9yZGVyOjAgbW9kZXM6ZW5kU2NydWJi
aW5nTW9kZXNdOwotICAgIH0KLX0KLQotLSAoZmxvYXQpY3VycmVudFRpbWUKLXsKLSAgICByZXR1
cm4gW19kZWxlZ2F0ZSB2aWRlb0VsZW1lbnRdID8gW19kZWxlZ2F0ZSB2aWRlb0VsZW1lbnRdLT5j
dXJyZW50VGltZSgpIDogMDsKLX0KLQotLSAodm9pZClzZXRDdXJyZW50VGltZTooZmxvYXQpY3Vy
cmVudFRpbWUKLXsKLSAgICBpZiAoIVtfZGVsZWdhdGUgdmlkZW9FbGVtZW50XSkKLSAgICAgICAg
cmV0dXJuOwotICAgIFtfZGVsZWdhdGUgdmlkZW9FbGVtZW50XS0+c2V0Q3VycmVudFRpbWUoY3Vy
cmVudFRpbWUpOwotICAgIFtzZWxmIHVwZGF0ZVRpbWVdOwotfQotCi0tIChkb3VibGUpZHVyYXRp
b24KLXsKLSAgICByZXR1cm4gW19kZWxlZ2F0ZSB2aWRlb0VsZW1lbnRdID8gW19kZWxlZ2F0ZSB2
aWRlb0VsZW1lbnRdLT5kdXJhdGlvbigpIDogMDsKLX0KLQotLSAoZmxvYXQpbWF4Vm9sdW1lCi17
Ci0gICAgLy8gU2V0IHRoZSB2b2x1bWUgc2xpZGVyIHJlc29sdXRpb24KLSAgICByZXR1cm4gMTAw
OwotfQotCi0tICh2b2lkKXZvbHVtZUNoYW5nZWQ6KGlkKXNlbmRlcgotewotICAgIFVOVVNFRF9Q
QVJBTShzZW5kZXIpOwotICAgIFtzZWxmIHNldFZvbHVtZTpbX3ZvbHVtZVNsaWRlciBmbG9hdFZh
bHVlXV07Ci19Ci0KLS0gKHZvaWQpc2V0Vm9sdW1lVG9aZXJvOihpZClzZW5kZXIKLXsKLSAgICBV
TlVTRURfUEFSQU0oc2VuZGVyKTsKLSAgICBbc2VsZiBzZXRWb2x1bWU6MF07Ci19Ci0KLS0gKHZv
aWQpc2V0Vm9sdW1lVG9NYXhpbXVtOihpZClzZW5kZXIKLXsKLSAgICBVTlVTRURfUEFSQU0oc2Vu
ZGVyKTsKLSAgICBbc2VsZiBzZXRWb2x1bWU6W3NlbGYgbWF4Vm9sdW1lXV07Ci19Ci0KLS0gKHZv
aWQpZGVjcmVtZW50Vm9sdW1lCi17Ci0gICAgaWYgKCFbX2RlbGVnYXRlIHZpZGVvRWxlbWVudF0p
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGZsb2F0IHZvbHVtZSA9IFtzZWxmIHZvbHVtZV0gLSAx
MDsKLSAgICBbc2VsZiBzZXRWb2x1bWU6c3RkOjptYXgodm9sdW1lLCAwLjBmKV07Ci19Ci0KLS0g
KHZvaWQpaW5jcmVtZW50Vm9sdW1lCi17Ci0gICAgaWYgKCFbX2RlbGVnYXRlIHZpZGVvRWxlbWVu
dF0pCi0gICAgICAgIHJldHVybjsKLQotICAgIGZsb2F0IHZvbHVtZSA9IFtzZWxmIHZvbHVtZV0g
KyAxMDsKLSAgICBbc2VsZiBzZXRWb2x1bWU6c3RkOjptaW4odm9sdW1lLCBbc2VsZiBtYXhWb2x1
bWVdKV07Ci19Ci0KLS0gKGZsb2F0KXZvbHVtZQotewotICAgIHJldHVybiBbX2RlbGVnYXRlIHZp
ZGVvRWxlbWVudF0gPyBbX2RlbGVnYXRlIHZpZGVvRWxlbWVudF0tPnZvbHVtZSgpICogW3NlbGYg
bWF4Vm9sdW1lXSA6IDA7Ci19Ci0KLS0gKHZvaWQpc2V0Vm9sdW1lOihmbG9hdCl2b2x1bWUKLXsK
LSAgICBpZiAoIVtfZGVsZWdhdGUgdmlkZW9FbGVtZW50XSkKLSAgICAgICAgcmV0dXJuOwotICAg
IGlmIChbX2RlbGVnYXRlIHZpZGVvRWxlbWVudF0tPm11dGVkKCkpCi0gICAgICAgIFtfZGVsZWdh
dGUgdmlkZW9FbGVtZW50XS0+c2V0TXV0ZWQoZmFsc2UpOwotICAgIFtfZGVsZWdhdGUgdmlkZW9F
bGVtZW50XS0+c2V0Vm9sdW1lKHZvbHVtZSAvIFtzZWxmIG1heFZvbHVtZV0pOwotICAgIFtzZWxm
IHVwZGF0ZVZvbHVtZV07Ci19Ci0KLS0gKHZvaWQpdXBkYXRlUGxheUJ1dHRvbgotewotICAgIFtf
cGxheUJ1dHRvbiBzZXRJbnRWYWx1ZTpbc2VsZiBwbGF5aW5nXV07Ci19Ci0KLS0gKHZvaWQpdXBk
YXRlUmF0ZQotewotICAgIEJPT0wgcGxheWluZyA9IFtzZWxmIHBsYXlpbmddOwotCi0gICAgLy8g
S2VlcCB0aGUgSFVEIHZpc2libGUgd2hlbiBwYXVzZWQuCi0gICAgaWYgKCFwbGF5aW5nKQotICAg
ICAgICBbc2VsZiBmYWRlV2luZG93SW5dOwotICAgIGVsc2UgaWYgKCFfbW91c2VJc0luSFVEKSB7
Ci0gICAgICAgIFtOU09iamVjdCBjYW5jZWxQcmV2aW91c1BlcmZvcm1SZXF1ZXN0c1dpdGhUYXJn
ZXQ6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoZmFkZVdpbmRvd091dCkgb2JqZWN0Om5pbF07Ci0g
ICAgICAgIFtzZWxmIHBlcmZvcm1TZWxlY3RvcjpAc2VsZWN0b3IoZmFkZVdpbmRvd091dCkgd2l0
aE9iamVjdDpuaWwgYWZ0ZXJEZWxheTpIVURXaW5kb3dGYWRlT3V0RGVsYXldOwotICAgIH0KLSAg
ICBbc2VsZiB1cGRhdGVQbGF5QnV0dG9uXTsKLX0KLQotLSAodm9pZCl0b2dnbGVQbGF5aW5nOihp
ZClzZW5kZXIKLXsKLSAgICBVTlVTRURfUEFSQU0oc2VuZGVyKTsKLSAgICBbc2VsZiBzZXRQbGF5
aW5nOiFbc2VsZiBwbGF5aW5nXV07Ci19Ci0KLS0gKEJPT0wpcGxheWluZwotewotICAgIEhUTUxW
aWRlb0VsZW1lbnQqIHZpZGVvRWxlbWVudCA9IFtfZGVsZWdhdGUgdmlkZW9FbGVtZW50XTsKLSAg
ICBpZiAoIXZpZGVvRWxlbWVudCkKLSAgICAgICAgcmV0dXJuIE5POwotCi0gICAgcmV0dXJuICF2
aWRlb0VsZW1lbnQtPmNhblBsYXkoKTsKLX0KLQotLSAodm9pZClzZXRQbGF5aW5nOihCT09MKXBs
YXlpbmcKLXsKLSAgICBIVE1MVmlkZW9FbGVtZW50KiB2aWRlb0VsZW1lbnQgPSBbX2RlbGVnYXRl
IHZpZGVvRWxlbWVudF07Ci0KLSAgICBpZiAoIXZpZGVvRWxlbWVudCkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgaWYgKHBsYXlpbmcpCi0gICAgICAgIHZpZGVvRWxlbWVudC0+cGxheSgpOwotICAg
IGVsc2UKLSAgICAgICAgdmlkZW9FbGVtZW50LT5wYXVzZSgpOwotfQotCi1zdGF0aWMgTlNTdHJp
bmcgKnRpbWVUb1N0cmluZyhkb3VibGUgdGltZSkKLXsKLSAgICBBU1NFUlRfQVJHKHRpbWUsIHRp
bWUgPj0gMCk7Ci0KLSAgICBpZiAoIXN0ZDo6aXNmaW5pdGUodGltZSkpCi0gICAgICAgIHRpbWUg
PSAwOwotCi0gICAgaW50IHNlY29uZHMgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHN0ZDo6YWJz
KHRpbWUpKTsKLSAgICBpbnQgaG91cnMgPSBzZWNvbmRzIC8gKDYwICogNjApOwotICAgIGludCBt
aW51dGVzID0gKHNlY29uZHMgLyA2MCkgJSA2MDsKLSAgICBzZWNvbmRzICU9IDYwOwotCi0gICAg
aWYgKGhvdXJzKQotICAgICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIl
ZDolMDJkOiUwMmQiLCBob3VycywgbWludXRlcywgc2Vjb25kc107Ci0KLSAgICByZXR1cm4gW05T
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlMDJkOiUwMmQiLCBtaW51dGVzLCBzZWNvbmRzXTsg
ICAgCi19Ci0KLS0gKE5TU3RyaW5nICopcmVtYWluaW5nVGltZVRleHQKLXsKLSAgICBIVE1MVmlk
ZW9FbGVtZW50KiB2aWRlb0VsZW1lbnQgPSBbX2RlbGVnYXRlIHZpZGVvRWxlbWVudF07Ci0gICAg
aWYgKCF2aWRlb0VsZW1lbnQpCi0gICAgICAgIHJldHVybiBAIiI7Ci0KLSAgICBkb3VibGUgcmVt
YWluaW5nVGltZSA9IDA7Ci0KLSAgICBpZiAoc3RkOjppc2Zpbml0ZSh2aWRlb0VsZW1lbnQtPmR1
cmF0aW9uKCkpICYmIHN0ZDo6aXNmaW5pdGUodmlkZW9FbGVtZW50LT5jdXJyZW50VGltZSgpKSkK
LSAgICAgICAgcmVtYWluaW5nVGltZSA9IHZpZGVvRWxlbWVudC0+ZHVyYXRpb24oKSAtIHZpZGVv
RWxlbWVudC0+Y3VycmVudFRpbWUoKTsKLQotICAgIHJldHVybiBbQCItIiBzdHJpbmdCeUFwcGVu
ZGluZ1N0cmluZzp0aW1lVG9TdHJpbmcocmVtYWluaW5nVGltZSldOwotfQotCi0tIChOU1N0cmlu
ZyAqKWVsYXBzZWRUaW1lVGV4dAotewotICAgIGlmICghW19kZWxlZ2F0ZSB2aWRlb0VsZW1lbnRd
KQotICAgICAgICByZXR1cm4gQCIiOwotCi0gICAgcmV0dXJuIHRpbWVUb1N0cmluZyhbX2RlbGVn
YXRlIHZpZGVvRWxlbWVudF0tPmN1cnJlbnRUaW1lKCkpOwotfQotCi0vLyBNQVJLOiBOU1Jlc3Bv
bmRlcgotCi0tICh2b2lkKW1vdXNlRW50ZXJlZDooTlNFdmVudCAqKXRoZUV2ZW50Ci17Ci0gICAg
VU5VU0VEX1BBUkFNKHRoZUV2ZW50KTsKLSAgICAvLyBNYWtlIHN1cmUgdGhlIEhVRCB3b24ndCBi
ZSBoaWRkZW4gZnJvbSBub3cKLSAgICBfbW91c2VJc0luSFVEID0gWUVTOwotICAgIFtzZWxmIGZh
ZGVXaW5kb3dJbl07Ci19Ci0KLS0gKHZvaWQpbW91c2VFeGl0ZWQ6KE5TRXZlbnQgKil0aGVFdmVu
dAotewotICAgIFVOVVNFRF9QQVJBTSh0aGVFdmVudCk7Ci0gICAgX21vdXNlSXNJbkhVRCA9IE5P
OwotICAgIFtzZWxmIGZhZGVXaW5kb3dJbl07Ci19Ci0KLS0gKHZvaWQpcmV3aW5kOihpZClzZW5k
ZXIKLXsKLSAgICBVTlVTRURfUEFSQU0oc2VuZGVyKTsKLSAgICBpZiAoIVtfZGVsZWdhdGUgdmlk
ZW9FbGVtZW50XSkKLSAgICAgICAgcmV0dXJuOwotICAgIFtfZGVsZWdhdGUgdmlkZW9FbGVtZW50
XS0+cmV3aW5kKDMwKTsKLX0KLQotLSAodm9pZClmYXN0Rm9yd2FyZDooaWQpc2VuZGVyCi17Ci0g
ICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7Ci0gICAgaWYgKCFbX2RlbGVnYXRlIHZpZGVvRWxlbWVu
dF0pCi0gICAgICAgIHJldHVybjsKLX0KLQotLSAodm9pZClleGl0RnVsbHNjcmVlbjooaWQpc2Vu
ZGVyCi17Ci0gICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7Ci0gICAgaWYgKF9pc0VuZGluZ0Z1bGxz
Y3JlZW4pCi0gICAgICAgIHJldHVybjsKLSAgICBfaXNFbmRpbmdGdWxsc2NyZWVuID0gWUVTOwot
ICAgIFtfZGVsZWdhdGUgcmVxdWVzdEV4aXRGdWxsc2NyZWVuXTsgCi19Ci0KLS8vIE1BUks6IE5T
V2luZG93RGVsZWdhdGUKLQotLSAodm9pZCl3aW5kb3dEaWRFeHBvc2U6KE5TTm90aWZpY2F0aW9u
ICopbm90aWZpY2F0aW9uCi17Ci0gICAgVU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7Ci0gICAg
W3NlbGYgc2NoZWR1bGVUaW1lVXBkYXRlXTsKLX0KLQotLSAodm9pZCl3aW5kb3dEaWRDbG9zZToo
TlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KLXsKLSAgICBVTlVTRURfUEFSQU0obm90aWZp
Y2F0aW9uKTsKLSAgICBbc2VsZiB1bnNjaGVkdWxlVGltZVVwZGF0ZV07Ci19Ci0KLUBlbmQKLQot
I2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390957</attachid>
            <date>2020-02-17 11:58:29 -0800</date>
            <delta_ts>2020-02-17 13:42:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207795-20200217115828.patch</filename>
            <type>text/plain</type>
            <size>84037</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2NTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTU3Yzk0NDI5ZDdhMzBj
MWRiNGUxMTVlMDA1ODVhMDRlMTdkNTZlZi4uZmFlN2M4MzgxZjg3MjY3YzliNTM4MDE4MTVmNTBk
MjU5YTJkNGZkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIwLTAyLTE0ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFN0b3AgdXNpbmcgUVRLaXQg
Zm9yIHJlbmRlcmluZyBXSzEgdmlkZW8gZnVsbHNjcmVlbiBjb250cm9scworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3Nzk1CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS80ODg5NDkxNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBEcml2ZS1ieSBmaXhlczoKKworICAgICAgICAtIERvbid0IHNldCB0aGUg
dmlkZW8gbGF5ZXIgdG8gbm90LXZpc2libGUgd2hlbiBpbiB2aWRlbyBmdWxsc2NyZWVuIG1vZGUu
CisgICAgICAgIC0gRXhwb3J0IHByZXZpb3VzbHkgdW4tZXhwb3J0ZWQgbWV0aG9kcy4KKyAgICAg
ICAgLSBNYWtlIHNvbWUgaW9zLW9ubHkgY2xhc3NlcyBhdmFpbGFibGUgb24gbWFjLgorICAgICAg
ICAtIEFkZCBhIGNvdXBsZSBwcmV2aW91c2x5IHVuaW1wbGVtZW50ZWQgcHJvcGVydGllcyB0byBX
ZWJBVlBsYXllckNvbnRyb2xsZXIgbmVlZGVkIGJ5IEFWS2l0LgorICAgICAgICAtIFdlYkNvcmVG
dWxsc2NyZWVuV2luZG93IGRvZXNuJ3QgZGVwZW5kIG9uIEZVTExTQ1JFRU5fQVBJLgorCisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
Ojp2aXNpYmlsaXR5U3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1l
bnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNldFZpZGVvRnVsbHNj
cmVlbkxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlQVZLaXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlQVZLaXQubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VB
VktpdDo6ZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9X
ZWJBVlBsYXllckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViQVZQbGF5
ZXJDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgY2FuU2Vl
a0ZyYW1lQmFja3dhcmRdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIGNhblNl
ZWtGcmFtZUZvcndhcmRdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZUZ1bGxTY3Jl
ZW5XaW5kb3cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZUZ1bGxTY3JlZW5XaW5k
b3cubW06CisKIDIwMjAtMDItMTMgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAK
ICAgICAgICAgTWVkaWFUb29sYm94IG1heSBub3QgYmUgYXZhaWxhYmxlOyBjaGVjayBiZWZvcmUg
Y2FsbGluZyBNVE92ZXJyaWRlU2hvdWxkUGxheUhEUlZpZGVvKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmlu
ZGV4IDg5MGE4NDM4ZmEwZjA2NzU3NmQ1MGE3OTRmZDJlMTBiMzYwYTU1MTMuLjFlYmU3OTZlNmE2
YWM1N2UyOGI2OGE3YTUyZjgwZTRiOTIzYmY4ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE2IEBACisyMDIwLTAyLTE0ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgor
CisgICAgICAgIFN0b3AgdXNpbmcgUVRLaXQgZm9yIHJlbmRlcmluZyBXSzEgdmlkZW8gZnVsbHNj
cmVlbiBjb250cm9scworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA3Nzk1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80ODg5NDkxNT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBBTC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhbC9zcGkvY29jb2EvQVZLaXRTUEkuaDoKKyAg
ICAgICAgKiBwYWwvc3BpL21hYy9OU1dpbmRvd1NQSS5oOgorICAgICAgICAqIHBhbC9zcGkvbWFj
L1FUS2l0U1BJLmg6IFJlbW92ZWQuCisKIDIwMjAtMDItMTIgIFJ5YW4gSGFkZGFkICA8cnlhbmhh
ZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjI1NjAx
MC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBlNjA3NDRmZjRiMjczMTBkMDJmZTAy
YjkxN2RmMDk0NTIzNGVhM2MwLi42ZWM1MTQzYzkzNjE4MzEwN2YxNTU1NDg4MmViYjM0ZTBjYTY0
ZTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzYgQEAKKzIwMjAt
MDItMTQgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcCB1
c2luZyBRVEtpdCBmb3IgcmVuZGVyaW5nIFdLMSB2aWRlbyBmdWxsc2NyZWVuIGNvbnRyb2xzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc3OTUKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ4ODk0OTE1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFN3aXRjaCB0byB1c2luZyBBVlBsYXllclZpZXcgaW5z
dGVhZCBvZiBRVEhVRCB0byByZW5kZXIgb3VyIGZ1bGxzY3JlZW4gY29udHJvbHMuCisKKyAgICAg
ICAgSW4gYWRkaXRpb24sIHN3aXRjaCB0byBhIG1vZGVybiBOU1dpbmRvdyBmdWxsc2NyZWVuIEFQ
SSwgd2l0aCBjdXN0b20sIHNtb290aCBhbmltYXRpb25zIHdoaWNoIAorICAgICAgICBtb3ZlIHRo
ZSBmdWxsc2NyZWVuIHdpbmRvdyB0byBhIHNlcGFyYXRlIHNwYWNlLiBUaGlzIHJlcXVpcmVzIHN1
YmNsYXNzaW5nIEFWUGxheWVyVmlldyBzbyB0aGF0CisgICAgICAgIGZ1bGxzY3JlZW4gdG9nZ2xp
bmcgd2lsbCBzaWduYWwgdG8gdGhlIGNvbnRyb2xsZXIsIHNvIHRoYXQgb3VyIGZ1bGxzY3JlZW4g
YnV0dG9uIGFuZCB0aGUgaW5saW5lCisgICAgICAgIHZlcnNpb24gb2Ygc2FtZSBkb24ndCBnZXQg
b3V0IG9mIHN5bmMuIEJlY2F1c2UgQVZQbGF5ZXJWaWV3IHJlcXVpcmVzIGFuIEFWUGxheWVyIGlu
IG9yZGVyIHRvCisgICAgICAgIGRpc3BsYXkgdGhlIHZpZGVvIGxheWVyLCBhbmQgd2Ugd29uJ3Qg
bmVjZXNzYXJpbHkgaGF2ZSBhbiBBVlBsYXllciBmb3IgTVNFLWJhY2tlZCB2aWRlb3MsIGluc3Rl
YWQKKyAgICAgICAgaW5zdGFsbCBhIGN1c3RvbSBvdmVybGF5IHZpZXcgaW5zaWRlIHRoZSBBVlBs
YXllclZpZXcgaW4gd2hpY2ggdG8gaG9zdCB0aGUgZnVsbHNjcmVlbiB2aWRlbyBsYXllci4KKwor
ICAgICAgICAqIFdlYlZpZXcvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5oOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbToKKyAgICAgICAgKC1b
V2ViT3ZlcmxheUxheWVyIGxheW91dFN1YmxheWVyc10pOgorICAgICAgICAoV2ViQVZQbGF5ZXJW
aWV3X2RlbGVnYXRlKToKKyAgICAgICAgKFdlYkFWUGxheWVyVmlld19zZXREZWxlZ2F0ZSk6Cisg
ICAgICAgIChXZWJBVlBsYXllclZpZXdfaXNGdWxsU2NyZWVuKToKKyAgICAgICAgKFdlYkFWUGxh
eWVyVmlld19lbnRlckZ1bGxTY3JlZW4pOgorICAgICAgICAoV2ViQVZQbGF5ZXJWaWV3X2V4aXRG
dWxsU2NyZWVuKToKKyAgICAgICAgKGFsbG9jV2ViQVZQbGF5ZXJWaWV3SW5zdGFuY2UpOgorICAg
ICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIGluaXRdKToKKyAgICAgICAgKC1b
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciBkZWFsbG9jXSk6CisgICAgICAgICgtW1dlYlZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgZnVsbHNjcmVlbldpbmRvd10pOgorICAgICAgICAoLVtX
ZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIHdpbmRvd0RpZExvYWRdKToKKyAgICAgICAgKC1b
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciBzZXRWaWRlb0VsZW1lbnQ6XSk6CisgICAgICAg
ICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgZW50ZXJGdWxsc2NyZWVuOl0pOgorICAg
ICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIGV4aXRGdWxsc2NyZWVuXSk6Cisg
ICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgYXBwbGljYXRpb25EaWRSZXNp
Z25BY3RpdmU6XSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgX3Jl
cXVlc3RFeGl0XSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgX3Jl
cXVlc3RFbnRlcl0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIGNh
bmNlbE9wZXJhdGlvbjpdKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ciBwbGF5ZXJWaWV3SXNGdWxsU2NyZWVuOl0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyIHBsYXllclZpZXdSZXF1ZXN0RW50ZXJGdWxsc2NyZWVuOl0pOgorICAgICAg
ICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIHBsYXllclZpZXdSZXF1ZXN0RXhpdEZ1
bGxzY3JlZW46XSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgY3Vz
dG9tV2luZG93c1RvRW50ZXJGdWxsU2NyZWVuRm9yV2luZG93Ol0pOgorICAgICAgICAoLVtXZWJW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIHdpbmRvdzpzdGFydEN1c3RvbUFuaW1hdGlvblRvRW50
ZXJGdWxsU2NyZWVuV2l0aER1cmF0aW9uOl0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyIGN1c3RvbVdpbmRvd3NUb0V4aXRGdWxsU2NyZWVuRm9yV2luZG93Ol0pOgor
ICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIHdpbmRvdzpzdGFydEN1c3Rv
bUFuaW1hdGlvblRvRXhpdEZ1bGxTY3JlZW5XaXRoRHVyYXRpb246XSk6CisgICAgICAgICgtW1dl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgd2luZG93RGlkRW50ZXJGdWxsU2NyZWVuOl0pOgor
ICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIHdpbmRvd1dpbGxFeGl0RnVs
bFNjcmVlbjpdKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciB3aW5k
b3dEaWRFeGl0RnVsbFNjcmVlbjpdKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlciBjbGVhckZhZGVBbmltYXRpb25dKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlciB3aW5kb3dEaWRFeGl0RnVsbHNjcmVlbl0pOiBEZWxldGVk
LgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIHdpbmRvd0RpZEVudGVy
RnVsbHNjcmVlbl0pOiBEZWxldGVkLgorICAgICAgICAoZnJhbWVFeHBhbmRlZFRvUmF0aW9PZkZy
YW1lKTogRGVsZXRlZC4KKyAgICAgICAgKGNyZWF0ZUJhY2tncm91bmRGdWxsc2NyZWVuV2luZG93
KTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciBzZXR1
cEZhZGVBbmltYXRpb25JZk5lZWRlZEFuZEZhZGVJbjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1b
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciBhcHBsaWNhdGlvbkRpZENoYW5nZVNjcmVlblBh
cmFtZXRlcnM6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXIgdXBkYXRlTWVudUFuZERvY2tGb3JGdWxsc2NyZWVuXSk6IERlbGV0ZWQuCisgICAgICAg
ICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgcmVxdWVzdEV4aXRGdWxsc2NyZWVuV2l0
aEFuaW1hdGlvbjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlciByZXF1ZXN0RXhpdEZ1bGxzY3JlZW5dKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2Vi
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciBmYWRlSFVESW5dKTogRGVsZXRlZC4KKyAgICAgICAg
KC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciBvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOm9m
T2JqZWN0OmNoYW5nZTpjb250ZXh0Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyIHJhdGVDaGFuZ2VkOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtX
ZWJWaWRlb0Z1bGxzY3JlZW5XaW5kb3cgaW5pdFdpdGhDb250ZW50UmVjdDpzdHlsZU1hc2s6YmFj
a2luZzpkZWZlcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuV2lu
ZG93IGRlYWxsb2NdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuV2lu
ZG93IHJlc2lnbkZpcnN0UmVzcG9uZGVyXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlZpZGVv
RnVsbHNjcmVlbldpbmRvdyBjYW5CZWNvbWVLZXlXaW5kb3ddKTogRGVsZXRlZC4KKyAgICAgICAg
KC1bV2ViVmlkZW9GdWxsc2NyZWVuV2luZG93IG1vdXNlRG93bjpdKTogRGVsZXRlZC4KKyAgICAg
ICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuV2luZG93IGNhbmNlbE9wZXJhdGlvbjpdKTogRGVsZXRl
ZC4KKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuV2luZG93IGFuaW1hdGVkUmVzaXplRGlk
RW5kXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbldpbmRvdyBhbmlt
YXRlRnJvbVJlY3Q6dG9SZWN0OndpdGhTdWJBbmltYXRpb246Y29udHJvbGxlckFjdGlvbjpdKTog
RGVsZXRlZC4KKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuV2luZG93IGFuaW1hdGlvbkRp
ZEVuZDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuV2luZG93IG1v
dXNlTW92ZWQ6XSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViVmlldy9XZWJWaWRlb0Z1bGxzY3Jl
ZW5IVURXaW5kb3dDb250cm9sbGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogV2ViVmlldy9XZWJW
aWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1tOiBSZW1vdmVkLgorCiAyMDIwLTAy
LTEzICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIHJvbGxpbmcgb3V0IHIyNTUxNTgsIDI1NTQwNSBhbmQgcjI1NTQ4NgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDM4ZDdm
YTllNWQwOWMyY2Q5ZDhjNjA4ZWJhMzhlNzA1MDRhMzA5NmEuLmQyZTBjODIwOTEzZDU0YzYwMGQ4
ZjE0YTIwYWEzZThjNDA1NDUzODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTk1LDcgKzk1LDYgQEAKIAkJMEM3Nzg1OUMxRjQ1
MTMwRjAwRjRFQkI2IC8qIE5TVmlld1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEM3Nzg1ODMxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TVmlld1NQSS5o
ICovOyB9OwogCQkwQzc3ODU5RDFGNDUxMzBGMDBGNEVCQjYgLyogTlNXaW5kb3dTUEkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBDNzc4NTg0MUY0NTEz
MEYwMEY0RUJCNiAvKiBOU1dpbmRvd1NQSS5oICovOyB9OwogCQkwQzc3ODU5RTFGNDUxMzBGMDBG
NEVCQjYgLyogUElQU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwQzc3ODU4NTFGNDUxMzBGMDBGNEVCQjYgLyogUElQU1BJLmggKi87IH07Ci0JCTBD
Nzc4NTlGMUY0NTEzMEYwMEY0RUJCNiAvKiBRVEtpdFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEM3Nzg1ODYxRjQ1MTMwRjAwRjRFQkI2IC8qIFFU
S2l0U1BJLmggKi87IH07CiAJCTBDNzc4NUEwMUY0NTEzMEYwMEY0RUJCNiAvKiBRdWlja0xvb2tN
YWNTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBD
Nzc4NTg3MUY0NTEzMEYwMEY0RUJCNiAvKiBRdWlja0xvb2tNYWNTUEkuaCAqLzsgfTsKIAkJMEM3
Nzg1QTExRjQ1MTMwRjAwRjRFQkI2IC8qIFRlbGVwaG9ueVV0aWxpdGllc1NQSS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEM3Nzg1ODgxRjQ1MTMwRjAw
RjRFQkI2IC8qIFRlbGVwaG9ueVV0aWxpdGllc1NQSS5oICovOyB9OwogCQkwQ0Y5OUNBNDFGNzM2
Mzc1MDA3RUU3OTMgLyogTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBDMDBDRkQxMUY2OENFNDYwMEFBQzI2RCAv
KiBNZWRpYVRpbWVBVkZvdW5kYXRpb24uY3BwICovOyB9OwpAQCAtMjYzLDcgKzI2Miw2IEBACiAJ
CTBDNzc4NTgzMUY0NTEzMEYwMEY0RUJCNiAvKiBOU1ZpZXdTUEkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTlNWaWV3U1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBDNzc4NTg0MUY0NTEzMEYwMEY0RUJCNiAvKiBOU1dpbmRvd1NQSS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBOU1dpbmRvd1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwQzc3ODU4NTFGNDUxMzBGMDBGNEVCQjYgLyogUElQU1BJLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBJUFNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQkwQzc3ODU4NjFGNDUxMzBGMDBGNEVCQjYgLyogUVRLaXRTUEkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUVRLaXRTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEM3Nzg1ODcxRjQ1MTMwRjAwRjRFQkI2IC8qIFF1aWNrTG9va01hY1NQSS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdWlja0xvb2tNYWNTUEkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEM3Nzg1ODgxRjQ1MTMwRjAwRjRFQkI2IC8qIFRlbGVw
aG9ueVV0aWxpdGllc1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZWxl
cGhvbnlVdGlsaXRpZXNTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMENGOTlD
QTYxRjczODQzNjAwN0VFNzkzIC8qIENvcmVNZWRpYVNvZnRMaW5rLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvcmVNZWRpYVNvZnRMaW5rLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUxMCw3ICs1MDgsNiBAQAogCQkJCTBDNzc4NTgzMUY0NTEz
MEYwMEY0RUJCNiAvKiBOU1ZpZXdTUEkuaCAqLywKIAkJCQkwQzc3ODU4NDFGNDUxMzBGMDBGNEVC
QjYgLyogTlNXaW5kb3dTUEkuaCAqLywKIAkJCQkwQzc3ODU4NTFGNDUxMzBGMDBGNEVCQjYgLyog
UElQU1BJLmggKi8sCi0JCQkJMEM3Nzg1ODYxRjQ1MTMwRjAwRjRFQkI2IC8qIFFUS2l0U1BJLmgg
Ki8sCiAJCQkJMEM3Nzg1ODcxRjQ1MTMwRjAwRjRFQkI2IC8qIFF1aWNrTG9va01hY1NQSS5oICov
LAogCQkJCUExMTc1QjQ4MUY2QUZGOEUwMEM0QjlGMCAvKiBTcGVlY2hTeW50aGVzaXNTUEkuaCAq
LywKIAkJCQkwQzc3ODU4ODFGNDUxMzBGMDBGNEVCQjYgLyogVGVsZXBob255VXRpbGl0aWVzU1BJ
LmggKi8sCkBAIC04MTMsNyArODEwLDYgQEAKIAkJCQkwQzc3ODU5RTFGNDUxMzBGMDBGNEVCQjYg
LyogUElQU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTE3NUI0RTFGNkIzMzczMDBDNEI5RjAg
LyogUG9wdXBNZW51LmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzJEQTE1NjFGM0JFQjQ5MDBEQkMz
MTcgLyogcHRocmVhZFNQSS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEM3Nzg1OUYxRjQ1MTMwRjAw
RjRFQkI2IC8qIFFUS2l0U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzJEQTE1NzFGM0JFQjQ5
MDBEQkMzMTcgLyogUXVhcnR6Q29yZVNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEM3Nzg1QTAx
RjQ1MTMwRjAwRjRFQkI2IC8qIFF1aWNrTG9va01hY1NQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDQ1MEZDQTAyMUY1RjYwMjAwNERGQTU2IC8qIFF1aWNrTG9va1NvZnRMaW5rLmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0FWS2l0
U1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9BVktpdFNQSS5oCmluZGV4
IDA5NDY5OGExYmVmMzMyYWMwMGEzOWEyMjEzYzczODcxMDQ4ZjVkN2MuLjE1YmExMzg1Mjk3MWMx
NWVlNDM0OGQ5NDM3OWY0NGYxMTdhNjA4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvc3BpL2NvY29hL0FWS2l0U1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9z
cGkvY29jb2EvQVZLaXRTUEkuaApAQCAtMjYsNiArMjYsMzQgQEAKICNpbXBvcnQgPG9iamMvcnVu
dGltZS5oPgogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CiAKKyNpZiBVU0UoQVBQTEVfSU5U
RVJOQUxfU0RLKQorI2ltcG9ydCA8QVZLaXQvQVZQbGF5ZXJDb250cm9sbGVyLmg+CisjZWxzZQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisjaW1wb3J0IDxVSUtpdC9VSVJlc3BvbmRlci5oPgor
QGludGVyZmFjZSBBVlBsYXllckNvbnRyb2xsZXIgOiBVSVJlc3BvbmRlcgorI2Vsc2UKKyNpbXBv
cnQgPEFwcEtpdC9OU1Jlc3BvbmRlci5oPgorQGludGVyZmFjZSBBVlBsYXllckNvbnRyb2xsZXIg
OiBOU1Jlc3BvbmRlciA8TlNVc2VySW50ZXJmYWNlVmFsaWRhdGlvbnM+CisjZW5kaWYKK0BlbmQK
KworQGludGVyZmFjZSBBVlBsYXllckNvbnRyb2xsZXIgKCkKK3R5cGVkZWYgTlNfRU5VTShOU0lu
dGVnZXIsIEFWUGxheWVyQ29udHJvbGxlclN0YXR1cykgeworICAgIEFWUGxheWVyQ29udHJvbGxl
clN0YXR1c1Vua25vd24gPSAwLAorICAgIEFWUGxheWVyQ29udHJvbGxlclN0YXR1c1JlYWR5VG9Q
bGF5ID0gMiwKK307CisKK3R5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIEFWUGxheWVyQ29udHJv
bGxlckV4dGVybmFsUGxheWJhY2tUeXBlKSB7CisgICAgQVZQbGF5ZXJDb250cm9sbGVyRXh0ZXJu
YWxQbGF5YmFja1R5cGVOb25lID0gMCwKKyAgICBBVlBsYXllckNvbnRyb2xsZXJFeHRlcm5hbFBs
YXliYWNrVHlwZUFpclBsYXkgPSAxLAorICAgIEFWUGxheWVyQ29udHJvbGxlckV4dGVybmFsUGxh
eWJhY2tUeXBlVFZPdXQgPSAyLAorfTsKKworQHByb3BlcnR5IChOU19OT05BVE9NSUNfSU9TT05M
WSwgcmVhZG9ubHkpIEFWUGxheWVyQ29udHJvbGxlclN0YXR1cyBzdGF0dXM7CitAZW5kCisjZW5k
aWYgLy8gVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAjaW1wb3J0IDxBVktpdC9BVktpdC5oPgogI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3Jl
Lmg+CkBAIC0zNyw3ICs2NSw2IEBACiAjaW1wb3J0IDxBVktpdC9BVkJhY2tncm91bmRWaWV3Lmg+
CiAjZW5kaWYKIAotI2ltcG9ydCA8QVZLaXQvQVZQbGF5ZXJDb250cm9sbGVyLmg+CiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oIm9iamMtcHJvcGVydHktbm8tYXR0cmlidXRlIikKICNpbXBvcnQgPEFW
S2l0L0FWUGxheWVyTGF5ZXJWaWV3Lmg+CiBJR05PUkVfV0FSTklOR1NfRU5ECkBAIC0xMTUsMjQg
KzE0Miw2IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIEFWQmFja2dyb3VuZFZpZXdUaW50
RWZmZWN0U3R5bGUpIHsKIC0gKHZvaWQpYWRkU3VidmlldzooVUlWaWV3ICopc3VidmlldyBhcHBs
eWluZ01hdGVyaWFsU3R5bGU6KEFWQmFja2dyb3VuZFZpZXdNYXRlcmlhbFN0eWxlKW1hdGVyaWFs
U3R5bGUgdGludEVmZmVjdFN0eWxlOihBVkJhY2tncm91bmRWaWV3VGludEVmZmVjdFN0eWxlKXRp
bnRFZmZlY3RTdHlsZTsKIEBlbmQKIAotQGludGVyZmFjZSBBVlBsYXllckNvbnRyb2xsZXIgOiBV
SVJlc3BvbmRlcgotQGVuZAotCi1AaW50ZXJmYWNlIEFWUGxheWVyQ29udHJvbGxlciAoKQotdHlw
ZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgQVZQbGF5ZXJDb250cm9sbGVyU3RhdHVzKSB7Ci0gICAg
QVZQbGF5ZXJDb250cm9sbGVyU3RhdHVzVW5rbm93biA9IDAsCi0gICAgQVZQbGF5ZXJDb250cm9s
bGVyU3RhdHVzUmVhZHlUb1BsYXkgPSAyLAotfTsKLQotdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdl
ciwgQVZQbGF5ZXJDb250cm9sbGVyRXh0ZXJuYWxQbGF5YmFja1R5cGUpIHsKLSAgICBBVlBsYXll
ckNvbnRyb2xsZXJFeHRlcm5hbFBsYXliYWNrVHlwZU5vbmUgPSAwLAotICAgIEFWUGxheWVyQ29u
dHJvbGxlckV4dGVybmFsUGxheWJhY2tUeXBlQWlyUGxheSA9IDEsCi0gICAgQVZQbGF5ZXJDb250
cm9sbGVyRXh0ZXJuYWxQbGF5YmFja1R5cGVUVk91dCA9IDIsCi19OwotCi1AcHJvcGVydHkgKE5T
X05PTkFUT01JQ19JT1NPTkxZLCByZWFkb25seSkgQVZQbGF5ZXJDb250cm9sbGVyU3RhdHVzIHN0
YXR1czsKLUBlbmQKLQogQGNsYXNzIEFWUGxheWVyTGF5ZXI7CiAKIEBpbnRlcmZhY2UgQVZQaWN0
dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3IDogVUlWaWV3CkBAIC0xNzgsNiArMTg3LDI2IEBA
IE5TX0FTU1VNRV9OT05OVUxMX0VORAogI2VuZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5BTF9TREsp
CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAorI2lmIFBMQVRGT1JNKE1BQykKKyNp
ZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorI2ltcG9ydCA8QVZLaXQvQVZQbGF5ZXJWaWV3X1By
aXZhdGUuaD4KKyNlbHNlCisjaW1wb3J0IDxBVktpdC9BVlBsYXllclZpZXcuaD4KKworTlNfQVNT
VU1FX05PTk5VTExfQkVHSU4KKworQGludGVyZmFjZSBBVlBsYXllclZpZXcgKFdlYktpdEZ1bGxz
Y3JlZW5TUEkpCitAcHJvcGVydHkgQVZQbGF5ZXJDb250cm9sbGVyICpwbGF5ZXJDb250cm9sbGVy
OworQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBpc0Z1bGxTY3JlZW47CistICh2b2lkKWVudGVy
RnVsbFNjcmVlbjooaWQpc2VuZGVyOworLSAodm9pZClleGl0RnVsbFNjcmVlbjooaWQpc2VuZGVy
OworQGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKKworI2VuZGlmIC8vIFVTRShBUFBMRV9J
TlRFUk5BTF9TREspCisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQorCiAjaWYgRU5BQkxFKFdJUkVM
RVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpZiBVU0Uo
QVBQTEVfSU5URVJOQUxfU0RLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9z
cGkvbWFjL05TV2luZG93U1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMvTlNX
aW5kb3dTUEkuaAppbmRleCAwOGFmOTVhMDQ0YWQ2OTkwNDIwNjIxN2E0YzRhNzUwMDMwOWE0YTEz
Li5jNTY5NDI0YWM5ZmJkNGY0YmExZGFlMjk3NjZmMWQwYjY0MGEwZTdjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMvTlNXaW5kb3dTUEkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMvTlNXaW5kb3dTUEkuaApAQCAtNDAsNyArNDAsOCBAQAog
LSAoaWQpX29sZEZpcnN0UmVzcG9uZGVyQmVmb3JlQmVjb21pbmc7CiAtIChpZClfbmV3Rmlyc3RS
ZXNwb25kZXJBZnRlclJlc2lnbmluZzsKIC0gKHZvaWQpX3NldEN1cnNvckZvck1vdXNlTG9jYXRp
b246KE5TUG9pbnQpcG9pbnQ7Ci0KKy0gKHZvaWQpZXhpdEZ1bGxTY3JlZW5Nb2RlOihpZClzZW5k
ZXI7CistICh2b2lkKWVudGVyRnVsbFNjcmVlbk1vZGU6KGlkKXNlbmRlcjsKIEBlbmQKIAogZW51
bSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMvUVRLaXRTUEku
aCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9RVEtpdFNQSS5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwNGJiMjQ5NjI3MDg1NzI5ZjE1YmExNGI0MjhhNGU3MGYyZjZi
YmM0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9RVEtpdFNQSS5oCisrKyAvZGV2L251bGwKQEAgLTEs
MTUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgVVNFKEFQ
UExFX0lOVEVSTkFMX1NESykKLQotI2ltcG9ydCA8UVRLaXQvUVRIVURCYWNrZ3JvdW5kVmlld19Q
cml2YXRlLmg+Ci0jaW1wb3J0IDxRVEtpdC9RVEtpdF9Qcml2YXRlLmg+Ci0jaW1wb3J0IDxRVEtp
dC9RVFV0aWxpdGllc19Qcml2YXRlLmg+Ci0KLSNlbHNlCi0KLWVudW0gewotICAgIGtRVFRpbWVJ
c0luZGVmaW5pdGUgPSAxIDw8IDAKLX07Ci0KLXR5cGVkZWYgc3RydWN0IHsKLSAgICBsb25nIGxv
bmcgdGltZVZhbHVlOwotICAgIGxvbmcgdGltZVNjYWxlOwotICAgIGxvbmcgZmxhZ3M7Ci19IFFU
VGltZTsKLQotdHlwZWRlZiBzdHJ1Y3QgewotICAgIFFUVGltZSB0aW1lOwotICAgIFFUVGltZSBk
dXJhdGlvbjsKLX0gUVRUaW1lUmFuZ2U7Ci0KLXR5cGVkZWYgZW51bSB7Ci0gICAgUVRJbmNsdWRl
Q29tbW9uVHlwZXMgPSAwLAotICAgIFFUSW5jbHVkZU9ubHlGaWdNZWRpYUZpbGVUeXBlcyA9IDEg
PDwgOCwKLX0gUVRNb3ZpZUZpbGVUeXBlT3B0aW9uczsKLQotZW51bSB7Ci0gICAgUVRNb3ZpZVR5
cGVVbmtub3duID0gMCwKLSAgICBRVE1vdmllVHlwZUxvY2FsLAotICAgIFFUTW92aWVUeXBlRmFz
dFN0YXJ0LAotICAgIFFUTW92aWVUeXBlTGl2ZVN0cmVhbSwKLSAgICBRVE1vdmllVHlwZVN0b3Jl
ZFN0cmVhbQotfTsKLQotQGNsYXNzIFFUVHJhY2s7Ci0KLUBpbnRlcmZhY2UgUVRNZWRpYSA6IE5T
T2JqZWN0Ci0KLS0gKGlkKWF0dHJpYnV0ZUZvcktleTooTlNTdHJpbmcgKilhdHRyaWJ1dGVLZXk7
Ci0KLUBlbmQKLQotQGludGVyZmFjZSBRVE1vdmllIDogTlNPYmplY3QgPE5TQ29kaW5nLCBOU0Nv
cHlpbmc+Ci0KLSsgKE5TQXJyYXkgKiltb3ZpZUZpbGVUeXBlczooUVRNb3ZpZUZpbGVUeXBlT3B0
aW9ucyl0eXBlczsKLQotKyAodm9pZClkaXNhYmxlQ29tcG9uZW50OihDb21wb25lbnREZXNjcmlw
dGlvbiljb21wb25lbnQ7Ci0KLS0gKGlkKWluaXRXaXRoQXR0cmlidXRlczooTlNEaWN0aW9uYXJ5
ICopYXR0cmlidXRlcyBlcnJvcjooTlNFcnJvciAqKillcnJvclB0cjsKLQotLSAodm9pZClwbGF5
OwotLSAodm9pZClzdG9wOwotCi0tIChRVFRpbWUpZHVyYXRpb247Ci0KLS0gKFFUVGltZSljdXJy
ZW50VGltZTsKLS0gKHZvaWQpc2V0Q3VycmVudFRpbWU6KFFUVGltZSl0aW1lOwotCi0tIChmbG9h
dClyYXRlOwotLSAodm9pZClzZXRSYXRlOihmbG9hdClyYXRlOwotCi0tIChmbG9hdCl2b2x1bWU7
Ci0tICh2b2lkKXNldFZvbHVtZTooZmxvYXQpdm9sdW1lOwotCi0tIChOU0RpY3Rpb25hcnkgKilt
b3ZpZUF0dHJpYnV0ZXM7Ci0KLS0gKGlkKWF0dHJpYnV0ZUZvcktleTooTlNTdHJpbmcgKilhdHRy
aWJ1dGVLZXk7Ci0tICh2b2lkKXNldEF0dHJpYnV0ZTooaWQpdmFsdWUgZm9yS2V5OihOU1N0cmlu
ZyAqKWF0dHJpYnV0ZUtleTsKLQotLSAoTlNBcnJheSAqKXRyYWNrczsKLQotLSAoTlNBcnJheSAq
KWFsdGVybmF0ZUdyb3VwVHlwZXM7Ci0tIChOU0FycmF5ICopYWx0ZXJuYXRlc0Zvck1lZGlhVHlw
ZTooTlNTdHJpbmcgKil0eXBlOwotLSAodm9pZClkZXNlbGVjdEFsdGVybmF0ZUdyb3VwVHJhY2s6
KFFUVHJhY2sgKilhbHRlcm5hdGVUcmFjazsKLS0gKHZvaWQpc2VsZWN0QWx0ZXJuYXRlR3JvdXBU
cmFjazooUVRUcmFjayAqKWFsdGVybmF0ZVRyYWNrOwotCi0tIChOU1VSTCAqKVVSTDsKLS0gKFVJ
bnQzMiltb3ZpZVR5cGU7Ci0KLUBlbmQKLQotQGludGVyZmFjZSBRVE1vdmllTGF5ZXIgOiBDQUxh
eWVyCi0KLS0gKHZvaWQpc2V0TW92aWU6KFFUTW92aWUgKiltb3ZpZTsKLS0gKFFUTW92aWUgKilt
b3ZpZTsKLQotQGVuZAotCi1AaW50ZXJmYWNlIE5TVmFsdWUgKE5TVmFsdWVRVFRpbWVSYW5nZUV4
dGVuc2lvbnMpCi0rIChOU1ZhbHVlICopdmFsdWVXaXRoUVRUaW1lUmFuZ2U6KFFUVGltZVJhbmdl
KXJhbmdlOwotLSAoUVRUaW1lUmFuZ2UpUVRUaW1lUmFuZ2VWYWx1ZTsKLUBlbmQKLQotQGludGVy
ZmFjZSBRVFRyYWNrIDogTlNPYmplY3QKLQotLSAoUVRNZWRpYSAqKW1lZGlhOwotCi0tIChCT09M
KWlzRW5hYmxlZDsKLS0gKHZvaWQpc2V0RW5hYmxlZDooQk9PTCllbmFibGVkOwotCi0tIChpZClh
dHRyaWJ1dGVGb3JLZXk6KE5TU3RyaW5nICopYXR0cmlidXRlS2V5OwotCi1AZW5kCi0KLUBpbnRl
cmZhY2UgUVRIVURCYWNrZ3JvdW5kVmlldyA6IE5TVmlldwotCi0tICh2b2lkKXNldENvbnRlbnRC
b3JkZXJQb3NpdGlvbjooQ0dGbG9hdCljb250ZW50Qm9yZGVyUG9zaXRpb247Ci0KLUBlbmQKLQot
QGludGVyZmFjZSBRVFV0aWxpdGllcyA6IE5TT2JqZWN0Ci0KLSsgKGlkKXF0VXRpbGl0aWVzOwot
Ci0tIChOU0FycmF5ICopc2l0ZXNJbkRvd25sb2FkQ2FjaGU7Ci0tICh2b2lkKWNsZWFyRG93bmxv
YWRDYWNoZTsKLS0gKHZvaWQpY2xlYXJEb3dubG9hZENhY2hlRm9yU2l0ZTooTlNTdHJpbmcgKilz
aXRlOwotCi1AZW5kCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAKaW5kZXggYTczYmMwYjRjMmZlZWIzMTNkZmU3NzVjODhkOGVhOWQwOTlhMGJmNS4uMjU0
MjlkNDZiMWFlNjliOGEwN2VhNTk0YmExMDcxZTdhYjRiYzY0YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC01Nzg5LDcgKzU3ODksNyBAQCB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6Om1lZGlhVm9sdW1lRGlkQ2hhbmdlKCkKIAogdm9pZCBIVE1MTWVkaWFFbGVt
ZW50Ojp2aXNpYmlsaXR5U3RhdGVDaGFuZ2VkKCkKIHsKLSAgICBib29sIGVsZW1lbnRJc0hpZGRl
biA9IGRvY3VtZW50KCkuaGlkZGVuKCkgJiYgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlICE9IFZpZGVv
RnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJlOworICAgIGJvb2wgZWxlbWVudElzSGlkZGVu
ID0gZG9jdW1lbnQoKS5oaWRkZW4oKSAmJiBtX3ZpZGVvRnVsbHNjcmVlbk1vZGUgPT0gVmlkZW9G
dWxsc2NyZWVuTW9kZU5vbmU7CiAgICAgaWYgKGVsZW1lbnRJc0hpZGRlbiA9PSBtX2VsZW1lbnRJ
c0hpZGRlbikKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5oCmluZGV4IDU1MjJmOGNlNTJhMDM5NzcwODZlYmQ2MDM5NGI2YjlhODEyZTU4NWIuLmM4
OGI1NzNjNTM4Njg5MDQxOGZjMzAzMDRlOGI5ZGIyODY0ODhkZDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC0xODEsNyArMTgxLDcgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0UHJlcGFyZWRUb1JldHVyblZpZGVvTGF5ZXJUb0lubGluZShib29sKTsKICAgICB2b2lk
IHdhaXRGb3JQcmVwYXJlZEZvcklubGluZVRoZW4oV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIgPSBbXSB7IH0pOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQ
TEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCi0gICAgdm9p
ZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiwgV1RGOjpGdW5jdGlvbjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIgPSBbXSB7IH0pOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciosIFdURjo6RnVuY3Rp
b248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyID0gW10geyB9KTsKICNpZmRlZiBfX09CSkNf
XwogICAgIFBsYXRmb3JtTGF5ZXIqIHZpZGVvRnVsbHNjcmVlbkxheWVyKCkgY29uc3QgeyByZXR1
cm4gbV92aWRlb0Z1bGxzY3JlZW5MYXllci5nZXQoKTsgfQogI2VuZGlmCkBAIC00NDYsNyArNDQ2
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBmdWxsc2NyZWVuTW9kZUNoYW5nZWQoVmlk
ZW9GdWxsc2NyZWVuTW9kZSk7CiAKICAgICB2b2lkIGVudGVyRnVsbHNjcmVlbihWaWRlb0Z1bGxz
Y3JlZW5Nb2RlKTsKLSAgICB2b2lkIGVudGVyRnVsbHNjcmVlbigpIG92ZXJyaWRlOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZW50ZXJGdWxsc2NyZWVuKCkgb3ZlcnJpZGU7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBleGl0RnVsbHNjcmVlbigpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0VmlkZW9GdWxsc2NyZWVuU3RhbmRieShib29sKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1BsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQuaApp
bmRleCA3ZGVlMTUyN2VmMjM5NWY5ZTZiY2UwY2NjYmViYmRlNzRkNmRlNzRkLi4wZjlkMTIzYjcx
YTBiODlmMDM1ZWMyYzAzOTU3OThmNGMwN2I0OGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQuaApA
QCAtMjYsNyArMjYsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCisjaWYgSEFWRShBVktJVCkKIAogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKICNpbmNs
dWRlICJIVE1MTWVkaWFFbGVtZW50RW51bXMuaCIKQEAgLTQxLDEwICs0MSw2IEBACiAjaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgogCiBPQkpDX0NMQVNTIFdlYkFWUGxheWVyQ29udHJvbGxlcjsK
LU9CSkNfQ0xBU1MgQVZQbGF5ZXJWaWV3Q29udHJvbGxlcjsKLU9CSkNfQ0xBU1MgVUlWaWV3Q29u
dHJvbGxlcjsKLU9CSkNfQ0xBU1MgVUlXaW5kb3c7Ci1PQkpDX0NMQVNTIFVJVmlldzsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSW50UmVjdDsKQEAgLTkyLDUgKzg4LDQgQEAgcHJvdGVj
dGVkOgogCiB9CiAKLSNlbmRpZgotCisjZW5kaWYgLy8gSEFWRShBVktJVCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktp
dC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VBVktpdC5tbQppbmRleCBmY2FiMjZmYmI3MmRlYjk4OTNkMjVlMmZjZGJiOWExZDE1OTczY2Jl
Li45ZjI3NmVhOWJjYjhhNDdmODAwMTYzNTE5Y2UwNzFiOWY0OTAwMmRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZUFWS2l0Lm1tCkBAIC0yNyw3ICsyNyw2IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBv
cnQgIlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0LmgiCiAKLSNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogI2lmIEhBVkUoQVZLSVQpCiAKICNpbXBvcnQgIkxvZ2dpbmcuaCIKQEAgLTE4NSw5
ICsxODQsOSBAQCB2b2lkIFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpsZWdpYmxlTWVk
aWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb25zdCBWZQogdm9pZCBQbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2VBVktpdDo6ZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQoYm9vbCBlbmFibGVkLCBQbGF5
YmFja1Nlc3Npb25Nb2RlbDo6RXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUgdGFyZ2V0VHlwZSwg
Y29uc3QgU3RyaW5nJiBsb2NhbGl6ZWREZXZpY2VOYW1lKQogewogICAgIEFWUGxheWVyQ29udHJv
bGxlckV4dGVybmFsUGxheWJhY2tUeXBlIGV4dGVybmFsUGxheWJhY2tUeXBlID0gQVZQbGF5ZXJD
b250cm9sbGVyRXh0ZXJuYWxQbGF5YmFja1R5cGVOb25lOwotICAgIGlmICh0YXJnZXRUeXBlID09
IFBsYXliYWNrU2Vzc2lvbk1vZGVsOjpUYXJnZXRUeXBlQWlyUGxheSkKKyAgICBpZiAoZW5hYmxl
ZCAmJiB0YXJnZXRUeXBlID09IFBsYXliYWNrU2Vzc2lvbk1vZGVsOjpUYXJnZXRUeXBlQWlyUGxh
eSkKICAgICAgICAgZXh0ZXJuYWxQbGF5YmFja1R5cGUgPSBBVlBsYXllckNvbnRyb2xsZXJFeHRl
cm5hbFBsYXliYWNrVHlwZUFpclBsYXk7Ci0gICAgZWxzZSBpZiAodGFyZ2V0VHlwZSA9PSBQbGF5
YmFja1Nlc3Npb25Nb2RlbDo6VGFyZ2V0VHlwZVRWT3V0KQorICAgIGVsc2UgaWYgKGVuYWJsZWQg
JiYgdGFyZ2V0VHlwZSA9PSBQbGF5YmFja1Nlc3Npb25Nb2RlbDo6VGFyZ2V0VHlwZVRWT3V0KQog
ICAgICAgICBleHRlcm5hbFBsYXliYWNrVHlwZSA9IEFWUGxheWVyQ29udHJvbGxlckV4dGVybmFs
UGxheWJhY2tUeXBlVFZPdXQ7CiAKICAgICBXZWJBVlBsYXllckNvbnRyb2xsZXIqIHBsYXllckNv
bnRyb2xsZXIgPSBtX3BsYXllckNvbnRyb2xsZXIuZ2V0KCk7CkBAIC0yMzEsNCArMjMwLDMgQEAg
dm9pZCBQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6bW9kZWxEZXN0cm95ZWQoKQogfQog
CiAjZW5kaWYgLy8gSEFWRShBVktJVCkKLSNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkFWUGxheWVyQ29udHJv
bGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkFWUGxheWVyQ29udHJvbGxl
ci5oCmluZGV4IGE2MzlhOTgxZmZjMGIwNjJkYTYzMGM4MWJlYTRiZGRiZjJmNjM2YTEuLjg5NDBk
MDJjMzkwMzZhMzMwNDk2NjdkZWQzMThlYjk2Zjc1ZDEyMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJBVlBsYXllckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQVZQbGF5ZXJDb250cm9sbGVyLmgKQEAgLTIzLDcgKzIz
LDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYm
IEhBVkUoQVZLSVQpCisjaWYgSEFWRShBVktJVCkKIAogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9B
VktpdFNQSS5oPgogCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIFBsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZUFWS2l0OwogQHByb3BlcnR5IChyZXRhaW4pIE5TU3RyaW5nICpsb2NhbGl6ZWREaXNwbGF5
TmFtZTsKIEBlbmQKIAotQGludGVyZmFjZSBXZWJBVlBsYXllckNvbnRyb2xsZXIgOiBOU09iamVj
dCB7CitXRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNlIFdlYkFWUGxheWVyQ29udHJvbGxlciA6IE5T
T2JqZWN0IHsKICAgICBXZWJBVk1lZGlhU2VsZWN0aW9uT3B0aW9uICpfY3VycmVudEF1ZGlvTWVk
aWFTZWxlY3Rpb25PcHRpb247CiAgICAgV2ViQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqX2N1cnJl
bnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb247CiAgICAgQk9PTCBfcGljdHVyZUluUGljdHVy
ZUludGVycnVwdGVkOwpAQCAtNTIsNiArNTIsOSBAQCBjbGFzcyBQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2VBVktpdDsKIEBwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgY2FuU2Vla1RvQmVnaW5uaW5n
OwogQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBjYW5TZWVrVG9FbmQ7CiBAcHJvcGVydHkgKHJl
YWRvbmx5KSBCT09MIGlzU2NydWJiaW5nOworQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBjYW5T
ZWVrRnJhbWVCYWNrd2FyZDsKK0Bwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgY2FuU2Vla0ZyYW1l
Rm9yd2FyZDsKK0Bwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgaGFzQ29udGVudENoYXB0ZXJzOwog
CiBAcHJvcGVydHkgQk9PTCBjYW5QbGF5OwogQHByb3BlcnR5IChnZXR0ZXI9aXNQbGF5aW5nKSBC
T09MIHBsYXlpbmc7CkBAIC0xMDAsNCArMTAzLDMgQEAgY2xhc3MgUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlQVZLaXQ7CiBAZW5kCiAKICNlbmRpZgotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvV2ViQVZQbGF5ZXJDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1dlYkFWUGxheWVyQ29udHJvbGxlci5tbQppbmRleCBkNTliYTg3ODc3ZWM0
YzhhOGM2NmMxODBiMWU3NWNhYjE5ZDQ0NGRhLi4yMjk3NzVjNmNiNTA1M2I5YTU0ZTNjMDljNGJj
Y2Y1M2NhOTc4ZGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2Vi
QVZQbGF5ZXJDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9X
ZWJBVlBsYXllckNvbnRyb2xsZXIubW0KQEAgLTI3LDcgKzI3LDcgQEAKICNpbXBvcnQgImNvbmZp
Zy5oIgogI2ltcG9ydCAiV2ViQVZQbGF5ZXJDb250cm9sbGVyLmgiCiAKLSNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKSAmJiBIQVZFKEFWS0lUKQorI2lmIEhBVkUoQVZLSVQpCiAKICNpbXBvcnQgIkxv
Z2dpbmcuaCIKICNpbXBvcnQgIlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0LmgiCkBAIC0z
OTcsNiArMzk3LDE2IEBAIC0gKHZvaWQpc2Vla0NoYXB0ZXJGb3J3YXJkOihpZClzZW5kZXIKICAg
ICBbc2VsZiBzZWVrVG9FbmQ6c2VuZGVyXTsKIH0KIAorLSAoQk9PTCljYW5TZWVrRnJhbWVCYWNr
d2FyZAoreworICAgIHJldHVybiBZRVM7Cit9CisKKy0gKEJPT0wpY2FuU2Vla0ZyYW1lRm9yd2Fy
ZAoreworICAgIHJldHVybiBZRVM7Cit9CisKIC0gKEJPT0wpaGFzTWVkaWFTZWxlY3Rpb25PcHRp
b25zCiB7CiAgICAgcmV0dXJuIFtzZWxmIGhhc0F1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zXSB8
fCBbc2VsZiBoYXNMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zXTsKQEAgLTY1MCw1ICs2NjAs
NSBAQCAtICh2b2lkKWRlYWxsb2MKIAogQGVuZAogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZB
TUlMWSkKKyNlbmRpZiAvLyBIQVZFKEFWS0lUKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9XZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5oCmluZGV4IDIxMWNjZWExZTRk
NDM1NmE1OTA3MDE2N2FlZGRmOTBjMmM1MDA4NTAuLjYyOTdiMGRiZjc4ZDZiYjIxYTQ0YjUyMjNh
Y2I1Njc4MzRkOGQ1ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9X
ZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9XZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5oCkBAIC0yMywxNCArMjMsMTEgQEAKICAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYkNvcmVGdWxsU2Ny
ZWVuV2luZG93X2gKLSNkZWZpbmUgV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3dfaAorI3ByYWdtYSBv
bmNlCiAKLSNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpICYmICFQTEFURk9STShJT1NfRkFNSUxZ
KQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogCiBXRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNl
IFdlYkNvcmVGdWxsU2NyZWVuV2luZG93IDogTlNXaW5kb3cKIEBlbmQKIAotI2VuZGlmIC8vIEVO
QUJMRShGVUxMU0NSRUVOX0FQSSkKLQotI2VuZGlmIC8vIFdlYkNvcmVGdWxsU2NyZWVuV2luZG93
X2gKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVGdWxsU2NyZWVuV2luZG93Lm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVGdWxsU2NyZWVuV2luZG93Lm1tCmluZGV4IGFhNjhl
MDEzZmI0YzgyMDIxMmI3MGI0ZDBhMGRiMDgyNjkyMzk4ODIuLjM1MzI1NTlkOTIyNzAzZWY3ZTMy
MTA5M2I0NzVhOTk0NGIwMDljMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9XZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cubW0KQEAgLTI1LDcgKzI1LDcgQEAKIAog
I2ltcG9ydCAiY29uZmlnLmgiCiAKLSNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpICYmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJX
ZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5oIgogCkBAIC0xMDEsNCArMTAxLDQgQEAgLSAodm9pZClz
ZXRTdHlsZU1hc2s6KE5TVUludGVnZXIpc3R5bGVNYXNrCiB9CiBAZW5kCiAKLSNlbmRpZiAvLyBF
TkFCTEUoRlVMTFNDUkVFTl9BUEkpCisjZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYktpdExlZ2FjeS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJLaXRMZWdhY3kueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCBkMzllNzM2YTc3ZDY2OTJiODIzMTMxYzRmZTVlM2UzOTI2
MTVhYjMzLi5jODQ3NTUzYzE0YzJhMDJhZjE4Yjc2MTM5ZmIzZTg5NDE3NDhkOGQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYktpdExlZ2FjeS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViS2l0TGVnYWN5Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTY2NCw3ICs2NjQsNiBAQAogCQlDMTFFQkY0MTIxNDE5Q0NFMDBE
NjU5RTcgLyogV2ViU3dpdGNoaW5nR1BVQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxMUVCRjNGMjE0MTlDQ0UwMEQ2NTlFNyAvKiBXZWJT
d2l0Y2hpbmdHUFVDbGllbnQuY3BwICovOyB9OwogCQlDMTFFQkY0MjIxNDE5Q0NFMDBENjU5RTcg
LyogV2ViU3dpdGNoaW5nR1BVQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDMTFFQkY0MDIxNDE5Q0NFMDBENjU5RTcgLyogV2ViU3dpdGNoaW5n
R1BVQ2xpZW50LmggKi87IH07CiAJCUMxRDgxMTI4MjAyQ0Q4MDAwMEVFNzRGOSAvKiBXZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQzFEODExMjcyMDJDRDgwMDAwRUU3NEY5IC8qIFdlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXIubW0gKi87IH07Ci0JCUMxRDgxMTJCMjAyQ0RDQzQwMEVFNzRGOSAvKiBX
ZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzFEODExMjkyMDJDRENDMjAwRUU3NEY5IC8q
IFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW0gKi87IH07CiAJCUMxRDgx
MTJFMjAyQ0VEMDgwMEVFNzRGOSAvKiBXZWJXaW5kb3dBbmltYXRpb24ubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMUQ4MTEyRDIwMkNFRDA3MDBFRTc0
RjkgLyogV2ViV2luZG93QW5pbWF0aW9uLm1tICovOyB9OwogCQlDRDhCRkNFNzE1NTMxMjI0MDA1
QUZCMjUgLyogV2ViS2l0RnVsbFNjcmVlbkxpc3RlbmVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q4QkZDRTUxNTUzMTIyNDAwNUFGQjI1IC8qIFdl
YktpdEZ1bGxTY3JlZW5MaXN0ZW5lci5tbSAqLzsgfTsKIAkJQ0Q4QkZDRTgxNTUzMTIyNDAwNUFG
QjI1IC8qIFdlYktpdEZ1bGxTY3JlZW5MaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q4QkZDRTYxNTUzMTIyNDAwNUFGQjI1IC8qIFdlYktp
dEZ1bGxTY3JlZW5MaXN0ZW5lci5oICovOyB9OwpAQCAtMTQ5NSw4ICsxNDk0LDYgQEAKIAkJQzEx
RUJGNDAyMTQxOUNDRTAwRDY1OUU3IC8qIFdlYlN3aXRjaGluZ0dQVUNsaWVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJTd2l0Y2hpbmdHUFVDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQzFEODExMjYyMDJDRDdGRTAwRUU3NEY5IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMUQ4MTEyNzIw
MkNEODAwMDBFRTc0RjkgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMxRDgxMTI5MjAyQ0RDQzIw
MEVFNzRGOSAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViVmlkZW9GdWxsc2NyZWVuSFVE
V2luZG93Q29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzFEODEx
MkEyMDJDRENDMzAwRUU3NEY5IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xs
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViVmlkZW9GdWxsc2NyZWVu
SFVEV2luZG93Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMUQ4
MTEyQzIwMkNFRDA2MDBFRTc0RjkgLyogV2ViV2luZG93QW5pbWF0aW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYldpbmRvd0FuaW1hdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDMUQ4MTEyRDIwMkNFRDA3MDBFRTc0RjkgLyogV2ViV2luZG93QW5p
bWF0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViV2lu
ZG93QW5pbWF0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDhCRkNFNTE1
NTMxMjI0MDA1QUZCMjUgLyogV2ViS2l0RnVsbFNjcmVlbkxpc3RlbmVyLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViS2l0RnVsbFNjcmVlbkxpc3RlbmVyLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjA4Myw4ICsyMDgwLDYgQEAKIAkJCQk2
NUE3RDQ0QTA1NjhBQjI2MDBFNzBFRjYgLyogV2ViVUlEZWxlZ2F0ZVByaXZhdGUuaCAqLywKIAkJ
CQlDMUQ4MTEyNjIwMkNEN0ZFMDBFRTc0RjkgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ci5oICovLAogCQkJCUMxRDgxMTI3MjAyQ0Q4MDAwMEVFNzRGOSAvKiBXZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyLm1tICovLAotCQkJCUMxRDgxMTJBMjAyQ0RDQzMwMEVFNzRGOSAvKiBXZWJW
aWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLmggKi8sCi0JCQkJQzFEODExMjkyMDJD
RENDMjAwRUU3NEY5IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW0g
Ki8sCiAJCQkJNTFBOEI1NzkwNDI4MzRGNzAwQ0EyRDNBIC8qIFdlYlZpZXcuaCAqLywKIAkJCQk1
MUE4QjU3QTA0MjgzNEY3MDBDQTJEM0EgLyogV2ViVmlldy5tbSAqLywKIAkJCQlCQzJFNDY0QjBG
RDhBOTY4MDBBOUQ5REUgLyogV2ViVmlld0RhdGEuaCAqLywKQEAgLTM1NzQsNyArMzU2OSw2IEBA
CiAJCQkJQzBDNUIzRUYxMTc3QTRBMDAwMkIwQUVGIC8qIFdlYlVzZXJDb250ZW50VVJMUGF0dGVy
bi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQ2MThERkY5MURFRjc2MEEwMDMzQzNBQSAvKiBXZWJW
YWxpZGF0aW9uTWVzc2FnZUNsaWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUMxRDgxMTI4MjAy
Q0Q4MDAwMEVFNzRGOSAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLm1tIGluIFNvdXJj
ZXMgKi8sCi0JCQkJQzFEODExMkIyMDJDRENDNDAwRUU3NEY5IC8qIFdlYlZpZGVvRnVsbHNjcmVl
bkhVRFdpbmRvd0NvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQzJFNDY0RTBGRDhB
OTY4MDBBOUQ5REUgLyogV2ViVmlld0RhdGEubW0gaW4gU291cmNlcyAqLywKIAkJCQkxNDMwQzEy
QzFCMkM1REY3MDBERUEwMUQgLyogV2ViVmlld0dyb3VwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUExMEMxRDc3MTgyMDMwMEUwMDM2ODgzQSAvKiBXZWJWaXNpYmxlUG9zaXRpb24ubW0gaW4gU291
cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLmgKaW5kZXggZThmYjU2Mjk1MDk1YmYz
N2E0ZDI4ODA3NTA0NmYzNWJkZDJlMDg1YS4uOWE2NGE2MGNjM2I1YmViMTg3MjIyMWE1MjYxOWZh
MmYyMmMyMzIyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLmgKQEAgLTMzLDE0ICszMywx
MiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBIVE1MVmlkZW9FbGVtZW50OwogfQogCi1A
Y2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlcjsKIEBjbGFzcyBXZWJX
aW5kb3dGYWRlQW5pbWF0aW9uOwogCiBAaW50ZXJmYWNlIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXIgOiBOU1dpbmRvd0NvbnRyb2xsZXIgewogICAgIFJlZlB0cjxXZWJDb3JlOjpIVE1MVmlk
ZW9FbGVtZW50PiBfdmlkZW9FbGVtZW50OwogCiAgICAgTlNXaW5kb3cgKl9iYWNrZ3JvdW5kRnVs
bHNjcmVlbldpbmRvdzsgLy8gKHJldGFpbikKLSAgICBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5k
b3dDb250cm9sbGVyICpfaHVkQ29udHJvbGxlcjsgLy8gKHJldGFpbikKIAogICAgIFdlYldpbmRv
d0ZhZGVBbmltYXRpb24gKl9mYWRlQW5pbWF0aW9uOyAvLyAocmV0YWluKQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXIubW0KaW5kZXggNzZiYjQ3NmFiMDQ0MDFkODM4NGUwYTdjN2YyYzEwZTZm
MGNkYjZmYi4uZDYwNWI3MGM4N2ZhOTNhNjNlZWVjY2I0OTdiYzRkMzdhZDQ2MmNiZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbQpAQCAtMjcsMjggKzI3LDExMyBAQAogCiAjaWYgRU5B
QkxFKFZJREVPKSAmJiBQTEFURk9STShNQUMpCiAKLSNpbXBvcnQgIldlYlZpZGVvRnVsbHNjcmVl
bkhVRFdpbmRvd0NvbnRyb2xsZXIuaCIKLSNpbXBvcnQgIldlYldpbmRvd0FuaW1hdGlvbi5oIgog
I2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWUGxheWVyLmg+Ci0jaW1wb3J0IDxBVkZvdW5kYXRpb24v
QVZQbGF5ZXJMYXllci5oPgotI2ltcG9ydCA8Q2FyYm9uL0NhcmJvbi5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9IVE1MVmlkZW9FbGVtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1BsYXliYWNrU2Vzc2lv
bkludGVyZmFjZUFWS2l0Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1BsYXliYWNrU2Vzc2lvbk1vZGVs
TWVkaWFFbGVtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1dlYkFWUGxheWVyQ29udHJvbGxlci5o
PgorI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5oPgorI2ltcG9ydCA8
b2JqYy9tZXNzYWdlLmg+CiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KLSNpbXBvcnQgPHBhbC9z
eXN0ZW0vU2xlZXBEaXNhYmxlci5oPgorI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9BVktpdFNQSS5o
PgorI2ltcG9ydCA8cGFsL3NwaS9tYWMvTlNXaW5kb3dTUEkuaD4KICNpbXBvcnQgPHd0Zi9SZXRh
aW5QdHIuaD4KIAorI2ltcG9ydCA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+CiAjaW1wb3J0
IDxwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4KIAorU09GVExJTktfQVZLSVRfRlJB
TUVXT1JLKCkKK1NPRlRfTElOS19DTEFTUyhBVktpdCwgQVZQbGF5ZXJWaWV3KQorCiBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogCi1AaW50ZXJmYWNlIFdlYlZpZGVvRnVsbHNj
cmVlbldpbmRvdyA6IE5TV2luZG93PE5TQW5pbWF0aW9uRGVsZWdhdGU+IHsKLSAgICBTRUwgX2Nv
bnRyb2xsZXJBY3Rpb25PbkFuaW1hdGlvbkVuZDsKLSAgICBXZWJXaW5kb3dTY2FsZUFuaW1hdGlv
biAqX2Z1bGxzY3JlZW5BbmltYXRpb247IC8vIChyZXRhaW4pCitAaW50ZXJmYWNlIEFWUGxheWVy
VmlldyAoU2VjcmV0U3R1ZmYpCitAcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduKSBCT09MIHNo
b3dzQXVkaW9Pbmx5SW5kaWNhdG9yVmlldzsKK0BlbmQKKworQGludGVyZmFjZSBXZWJPdmVybGF5
TGF5ZXIgOiBDQUxheWVyCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJPdmVybGF5TGF5ZXIK
Ky0gKHZvaWQpbGF5b3V0U3VibGF5ZXJzCit7CisgICAgZm9yIChDQUxheWVyKiBsYXllciBpbiBz
ZWxmLnN1YmxheWVycykKKyAgICAgICAgbGF5ZXIuZnJhbWUgPSBzZWxmLmJvdW5kczsKIH0KLS0g
KHZvaWQpYW5pbWF0ZUZyb21SZWN0OihOU1JlY3Qpc3RhcnRSZWN0IHRvUmVjdDooTlNSZWN0KWVu
ZFJlY3Qgd2l0aFN1YkFuaW1hdGlvbjooTlNBbmltYXRpb24gKilzdWJBbmltYXRpb24gY29udHJv
bGxlckFjdGlvbjooU0VMKWNvbnRyb2xsZXJBY3Rpb247CiBAZW5kCiAKLUBpbnRlcmZhY2UgV2Vi
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciAoKSA8V2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93
Q29udHJvbGxlckRlbGVnYXRlPgorQGNsYXNzIFdlYkFWUGxheWVyVmlldzsKKworQHByb3RvY29s
IFdlYkFWUGxheWVyVmlld0RlbGVnYXRlCistIChCT09MKXBsYXllclZpZXdJc0Z1bGxTY3JlZW46
KFdlYkFWUGxheWVyVmlldyopcGxheWVyVmlldzsKKy0gKHZvaWQpcGxheWVyVmlld1JlcXVlc3RF
bnRlckZ1bGxzY3JlZW46KFdlYkFWUGxheWVyVmlldyopcGxheWVyVmlldzsKKy0gKHZvaWQpcGxh
eWVyVmlld1JlcXVlc3RFeGl0RnVsbHNjcmVlbjooV2ViQVZQbGF5ZXJWaWV3KilwbGF5ZXJWaWV3
OworQGVuZAorCitAaW50ZXJmYWNlIFdlYkFWUGxheWVyVmlldyA6IEFWUGxheWVyVmlldworQHBy
b3BlcnR5ICh3ZWFrKSBpZDxXZWJBVlBsYXllclZpZXdEZWxlZ2F0ZT4gZGVsZWdhdGU7CitAZW5k
CisKK3N0YXRpYyBpZDxXZWJBVlBsYXllclZpZXdEZWxlZ2F0ZT4gV2ViQVZQbGF5ZXJWaWV3X2Rl
bGVnYXRlKGlkIGFTZWxmLCBTRUwpCit7CisgICAgdm9pZCogZGVsZWdhdGUgPSBuaWw7CisgICAg
b2JqZWN0X2dldEluc3RhbmNlVmFyaWFibGUoYVNlbGYsICJfd2ViRGVsZWdhdGUiLCAmZGVsZWdh
dGUpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxpZDxXZWJBVlBsYXllclZpZXdEZWxlZ2F0ZT4+
KGRlbGVnYXRlKTsKK30KKworc3RhdGljIHZvaWQgV2ViQVZQbGF5ZXJWaWV3X3NldERlbGVnYXRl
KGlkIGFTZWxmLCBTRUwsIGlkPFdlYkFWUGxheWVyVmlld0RlbGVnYXRlPiBkZWxlZ2F0ZSkKK3sK
KyAgICBvYmplY3Rfc2V0SW5zdGFuY2VWYXJpYWJsZShhU2VsZiwgIl93ZWJEZWxlZ2F0ZSIsIGRl
bGVnYXRlKTsKK30KKworc3RhdGljIEJPT0wgV2ViQVZQbGF5ZXJWaWV3X2lzRnVsbFNjcmVlbihp
ZCBhU2VsZiwgU0VMKQoreworICAgIFdlYkFWUGxheWVyVmlldyAqcGxheWVyVmlldyA9IGFTZWxm
OworICAgIHJldHVybiBbcGxheWVyVmlldy5kZWxlZ2F0ZSBwbGF5ZXJWaWV3SXNGdWxsU2NyZWVu
OnBsYXllclZpZXddOworfQorCitzdGF0aWMgdm9pZCBXZWJBVlBsYXllclZpZXdfZW50ZXJGdWxs
U2NyZWVuKGlkIGFTZWxmLCBTRUwsIGlkIHNlbmRlcikKK3sKKyAgICBXZWJBVlBsYXllclZpZXcg
KnBsYXllclZpZXcgPSBhU2VsZjsKKyAgICBbcGxheWVyVmlldy5kZWxlZ2F0ZSBwbGF5ZXJWaWV3
UmVxdWVzdEVudGVyRnVsbHNjcmVlbjpwbGF5ZXJWaWV3XTsKK30KKworc3RhdGljIHZvaWQgV2Vi
QVZQbGF5ZXJWaWV3X2V4aXRGdWxsU2NyZWVuKGlkIGFTZWxmLCBTRUwsIGlkIHNlbmRlcikKK3sK
KyAgICBXZWJBVlBsYXllclZpZXcgKnBsYXllclZpZXcgPSBhU2VsZjsKKyAgICBbcGxheWVyVmll
dy5kZWxlZ2F0ZSBwbGF5ZXJWaWV3UmVxdWVzdEV4aXRGdWxsc2NyZWVuOnBsYXllclZpZXddOwor
fQorCitzdGF0aWMgV2ViQVZQbGF5ZXJWaWV3ICphbGxvY1dlYkFWUGxheWVyVmlld0luc3RhbmNl
KCkKK3sKKyAgICBzdGF0aWMgQ2xhc3MgdGhlQ2xhc3MgPSBuaWw7CisgICAgc3RhdGljIGRpc3Bh
dGNoX29uY2VfdCBvbmNlVG9rZW47CisgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeewor
ICAgICAgICBBU1NFUlQoZ2V0QVZQbGF5ZXJWaWV3Q2xhc3MoKSk7CisgICAgICAgIENsYXNzIGFD
bGFzcyA9IG9iamNfYWxsb2NhdGVDbGFzc1BhaXIoZ2V0QVZQbGF5ZXJWaWV3Q2xhc3MoKSwgIldl
YkFWUGxheWVyVmlldyIsIDApOworICAgICAgICB0aGVDbGFzcyA9IGFDbGFzczsKKyAgICAgICAg
Y2xhc3NfYWRkTWV0aG9kKHRoZUNsYXNzLCBAc2VsZWN0b3Ioc2V0RGVsZWdhdGU6KSwgKElNUClX
ZWJBVlBsYXllclZpZXdfc2V0RGVsZWdhdGUsICJ2QDpAIik7CisgICAgICAgIGNsYXNzX2FkZE1l
dGhvZCh0aGVDbGFzcywgQHNlbGVjdG9yKGRlbGVnYXRlKSwgKElNUClXZWJBVlBsYXllclZpZXdf
ZGVsZWdhdGUsICJAQDoiKTsKKyAgICAgICAgY2xhc3NfYWRkTWV0aG9kKHRoZUNsYXNzLCBAc2Vs
ZWN0b3IoaXNGdWxsU2NyZWVuKSwgKElNUClXZWJBVlBsYXllclZpZXdfaXNGdWxsU2NyZWVuLCAi
QkA6Iik7CisgICAgICAgIGNsYXNzX2FkZE1ldGhvZCh0aGVDbGFzcywgQHNlbGVjdG9yKGVudGVy
RnVsbFNjcmVlbjopLCAoSU1QKVdlYkFWUGxheWVyVmlld19lbnRlckZ1bGxTY3JlZW4sICJ2QDpA
Iik7CisgICAgICAgIGNsYXNzX2FkZE1ldGhvZCh0aGVDbGFzcywgQHNlbGVjdG9yKGV4aXRGdWxs
U2NyZWVuOiksIChJTVApV2ViQVZQbGF5ZXJWaWV3X2V4aXRGdWxsU2NyZWVuLCAidkA6QCIpOwor
CisgICAgICAgIGNsYXNzX2FkZEl2YXIodGhlQ2xhc3MsICJfd2ViRGVsZWdhdGUiLCBzaXplb2Yo
aWQpLCBsb2cyKHNpemVvZihpZCkpLCAiQCIpOworICAgICAgICBjbGFzc19hZGRJdmFyKHRoZUNs
YXNzLCAiX3dlYklzRnVsbFNjcmVlbiIsIHNpemVvZihCT09MKSwgbG9nMihzaXplb2YoQk9PTCkp
LCAiQiIpOworCisgICAgICAgIG9iamNfcmVnaXN0ZXJDbGFzc1BhaXIodGhlQ2xhc3MpOworICAg
IH0pOworICAgIHJldHVybiAoV2ViQVZQbGF5ZXJWaWV3ICopW3RoZUNsYXNzIGFsbG9jXTsKK30K
KworQGludGVyZmFjZSBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyICgpIDxXZWJBVlBsYXll
clZpZXdEZWxlZ2F0ZSwgTlNXaW5kb3dEZWxlZ2F0ZT4geworICAgIFJlZlB0cjxXZWJDb3JlOjpQ
bGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudD4gX3BsYXliYWNrTW9kZWw7CisgICAgUmVm
UHRyPFdlYkNvcmU6OlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0PiBfcGxheWJhY2tJbnRl
cmZhY2U7CisgICAgUmV0YWluUHRyPE5TVmlldz4gX2NvbnRlbnRPdmVybGF5OworICAgIEJPT0wg
X2lzRnVsbFNjcmVlbjsKK30KK0Bwcm9wZXJ0eSAocmVhZG9ubHkpIFdlYkNvcmVGdWxsU2NyZWVu
V2luZG93KiBmdWxsc2NyZWVuV2luZG93OworQHByb3BlcnR5IChyZWFkb25seSkgV2ViQVZQbGF5
ZXJWaWV3KiBwbGF5ZXJWaWV3OwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV2ViVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlcgpAQCAtNTYsNDEgKzE0MSw1NiBAQCBAaW1wbGVtZW50YXRpb24gV2Vi
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlcgogLSAoaWQpaW5pdAogewogICAgIC8vIERvIG5vdCBk
ZWZlciB3aW5kb3cgY3JlYXRpb24sIHRvIG1ha2Ugc3VyZSAtd2luZG93TnVtYmVyIGlzIGNyZWF0
ZWQgKG5lZWRlZCBieSBXZWJXaW5kb3dTY2FsZUFuaW1hdGlvbikuCi0gICAgTlNXaW5kb3cgKndp
bmRvdyA9IFtbV2ViVmlkZW9GdWxsc2NyZWVuV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRS
ZWN0Ok5TWmVyb1JlY3Qgc3R5bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01hc2sgYmFja2luZzpO
U0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOk5PXTsKKyAgICBOU1dpbmRvdyAqd2luZG93ID0g
W1tXZWJDb3JlRnVsbFNjcmVlbldpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpOU1pl
cm9SZWN0IHN0eWxlTWFzazooTlNXaW5kb3dTdHlsZU1hc2tGdWxsU2l6ZUNvbnRlbnRWaWV3IHwg
TlNXaW5kb3dTdHlsZU1hc2tSZXNpemFibGUpIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJl
ZCBkZWZlcjpOT107CisgICAgW3dpbmRvdyBzZXRDb2xsZWN0aW9uQmVoYXZpb3I6KFt3aW5kb3cg
Y29sbGVjdGlvbkJlaGF2aW9yXSB8IE5TV2luZG93Q29sbGVjdGlvbkJlaGF2aW9yRnVsbFNjcmVl
blByaW1hcnkpXTsKKyAgICB3aW5kb3cuZGVsZWdhdGUgPSBzZWxmOwogICAgIHNlbGYgPSBbc3Vw
ZXIgaW5pdFdpdGhXaW5kb3c6d2luZG93XTsKICAgICBbd2luZG93IHJlbGVhc2VdOwogICAgIGlm
ICghc2VsZikKICAgICAgICAgcmV0dXJuIG5pbDsKKyAgICBfcGxheWJhY2tNb2RlbCA9IFdlYkNv
cmU6OlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjpjcmVhdGUoKTsKKyAgICBfcGxh
eWJhY2tJbnRlcmZhY2UgPSBXZWJDb3JlOjpQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6
Y3JlYXRlKCpfcGxheWJhY2tNb2RlbCk7CisgICAgX2NvbnRlbnRPdmVybGF5ID0gYWRvcHROUyhb
W05TVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0XSk7CisgICAgX2NvbnRlbnRP
dmVybGF5LmdldCgpLmxheWVyQ29udGVudHNSZWRyYXdQb2xpY3kgPSBOU1ZpZXdMYXllckNvbnRl
bnRzUmVkcmF3TmV2ZXI7CisgICAgX2NvbnRlbnRPdmVybGF5LmdldCgpLmxheWVyID0gW1tbV2Vi
T3ZlcmxheUxheWVyIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgW19jb250ZW50T3Zl
cmxheSBzZXRXYW50c0xheWVyOllFU107CisgICAgW19jb250ZW50T3ZlcmxheSBzZXRBdXRvcmVz
aXppbmdNYXNrOihOU1ZpZXdXaWR0aFNpemFibGUgfCBOU1ZpZXdIZWlnaHRTaXphYmxlKV07CiAg
ICAgW3NlbGYgd2luZG93RGlkTG9hZF07CisKICAgICByZXR1cm4gc2VsZjsKLSAgICAKIH0KIC0g
KHZvaWQpZGVhbGxvYwogewogICAgIEFTU0VSVCghX2JhY2tncm91bmRGdWxsc2NyZWVuV2luZG93
KTsKICAgICBBU1NFUlQoIV9mYWRlQW5pbWF0aW9uKTsKLSAgICBbW05TTm90aWZpY2F0aW9uQ2Vu
dGVyIGRlZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2VydmVyOnNlbGZdOworICAgIF9wbGF5ZXJWaWV3
LmRlbGVnYXRlID0gbmlsOworICAgIF9wbGF5YmFja01vZGVsID0gbmlsOwogICAgIFtzdXBlciBk
ZWFsbG9jXTsKIH0KIAotLSAoV2ViVmlkZW9GdWxsc2NyZWVuV2luZG93ICopZnVsbHNjcmVlbldp
bmRvdworLSAoV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cgKilmdWxsc2NyZWVuV2luZG93CiB7Ci0g
ICAgcmV0dXJuIChXZWJWaWRlb0Z1bGxzY3JlZW5XaW5kb3cgKilbc3VwZXIgd2luZG93XTsKKyAg
ICByZXR1cm4gKFdlYkNvcmVGdWxsU2NyZWVuV2luZG93ICopW3N1cGVyIHdpbmRvd107CiB9CiAK
IC0gKHZvaWQpd2luZG93RGlkTG9hZAogewogICAgIGF1dG8gd2luZG93ID0gW3NlbGYgZnVsbHNj
cmVlbldpbmRvd107Ci0gICAgYXV0byBjb250ZW50VmlldyA9IFt3aW5kb3cgY29udGVudFZpZXdd
OwogCiAgICAgW3dpbmRvdyBzZXRIYXNTaGFkb3c6WUVTXTsgLy8gVGhpcyBpcyBuaWNlciB3aXRo
IGEgc2hhZG93LgogICAgIFt3aW5kb3cgc2V0TGV2ZWw6TlNQb3BVcE1lbnVXaW5kb3dMZXZlbC0x
XTsKIAotICAgIFtjb250ZW50VmlldyBzZXRMYXllcjpbQ0FMYXllciBsYXllcl1dOwotICAgIFtj
b250ZW50VmlldyBzZXRXYW50c0xheWVyOllFU107CisgICAgX3BsYXllclZpZXcgPSBbYWxsb2NX
ZWJBVlBsYXllclZpZXdJbnN0YW5jZSgpIGluaXRXaXRoRnJhbWU6d2luZG93LmNvbnRlbnRMYXlv
dXRSZWN0XTsKKyAgICBfcGxheWVyVmlldy5jb250cm9sc1N0eWxlID0gQVZQbGF5ZXJWaWV3Q29u
dHJvbHNTdHlsZU5vbmU7CisgICAgX3BsYXllclZpZXcuc2hvd3NGdWxsU2NyZWVuVG9nZ2xlQnV0
dG9uID0gWUVTOworICAgIF9wbGF5ZXJWaWV3LnNob3dzQXVkaW9Pbmx5SW5kaWNhdG9yVmlldyA9
IE5POworICAgIF9wbGF5ZXJWaWV3LmRlbGVnYXRlID0gc2VsZjsKKyAgICB3aW5kb3cuY29udGVu
dFZpZXcgPSBfcGxheWVyVmlldzsKKyAgICBbX2NvbnRlbnRPdmVybGF5IHNldEZyYW1lOl9wbGF5
ZXJWaWV3LmNvbnRlbnRPdmVybGF5Vmlldy5ib3VuZHNdOworICAgIFtfcGxheWVyVmlldy5jb250
ZW50T3ZlcmxheVZpZXcgYWRkU3VidmlldzpfY29udGVudE92ZXJsYXkuZ2V0KCldOwogCi0gICAg
W1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjpzZWxmIHNl
bGVjdG9yOkBzZWxlY3RvcihhcHBsaWNhdGlvbkRpZFJlc2lnbkFjdGl2ZTopIG5hbWU6TlNBcHBs
aWNhdGlvbkRpZFJlc2lnbkFjdGl2ZU5vdGlmaWNhdGlvbiBvYmplY3Q6TlNBcHBdOwotICAgIFtb
TlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6c2VsZiBzZWxl
Y3RvcjpAc2VsZWN0b3IoYXBwbGljYXRpb25EaWRDaGFuZ2VTY3JlZW5QYXJhbWV0ZXJzOikgbmFt
ZTpOU0FwcGxpY2F0aW9uRGlkQ2hhbmdlU2NyZWVuUGFyYW1ldGVyc05vdGlmaWNhdGlvbiBvYmpl
Y3Q6TlNBcHBdOworLy8gICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBh
ZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihhcHBsaWNhdGlvbkRpZFJlc2lnbkFj
dGl2ZTopIG5hbWU6TlNBcHBsaWNhdGlvbkRpZFJlc2lnbkFjdGl2ZU5vdGlmaWNhdGlvbiBvYmpl
Y3Q6TlNBcHBdOworLy8gICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBh
ZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihhcHBsaWNhdGlvbkRpZENoYW5nZVNj
cmVlblBhcmFtZXRlcnM6KSBuYW1lOk5TQXBwbGljYXRpb25EaWRDaGFuZ2VTY3JlZW5QYXJhbWV0
ZXJzTm90aWZpY2F0aW9uIG9iamVjdDpOU0FwcF07CiB9CiAKIC0gKE5ha2VkUHRyPFdlYkNvcmU6
OkhUTUxWaWRlb0VsZW1lbnQ+KXZpZGVvRWxlbWVudApAQCAtMTA3LDc1ICsyMDcsMjcgQEAgLSAo
dm9pZClzZXRWaWRlb0VsZW1lbnQ6KE5ha2VkUHRyPFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ+
KXZpZGVvRWxlbWVudAogCiAgICAgaWYgKCFbc2VsZiBpc1dpbmRvd0xvYWRlZF0pCiAgICAgICAg
IHJldHVybjsKLSAgICBhdXRvIGNvcmVQbGF5ZXIgPSB2aWRlb0VsZW1lbnQtPnBsYXllcigpOwot
ICAgIGlmICghY29yZVBsYXllcikKLSAgICAgICAgcmV0dXJuOwotICAgIGF1dG8gcGxheWVyID0g
Y29yZVBsYXllci0+b2JqQ0FWRm91bmRhdGlvbkFWUGxheWVyKCk7Ci0gICAgaWYgKCFwbGF5ZXIp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gY29udGVudFZpZXcgPSBbW3NlbGYgZnVsbHNj
cmVlbldpbmRvd10gY29udGVudFZpZXddOwotCi0gICAgYXV0byBsYXllciA9IGFkb3B0TlMoW1BB
TDo6YWxsb2NBVlBsYXllckxheWVySW5zdGFuY2UoKSBpbml0XSk7Ci0gICAgW2xheWVyIHNldFBs
YXllcjpwbGF5ZXJdOwotCi0gICAgW2NvbnRlbnRWaWV3IHNldExheWVyOmxheWVyLmdldCgpXTsK
LQotICAgIC8vIEZJWE1FOiBUaGUgd2luZG93RGlkTG9hZCBtZXRob2QgYWxyZWFkeSBjYWxsZWQg
dGhpcywgc28gaXQgc2hvdWxkCi0gICAgLy8gbm90IGJlIG5lY2Vzc2FyeSB0byBkbyBpdCBhZ2Fp
biBoZXJlLgotICAgIFtjb250ZW50VmlldyBzZXRXYW50c0xheWVyOllFU107CiAKLSAgICAvLyBG
SVhNRTogVGhpcyBjYW4gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzLCBhbmQgd29uJ3QgbmVjZXNz
YXJpbHkgYmUKLSAgICAvLyBiYWxhbmNlZCBieSBjYWxscyB0byB3aW5kb3dEaWRFeGl0RnVsbHNj
cmVlbiBpbiBzb21lIGNhc2VzLCBzbyBpdAotICAgIC8vIHdvdWxkIGJlIGJldHRlciB0byBjaGFu
Z2UgdGhpbmdzIHNvIHRoZSBvYnNlcnZlciBpcyByZWxpYWJseSBhZGRlZAotICAgIC8vIG9ubHkg
b25jZSBhbmQgZ3VhcmFudGVlZCByZW1vdmVkIGV2ZW4gaW4gdW51c3VhbCBlZGdlIGNhc2VzLgot
ICAgIFtwbGF5ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBmb3JLZXlQYXRoOkAicmF0ZSIgb3B0aW9uczow
IGNvbnRleHQ6bnVsbHB0cl07CisgICAgX3BsYXliYWNrTW9kZWwtPnNldE1lZGlhRWxlbWVudCh2
aWRlb0VsZW1lbnQpOworICAgIHNlbGYucGxheWVyVmlldy5wbGF5ZXJDb250cm9sbGVyID0gKEFW
UGxheWVyQ29udHJvbGxlciopX3BsYXliYWNrSW50ZXJmYWNlLT5wbGF5ZXJDb250cm9sbGVyKCk7
CiB9CiAKLS0gKENHRmxvYXQpY2xlYXJGYWRlQW5pbWF0aW9uCi17Ci0gICAgW19mYWRlQW5pbWF0
aW9uIHN0b3BBbmltYXRpb25dOwotICAgIENHRmxvYXQgcHJldmlvdXNBbHBoYSA9IFtfZmFkZUFu
aW1hdGlvbiBjdXJyZW50QWxwaGFdOwotICAgIFtfZmFkZUFuaW1hdGlvbiBzZXRXaW5kb3c6bmls
XTsKLSAgICBbX2ZhZGVBbmltYXRpb24gcmVsZWFzZV07Ci0gICAgX2ZhZGVBbmltYXRpb24gPSBu
aWw7Ci0gICAgcmV0dXJuIHByZXZpb3VzQWxwaGE7Ci19Ci0KLS0gKHZvaWQpd2luZG93RGlkRXhp
dEZ1bGxzY3JlZW4KKy0gKHZvaWQpZW50ZXJGdWxsc2NyZWVuOihOU1NjcmVlbiAqKXNjcmVlbgog
ewotICAgIENBTGF5ZXIgKmxheWVyID0gW1tbc2VsZiB3aW5kb3ddIGNvbnRlbnRWaWV3XSBsYXll
cl07Ci0gICAgaWYgKFtsYXllciBpc0tpbmRPZkNsYXNzOlBBTDo6Z2V0QVZQbGF5ZXJMYXllckNs
YXNzKCldKQotICAgICAgICBbWyhBVlBsYXllckxheWVyICopbGF5ZXIgcGxheWVyXSByZW1vdmVP
YnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJyYXRlIl07Ci0KLSAgICBbc2VsZiBjbGVhckZhZGVB
bmltYXRpb25dOwotICAgIFtbc2VsZiB3aW5kb3ddIGNsb3NlXTsKLSAgICBbc2VsZiBzZXRXaW5k
b3c6bmlsXTsKLSAgICBbc2VsZiB1cGRhdGVNZW51QW5kRG9ja0ZvckZ1bGxzY3JlZW5dOyAgIAot
ICAgIFtfaHVkQ29udHJvbGxlciBzZXREZWxlZ2F0ZTpuaWxdOwotICAgIFtfaHVkQ29udHJvbGxl
ciByZWxlYXNlXTsKLSAgICBfaHVkQ29udHJvbGxlciA9IG5pbDsKLSAgICBbX2JhY2tncm91bmRG
dWxsc2NyZWVuV2luZG93IGNsb3NlXTsKLSAgICBbX2JhY2tncm91bmRGdWxsc2NyZWVuV2luZG93
IHJlbGVhc2VdOwotICAgIF9iYWNrZ3JvdW5kRnVsbHNjcmVlbldpbmRvdyA9IG5pbDsKLSAgICAK
LSAgICBbc2VsZiBhdXRvcmVsZWFzZV07IC8vIEFzc29jaWF0ZWQgLXJldGFpbiBpcyBpbiAtZXhp
dEZ1bGxzY3JlZW4uCi0gICAgX2lzRW5kaW5nRnVsbHNjcmVlbiA9IE5POworICAgIGlmICghX3Zp
ZGVvRWxlbWVudCkKKyAgICAgICAgcmV0dXJuOworICAgIFtOU0FuaW1hdGlvbkNvbnRleHQgYmVn
aW5Hcm91cGluZ107CisgICAgX3ZpZGVvRWxlbWVudC0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIo
X2NvbnRlbnRPdmVybGF5LmdldCgpLmxheWVyLCBbc2VsZiwgcHJvdGVjdGVkU2VsZiA9IHJldGFp
blB0cihzZWxmKV0geworICAgICAgICBbc2VsZi5mdWxsc2NyZWVuV2luZG93IHNldEZyYW1lOnNl
bGYudmlkZW9FbGVtZW50UmVjdCBkaXNwbGF5OllFU107CisgICAgICAgIFtzZWxmLmZ1bGxzY3Jl
ZW5XaW5kb3cgbWFrZUtleUFuZE9yZGVyRnJvbnQ6c2VsZl07CisgICAgICAgIFtzZWxmLmZ1bGxz
Y3JlZW5XaW5kb3cgZW50ZXJGdWxsU2NyZWVuTW9kZTpzZWxmXTsKKyAgICAgICAgW05TQW5pbWF0
aW9uQ29udGV4dCBlbmRHcm91cGluZ107CisgICAgfSk7CiB9CiAKLS0gKHZvaWQpd2luZG93RGlk
RW50ZXJGdWxsc2NyZWVuCistICh2b2lkKWV4aXRGdWxsc2NyZWVuCiB7Ci0gICAgW3NlbGYgY2xl
YXJGYWRlQW5pbWF0aW9uXTsKLQotICAgIEFTU0VSVCghX2h1ZENvbnRyb2xsZXIpOwotICAgIF9o
dWRDb250cm9sbGVyID0gW1tXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyIGFs
bG9jXSBpbml0XTsKLSAgICBbX2h1ZENvbnRyb2xsZXIgc2V0RGVsZWdhdGU6c2VsZl07Ci0KLSAg
ICBbc2VsZiB1cGRhdGVNZW51QW5kRG9ja0ZvckZ1bGxzY3JlZW5dOwotICAgIFtOU0N1cnNvciBz
ZXRIaWRkZW5VbnRpbE1vdXNlTW92ZXM6WUVTXTsKLSAgICAKLSAgICAvLyBHaXZlIHRoZSBIVUQg
a2V5Ym9hcmQgZm9jdXMgaW5pdGlhbGx5Ci0gICAgW19odWRDb250cm9sbGVyIGZhZGVXaW5kb3dJ
bl07CisgICAgW3NlbGYuZnVsbHNjcmVlbldpbmRvdyBleGl0RnVsbFNjcmVlbk1vZGU6c2VsZl07
CiB9CiAKIC0gKE5TUmVjdCl2aWRlb0VsZW1lbnRSZWN0CkBAIC0xODQsMzI0ICsyMzYsMTA3IEBA
IC0gKE5TUmVjdCl2aWRlb0VsZW1lbnRSZWN0CiB9CiAKIC0gKHZvaWQpYXBwbGljYXRpb25EaWRS
ZXNpZ25BY3RpdmU6KE5TTm90aWZpY2F0aW9uKilub3RpZmljYXRpb24KLXsgICAKK3sKICAgICBV
TlVTRURfUEFSQU0obm90aWZpY2F0aW9uKTsKICAgICBOU1dpbmRvdyogZnVsbHNjcmVlbldpbmRv
dyA9IFtzZWxmIGZ1bGxzY3JlZW5XaW5kb3ddOwogCiAgICAgLy8gUmVwbGljYXRlIHRoZSBRdWlj
a1RpbWUgUGxheWVyIChYKSBiZWhhdmlvciB3aGVuIGxvc2luZyBhY3RpdmUgYXBwbGljYXRpb24g
c3RhdHVzOgotICAgIC8vIElzIHRoZSBmdWxsc2NyZWVuIHNjcmVlbiB0aGUgbWFpbiBzY3JlZW4/
IChOb3RlOiB0aGlzIGNvdmVycyB0aGUgY2FzZSB3aGVyZSBvbmx5IGEgCi0gICAgLy8gc2luZ2xl
IHNjcmVlbiBpcyBhdmFpbGFibGUuKSAgSXMgdGhlIGZ1bGxzY3JlZW4gc2NyZWVuIG9uIHRoZSBj
dXJyZW50IHNwYWNlPyBJRkYgc28sIAotICAgIC8vIHRoZW4gZXhpdCBmdWxsc2NyZWVuIG1vZGUu
ICAgIAorICAgIC8vIElzIHRoZSBmdWxsc2NyZWVuIHNjcmVlbiB0aGUgbWFpbiBzY3JlZW4/IChO
b3RlOiB0aGlzIGNvdmVycyB0aGUgY2FzZSB3aGVyZSBvbmx5IGEKKyAgICAvLyBzaW5nbGUgc2Ny
ZWVuIGlzIGF2YWlsYWJsZS4pICBJcyB0aGUgZnVsbHNjcmVlbiBzY3JlZW4gb24gdGhlIGN1cnJl
bnQgc3BhY2U/IElGRiBzbywKKyAgICAvLyB0aGVuIGV4aXQgZnVsbHNjcmVlbiBtb2RlLgogICAg
IGlmIChmdWxsc2NyZWVuV2luZG93LnNjcmVlbiA9PSBbTlNTY3JlZW4gc2NyZWVuc11bMF0gJiYg
ZnVsbHNjcmVlbldpbmRvdy5vbkFjdGl2ZVNwYWNlKQotICAgICAgICBbc2VsZiByZXF1ZXN0RXhp
dEZ1bGxzY3JlZW5XaXRoQW5pbWF0aW9uOk5PXTsKLX0KLQotCi0vLyBNQVJLOiAtCi0vLyBNQVJL
OiBFeHBvc2VkIEludGVyZmFjZQotCi1zdGF0aWMgTlNSZWN0IGZyYW1lRXhwYW5kZWRUb1JhdGlv
T2ZGcmFtZShOU1JlY3QgZnJhbWVUb0V4cGFuZCwgTlNSZWN0IGZyYW1lKQotewotICAgIC8vIEtl
ZXAgYSBjb25zdHJhaW5lZCBhc3BlY3QgcmF0aW8gZm9yIHRoZSBkZXN0aW5hdGlvbiB3aW5kb3cK
LSAgICBOU1JlY3QgcmVzdWx0ID0gZnJhbWVUb0V4cGFuZDsKLSAgICBDR0Zsb2F0IG5ld1JhdGlv
ID0gZnJhbWUuc2l6ZS53aWR0aCAvIGZyYW1lLnNpemUuaGVpZ2h0OwotICAgIENHRmxvYXQgb3Jp
Z2luYWxSYXRpbyA9IGZyYW1lVG9FeHBhbmQuc2l6ZS53aWR0aCAvIGZyYW1lVG9FeHBhbmQuc2l6
ZS5oZWlnaHQ7Ci0gICAgaWYgKG5ld1JhdGlvID4gb3JpZ2luYWxSYXRpbykgewotICAgICAgICBD
R0Zsb2F0IG5ld1dpZHRoID0gbmV3UmF0aW8gKiBmcmFtZVRvRXhwYW5kLnNpemUuaGVpZ2h0Owot
ICAgICAgICBDR0Zsb2F0IGRpZmYgPSBuZXdXaWR0aCAtIGZyYW1lVG9FeHBhbmQuc2l6ZS53aWR0
aDsKLSAgICAgICAgcmVzdWx0LnNpemUud2lkdGggPSBuZXdXaWR0aDsKLSAgICAgICAgcmVzdWx0
Lm9yaWdpbi54IC09IGRpZmYgLyAyOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIENHRmxvYXQgbmV3
SGVpZ2h0ID0gZnJhbWVUb0V4cGFuZC5zaXplLndpZHRoIC8gbmV3UmF0aW87Ci0gICAgICAgIENH
RmxvYXQgZGlmZiA9IG5ld0hlaWdodCAtIGZyYW1lVG9FeHBhbmQuc2l6ZS5oZWlnaHQ7Ci0gICAg
ICAgIHJlc3VsdC5zaXplLmhlaWdodCA9IG5ld0hlaWdodDsKLSAgICAgICAgcmVzdWx0Lm9yaWdp
bi55IC09IGRpZmYgLyAyOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1zdGF0aWMg
TlNXaW5kb3cgKmNyZWF0ZUJhY2tncm91bmRGdWxsc2NyZWVuV2luZG93KE5TUmVjdCBmcmFtZSwg
aW50IGxldmVsKQotewotICAgIE5TV2luZG93ICp3aW5kb3cgPSBbW05TV2luZG93IGFsbG9jXSBp
bml0V2l0aENvbnRlbnRSZWN0OmZyYW1lIHN0eWxlTWFzazpOU0JvcmRlcmxlc3NXaW5kb3dNYXNr
IGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpOT107Ci0gICAgW3dpbmRvdyBz
ZXRPcGFxdWU6WUVTXTsKLSAgICBbd2luZG93IHNldEJhY2tncm91bmRDb2xvcjpbTlNDb2xvciBi
bGFja0NvbG9yXV07Ci0gICAgW3dpbmRvdyBzZXRMZXZlbDpsZXZlbF07Ci0gICAgW3dpbmRvdyBz
ZXRSZWxlYXNlZFdoZW5DbG9zZWQ6Tk9dOwotICAgIHJldHVybiB3aW5kb3c7Ci19Ci0KLS0gKHZv
aWQpc2V0dXBGYWRlQW5pbWF0aW9uSWZOZWVkZWRBbmRGYWRlSW46KEJPT0wpZmFkZUluCi17Ci0g
ICAgQ0dGbG9hdCBpbml0aWFsQWxwaGEgPSBmYWRlSW4gPyAwIDogMTsKLSAgICBpZiAoX2ZhZGVB
bmltYXRpb24pIHsKLSAgICAgICAgLy8gTWFrZSBzdXJlIHdlIHN1cHBvcnQgcXVldWluZyBhbmlt
YXRpb24gaWYgdGhlIHByZXZpb3VzIG9uZSBpc24ndCBvdmVyIHlldAotICAgICAgICBpbml0aWFs
QWxwaGEgPSBbc2VsZiBjbGVhckZhZGVBbmltYXRpb25dOwotICAgIH0KLSAgICBpZiAoIV9mb3Jj
ZURpc2FibGVBbmltYXRpb24pCi0gICAgICAgIF9mYWRlQW5pbWF0aW9uID0gW1tXZWJXaW5kb3dG
YWRlQW5pbWF0aW9uIGFsbG9jXSBpbml0V2l0aER1cmF0aW9uOjAuMiB3aW5kb3c6X2JhY2tncm91
bmRGdWxsc2NyZWVuV2luZG93IGluaXRpYWxBbHBoYTppbml0aWFsQWxwaGEgZmluYWxBbHBoYTpm
YWRlSW4gPyAxIDogMF07Ci19Ci0KLS0gKHZvaWQpZW50ZXJGdWxsc2NyZWVuOihOU1NjcmVlbiAq
KXNjcmVlbgotewotICAgIGlmICghc2NyZWVuKQotICAgICAgICBzY3JlZW4gPSBbTlNTY3JlZW4g
bWFpblNjcmVlbl07Ci0KLSAgICBOU1JlY3QgZW5kRnJhbWUgPSBbc2NyZWVuIGZyYW1lXTsKLSAg
ICBOU1JlY3QgZnJhbWUgPSBmcmFtZUV4cGFuZGVkVG9SYXRpb09mRnJhbWUoW3NlbGYgdmlkZW9F
bGVtZW50UmVjdF0sIGVuZEZyYW1lKTsKLQotICAgIC8vIENyZWF0ZSBhIGJsYWNrIHdpbmRvdyBp
ZiBuZWVkZWQKLSAgICBpZiAoIV9iYWNrZ3JvdW5kRnVsbHNjcmVlbldpbmRvdykKLSAgICAgICAg
X2JhY2tncm91bmRGdWxsc2NyZWVuV2luZG93ID0gY3JlYXRlQmFja2dyb3VuZEZ1bGxzY3JlZW5X
aW5kb3coW3NjcmVlbiBmcmFtZV0sIFtbc2VsZiB3aW5kb3ddIGxldmVsXS0xKTsKLSAgICBlbHNl
Ci0gICAgICAgIFtfYmFja2dyb3VuZEZ1bGxzY3JlZW5XaW5kb3cgc2V0RnJhbWU6W3NjcmVlbiBm
cmFtZV0gZGlzcGxheTpOT107Ci0KLSAgICBbc2VsZiBzZXR1cEZhZGVBbmltYXRpb25JZk5lZWRl
ZEFuZEZhZGVJbjpZRVNdOwotICAgIGlmIChfZm9yY2VEaXNhYmxlQW5pbWF0aW9uKSB7Ci0gICAg
ICAgIC8vIFRoaXMgd2lsbCBkaXNhYmxlIHNjYWxlIGFuaW1hdGlvbgotICAgICAgICBmcmFtZSA9
IE5TWmVyb1JlY3Q7Ci0gICAgfQotICAgIFtbc2VsZiBmdWxsc2NyZWVuV2luZG93XSBhbmltYXRl
RnJvbVJlY3Q6ZnJhbWUgdG9SZWN0OmVuZEZyYW1lIHdpdGhTdWJBbmltYXRpb246X2ZhZGVBbmlt
YXRpb24gY29udHJvbGxlckFjdGlvbjpAc2VsZWN0b3Iod2luZG93RGlkRW50ZXJGdWxsc2NyZWVu
KV07Ci0KLSAgICBbX2JhY2tncm91bmRGdWxsc2NyZWVuV2luZG93IG9yZGVyV2luZG93Ok5TV2lu
ZG93QmVsb3cgcmVsYXRpdmVUbzpbW3NlbGYgZnVsbHNjcmVlbldpbmRvd10gd2luZG93TnVtYmVy
XV07Ci19Ci0KLS0gKHZvaWQpZXhpdEZ1bGxzY3JlZW4KLXsKLSAgICBpZiAoX2lzRW5kaW5nRnVs
bHNjcmVlbikKLSAgICAgICAgcmV0dXJuOwotICAgIF9pc0VuZGluZ0Z1bGxzY3JlZW4gPSBZRVM7
Ci0gICAgW19odWRDb250cm9sbGVyIGNsb3NlV2luZG93XTsKLQotICAgIE5TUmVjdCBlbmRGcmFt
ZSA9IFtzZWxmIHZpZGVvRWxlbWVudFJlY3RdOwotCi0gICAgW3NlbGYgc2V0dXBGYWRlQW5pbWF0
aW9uSWZOZWVkZWRBbmRGYWRlSW46Tk9dOwotICAgIGlmIChfZm9yY2VEaXNhYmxlQW5pbWF0aW9u
KSB7Ci0gICAgICAgIC8vIFRoaXMgd2lsbCBkaXNhYmxlIHNjYWxlIGFuaW1hdGlvbgotICAgICAg
ICBlbmRGcmFtZSA9IE5TWmVyb1JlY3Q7Ci0gICAgfQotICAgIAotICAgIC8vIFdlIGhhdmUgdG8g
cmV0YWluIG91cnNlbHZlcyBiZWNhdXNlIHdlIHdhbnQgdG8gYmUgYWxpdmUgZm9yIHRoZSBlbmQg
b2YgdGhlIGFuaW1hdGlvbi4KLSAgICAvLyBJZiBvdXIgb3duZXIgcmVsZWFzZXMgdXMgd2UgY291
bGQgY3Jhc2ggaWYgdGhpcyBpcyBub3QgdGhlIGNhc2UuCi0gICAgLy8gQmFsYW5jZWQgaW4gd2lu
ZG93RGlkRXhpdEZ1bGxzY3JlZW4KLSAgICBbc2VsZiByZXRhaW5dOyAgICAKLQotICAgIE5TUmVj
dCBzdGFydEZyYW1lID0gW1tzZWxmIHdpbmRvd10gZnJhbWVdOwotICAgIGVuZEZyYW1lID0gZnJh
bWVFeHBhbmRlZFRvUmF0aW9PZkZyYW1lKGVuZEZyYW1lLCBzdGFydEZyYW1lKTsKLQotICAgIFtb
c2VsZiBmdWxsc2NyZWVuV2luZG93XSBhbmltYXRlRnJvbVJlY3Q6c3RhcnRGcmFtZSB0b1JlY3Q6
ZW5kRnJhbWUgd2l0aFN1YkFuaW1hdGlvbjpfZmFkZUFuaW1hdGlvbiBjb250cm9sbGVyQWN0aW9u
OkBzZWxlY3Rvcih3aW5kb3dEaWRFeGl0RnVsbHNjcmVlbildOworICAgICAgICBbc2VsZiBfcmVx
dWVzdEV4aXRdOwogfQogCi0tICh2b2lkKWFwcGxpY2F0aW9uRGlkQ2hhbmdlU2NyZWVuUGFyYW1l
dGVyczooTlNOb3RpZmljYXRpb24qKW5vdGlmaWNhdGlvbgotewotICAgIFVOVVNFRF9QQVJBTShu
b3RpZmljYXRpb24pOwotICAgIC8vIFRoZSB1c2VyIG1heSBoYXZlIGNoYW5nZWQgdGhlIG1haW4g
c2NyZWVuIGJ5IG1vdmluZyB0aGUgbWVudSBiYXIsIG9yIHRoZXkgbWF5IGhhdmUgY2hhbmdlZAot
ICAgIC8vIHRoZSBEb2NrJ3Mgc2l6ZSBvciBsb2NhdGlvbiwgb3IgdGhleSBtYXkgaGF2ZSBjaGFu
Z2VkIHRoZSBmdWxsc2NyZWVuIHNjcmVlbidzIGRpbWVuc2lvbnMuICAKLSAgICAvLyBVcGRhdGUg
b3VyIHByZXNlbnRhdGlvbiBwYXJhbWV0ZXJzLCBhbmQgZW5zdXJlIHRoYXQgdGhlIGZ1bGwgc2Ny
ZWVuIHdpbmRvdyBvY2N1cGllcyB0aGUgCi0gICAgLy8gZW50aXJlIHNjcmVlbjoKLSAgICBbc2Vs
ZiB1cGRhdGVNZW51QW5kRG9ja0ZvckZ1bGxzY3JlZW5dOwotICAgIFtbc2VsZiB3aW5kb3ddIHNl
dEZyYW1lOltbW3NlbGYgd2luZG93XSBzY3JlZW5dIGZyYW1lXSBkaXNwbGF5OllFU107Ci19Ci0K
LS0gKHZvaWQpdXBkYXRlTWVudUFuZERvY2tGb3JGdWxsc2NyZWVuCi17Ci0gICAgLy8gTlNBcHBs
aWNhdGlvblByZXNlbnRhdGlvbk9wdGlvbnMgaXMgYXZhaWxhYmxlIG9uID4gMTAuNiBvbmx5Ogot
ICAgIE5TQXBwbGljYXRpb25QcmVzZW50YXRpb25PcHRpb25zIG9wdGlvbnMgPSBOU0FwcGxpY2F0
aW9uUHJlc2VudGF0aW9uRGVmYXVsdDsKLSAgICBOU1NjcmVlbiogZnVsbHNjcmVlblNjcmVlbiA9
IFtbc2VsZiB3aW5kb3ddIHNjcmVlbl07Ci0KLSAgICBpZiAoIV9pc0VuZGluZ0Z1bGxzY3JlZW4p
IHsKLSAgICAgICAgLy8gQXV0by1oaWRlIHRoZSBtZW51IGJhciBpZiB0aGUgZnVsbHNjcmVlblNj
cmVlbiBjb250YWlucyB0aGUgbWVudSBiYXI6Ci0gICAgICAgIC8vIE5PVEU6IGlmIHRoZSBmdWxs
c2NyZWVuU2NyZWVuIGNvbnRhaW5zIHRoZSBtZW51IGJhciBidXQgbm90IHRoZSBkb2NrLCB3ZSBt
dXN0IHN0aWxsIAotICAgICAgICAvLyBhdXRvLWhpZGUgdGhlIGRvY2ssIG9yIGFuIGV4Y2VwdGlv
biB3aWxsIGJlIHRocm93bi4KLSAgICAgICAgaWYgKFtbTlNTY3JlZW4gc2NyZWVuc10gb2JqZWN0
QXRJbmRleDowXSA9PSBmdWxsc2NyZWVuU2NyZWVuKQotICAgICAgICAgICAgb3B0aW9ucyB8PSAo
TlNBcHBsaWNhdGlvblByZXNlbnRhdGlvbkF1dG9IaWRlTWVudUJhciB8IE5TQXBwbGljYXRpb25Q
cmVzZW50YXRpb25BdXRvSGlkZURvY2spOwotICAgICAgICAvLyBDaGVjayBpZiB0aGUgY3VycmVu
dCBzY3JlZW4gY29udGFpbnMgdGhlIGRvY2sgYnkgY29tcGFyaW5nIHRoZSBzY3JlZW4ncyBmcmFt
ZSB0byBpdHMKLSAgICAgICAgLy8gdmlzaWJsZUZyYW1lOyBpZiBhIGRvY2sgaXMgcHJlc2VudCwg
dGhlIHZpc2libGVGcmFtZSB3aWxsIGRpZmZlci4gSWYgdGhlIGN1cnJlbnQgc2NyZWVuCi0gICAg
ICAgIC8vIGNvbnRhaW5zIHRoZSBkb2NrLCBoaWRlIGl0LgotICAgICAgICBlbHNlIGlmICghTlNF
cXVhbFJlY3RzKFtmdWxsc2NyZWVuU2NyZWVuIGZyYW1lXSwgW2Z1bGxzY3JlZW5TY3JlZW4gdmlz
aWJsZUZyYW1lXSkpCi0gICAgICAgICAgICBvcHRpb25zIHw9IE5TQXBwbGljYXRpb25QcmVzZW50
YXRpb25BdXRvSGlkZURvY2s7Ci0gICAgfQotCi0gICAgTlNBcHAucHJlc2VudGF0aW9uT3B0aW9u
cyA9IG9wdGlvbnM7Ci19Ci0KLS8vIE1BUks6IC0KLS8vIE1BUks6IFdpbmRvdyBjYWxsYmFjawot
CiAtICh2b2lkKV9yZXF1ZXN0RXhpdAogewotICAgIGlmIChfdmlkZW9FbGVtZW50KQotICAgICAg
ICBfdmlkZW9FbGVtZW50LT5leGl0RnVsbHNjcmVlbigpOwotICAgIF9mb3JjZURpc2FibGVBbmlt
YXRpb24gPSBOTzsKLX0KLQotLSAodm9pZClyZXF1ZXN0RXhpdEZ1bGxzY3JlZW5XaXRoQW5pbWF0
aW9uOihCT09MKWFuaW1hdGlvbgotewotICAgIGlmIChfaXNFbmRpbmdGdWxsc2NyZWVuKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBfZm9yY2VEaXNhYmxlQW5pbWF0aW9uID0gIWFuaW1hdGlvbjsK
LSAgICBbc2VsZiBwZXJmb3JtU2VsZWN0b3I6QHNlbGVjdG9yKF9yZXF1ZXN0RXhpdCkgd2l0aE9i
amVjdDpuaWwgYWZ0ZXJEZWxheTowXTsKLQorICAgIFtzZWxmLmZ1bGxzY3JlZW5XaW5kb3cgZXhp
dEZ1bGxTY3JlZW5Nb2RlOnNlbGZdOwogfQogCi0tICh2b2lkKXJlcXVlc3RFeGl0RnVsbHNjcmVl
bgorLSAodm9pZClfcmVxdWVzdEVudGVyCiB7Ci0gICAgW3NlbGYgcmVxdWVzdEV4aXRGdWxsc2Ny
ZWVuV2l0aEFuaW1hdGlvbjpZRVNdOworICAgIGlmIChfdmlkZW9FbGVtZW50KQorICAgICAgICBf
dmlkZW9FbGVtZW50LT5lbnRlckZ1bGxzY3JlZW4oKTsKIH0KIAotLSAodm9pZClmYWRlSFVESW4K
Ky0gKHZvaWQpY2FuY2VsT3BlcmF0aW9uOihpZClzZW5kZXIKIHsKLSAgICBbX2h1ZENvbnRyb2xs
ZXIgZmFkZVdpbmRvd0luXTsKKyAgICBbc2VsZiBfcmVxdWVzdEV4aXRdOwogfQogCi0tICh2b2lk
KW9ic2VydmVWYWx1ZUZvcktleVBhdGg6KE5TU3RyaW5nICopa2V5UGF0aCBvZk9iamVjdDooaWQp
b2JqZWN0IGNoYW5nZTooTlNEaWN0aW9uYXJ5ICopY2hhbmdlIGNvbnRleHQ6KHZvaWQgKiljb250
ZXh0CistIChCT09MKXBsYXllclZpZXdJc0Z1bGxTY3JlZW46KFdlYkFWUGxheWVyVmlldyopcGxh
eWVyVmlldwogewotICAgIFVOVVNFRF9QQVJBTShvYmplY3QpOwotICAgIFVOVVNFRF9QQVJBTShj
aGFuZ2UpOwotICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsKLQotICAgIGlmIChba2V5UGF0aCBp
c0VxdWFsVG86QCJyYXRlIl0pCi0gICAgICAgIFtzZWxmIHJhdGVDaGFuZ2VkOm5pbF07CisgICAg
cmV0dXJuIF9pc0Z1bGxTY3JlZW47CiB9CiAKLS0gKHZvaWQpcmF0ZUNoYW5nZWQ6KE5TTm90aWZp
Y2F0aW9uICopdW51c2VkTm90aWZpY2F0aW9uCistICh2b2lkKXBsYXllclZpZXdSZXF1ZXN0RW50
ZXJGdWxsc2NyZWVuOihBVlBsYXllclZpZXcqKXBsYXllclZpZXcKIHsKLSAgICBVTlVTRURfUEFS
QU0odW51c2VkTm90aWZpY2F0aW9uKTsKLSAgICBbX2h1ZENvbnRyb2xsZXIgdXBkYXRlUmF0ZV07
CisgICAgW3NlbGYgX3JlcXVlc3RFbnRlcl07CiB9CiAKLUBlbmQKLQotQGltcGxlbWVudGF0aW9u
IFdlYlZpZGVvRnVsbHNjcmVlbldpbmRvdwotCi0tIChpZClpbml0V2l0aENvbnRlbnRSZWN0OihO
U1JlY3QpY29udGVudFJlY3Qgc3R5bGVNYXNrOihOU1VJbnRlZ2VyKWFTdHlsZSBiYWNraW5nOihO
U0JhY2tpbmdTdG9yZVR5cGUpYnVmZmVyaW5nVHlwZSBkZWZlcjooQk9PTClmbGFnCistICh2b2lk
KXBsYXllclZpZXdSZXF1ZXN0RXhpdEZ1bGxzY3JlZW46KEFWUGxheWVyVmlldyopcGxheWVyVmll
dwogewotICAgIFVOVVNFRF9QQVJBTShhU3R5bGUpOwotICAgIHNlbGYgPSBbc3VwZXIgaW5pdFdp
dGhDb250ZW50UmVjdDpjb250ZW50UmVjdCBzdHlsZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFz
ayBiYWNraW5nOmJ1ZmZlcmluZ1R5cGUgZGVmZXI6ZmxhZ107Ci0gICAgaWYgKCFzZWxmKQotICAg
ICAgICByZXR1cm4gbmlsOwotICAgIFtzZWxmIHNldE9wYXF1ZTpOT107Ci0gICAgW3NlbGYgc2V0
QmFja2dyb3VuZENvbG9yOltOU0NvbG9yIGNsZWFyQ29sb3JdXTsKLSAgICBbc2VsZiBzZXRJZ25v
cmVzTW91c2VFdmVudHM6Tk9dOwotICAgIFtzZWxmIHNldEFjY2VwdHNNb3VzZU1vdmVkRXZlbnRz
OllFU107Ci0gICAgcmV0dXJuIHNlbGY7CisgICAgW3NlbGYgX3JlcXVlc3RFeGl0XTsKIH0KIAot
LSAodm9pZClkZWFsbG9jCistIChudWxsYWJsZSBOU0FycmF5PE5TV2luZG93ICo+ICopY3VzdG9t
V2luZG93c1RvRW50ZXJGdWxsU2NyZWVuRm9yV2luZG93OihOU1dpbmRvdyAqKXdpbmRvdwogewot
ICAgIEFTU0VSVCghX2Z1bGxzY3JlZW5BbmltYXRpb24pOwotICAgIFtzdXBlciBkZWFsbG9jXTsK
KyAgICByZXR1cm4gQFtzZWxmLmZ1bGxzY3JlZW5XaW5kb3ddOwogfQogCi0tIChCT09MKXJlc2ln
bkZpcnN0UmVzcG9uZGVyCistICh2b2lkKXdpbmRvdzooTlNXaW5kb3cgKil3aW5kb3cgc3RhcnRD
dXN0b21BbmltYXRpb25Ub0VudGVyRnVsbFNjcmVlbldpdGhEdXJhdGlvbjooTlNUaW1lSW50ZXJ2
YWwpZHVyYXRpb24KIHsKLSAgICByZXR1cm4gTk87CisgICAgW05TQW5pbWF0aW9uQ29udGV4dCBy
dW5BbmltYXRpb25Hcm91cDpeKE5TQW5pbWF0aW9uQ29udGV4dCAqY29udGV4dCkgeworICAgICAg
ICBjb250ZXh0LmFsbG93c0ltcGxpY2l0QW5pbWF0aW9uID0gWUVTOworICAgICAgICBjb250ZXh0
LmR1cmF0aW9uID0gZHVyYXRpb247CisgICAgICAgIFt3aW5kb3cgc2V0RnJhbWU6d2luZG93LnNj
cmVlbi5mcmFtZSBkaXNwbGF5OllFU107CisgICAgfSBjb21wbGV0aW9uSGFuZGxlcjpOVUxMXTsK
IH0KIAotLSAoQk9PTCljYW5CZWNvbWVLZXlXaW5kb3cKKy0gKG51bGxhYmxlIE5TQXJyYXk8TlNX
aW5kb3cgKj4gKiljdXN0b21XaW5kb3dzVG9FeGl0RnVsbFNjcmVlbkZvcldpbmRvdzooTlNXaW5k
b3cgKil3aW5kb3cKIHsKLSAgICByZXR1cm4gTk87CisgICAgcmV0dXJuIEBbc2VsZi5mdWxsc2Ny
ZWVuV2luZG93XTsKIH0KIAotLSAodm9pZCltb3VzZURvd246KE5TRXZlbnQgKilldmVudAorLSAo
dm9pZCl3aW5kb3c6KE5TV2luZG93ICopd2luZG93IHN0YXJ0Q3VzdG9tQW5pbWF0aW9uVG9FeGl0
RnVsbFNjcmVlbldpdGhEdXJhdGlvbjooTlNUaW1lSW50ZXJ2YWwpZHVyYXRpb24KIHsKLSAgICBV
TlVTRURfUEFSQU0oZXZlbnQpOworICAgIFtOU0FuaW1hdGlvbkNvbnRleHQgcnVuQW5pbWF0aW9u
R3JvdXA6XihOU0FuaW1hdGlvbkNvbnRleHQgKmNvbnRleHQpIHsKKyAgICAgICAgY29udGV4dC5h
bGxvd3NJbXBsaWNpdEFuaW1hdGlvbiA9IFlFUzsKKyAgICAgICAgY29udGV4dC5kdXJhdGlvbiA9
IGR1cmF0aW9uOworICAgICAgICBbd2luZG93IHNldEZyYW1lOnNlbGYudmlkZW9FbGVtZW50UmVj
dCBkaXNwbGF5OllFU107CisgICAgfSBjb21wbGV0aW9uSGFuZGxlcjpOVUxMXTsKIH0KIAotLSAo
dm9pZCljYW5jZWxPcGVyYXRpb246KGlkKXNlbmRlcgorLSAodm9pZCl3aW5kb3dEaWRFbnRlckZ1
bGxTY3JlZW46KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCiB7Ci0gICAgVU5VU0VEX1BB
UkFNKHNlbmRlcik7Ci0gICAgW1tzZWxmIHdpbmRvd0NvbnRyb2xsZXJdIHJlcXVlc3RFeGl0RnVs
bHNjcmVlbl07CisgICAgX3BsYXllclZpZXcuY29udHJvbHNTdHlsZSA9IEFWUGxheWVyVmlld0Nv
bnRyb2xzU3R5bGVGbG9hdGluZzsKKyAgICBbX3BsYXllclZpZXcgd2lsbENoYW5nZVZhbHVlRm9y
S2V5OkAiaXNGdWxsU2NyZWVuIl07CisgICAgX2lzRnVsbFNjcmVlbiA9IFlFUzsKKyAgICBbX3Bs
YXllclZpZXcgZGlkQ2hhbmdlVmFsdWVGb3JLZXk6QCJpc0Z1bGxTY3JlZW4iXTsKIH0KIAotLSAo
dm9pZClhbmltYXRlZFJlc2l6ZURpZEVuZAorLSAodm9pZCl3aW5kb3dXaWxsRXhpdEZ1bGxTY3Jl
ZW46KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCiB7Ci0gICAgaWYgKF9jb250cm9sbGVy
QWN0aW9uT25BbmltYXRpb25FbmQpCi0gICAgICAgIFtbc2VsZiB3aW5kb3dDb250cm9sbGVyXSBw
ZXJmb3JtU2VsZWN0b3I6X2NvbnRyb2xsZXJBY3Rpb25PbkFuaW1hdGlvbkVuZF07Ci0gICAgX2Nv
bnRyb2xsZXJBY3Rpb25PbkFuaW1hdGlvbkVuZCA9IE5VTEw7CisgICAgX3BsYXllclZpZXcuY29u
dHJvbHNTdHlsZSA9IEFWUGxheWVyVmlld0NvbnRyb2xzU3R5bGVOb25lOwogfQogCi0vLwotLy8g
VGhpcyBmdW5jdGlvbiB3aWxsIGFuaW1hdGUgYSBjaGFuZ2Ugb2YgZnJhbWUgcmVjdGFuZ2xlCi0v
LyBXZSBzdXBwb3J0IHF1ZXVpbmcgYW5pbWF0aW9uLCB0aGF0IG1lYW5zIHRoYXQgd2UnbGwgY29y
cmVjdGx5Ci0vLyBpbnRlcnJ1cHQgdGhlIHJ1bm5pbmcgYW5pbWF0aW9uLCBhbmQgcXVldWUgdGhl
IG5leHQgb25lLgotLy8KLS0gKHZvaWQpYW5pbWF0ZUZyb21SZWN0OihOU1JlY3Qpc3RhcnRSZWN0
IHRvUmVjdDooTlNSZWN0KWVuZFJlY3Qgd2l0aFN1YkFuaW1hdGlvbjooTlNBbmltYXRpb24gKilz
dWJBbmltYXRpb24gY29udHJvbGxlckFjdGlvbjooU0VMKWNvbnRyb2xsZXJBY3Rpb24KKy0gKHZv
aWQpd2luZG93RGlkRXhpdEZ1bGxTY3JlZW46KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9u
CiB7Ci0gICAgX2NvbnRyb2xsZXJBY3Rpb25PbkFuaW1hdGlvbkVuZCA9IGNvbnRyb2xsZXJBY3Rp
b247Ci0KLSAgICBCT09MIHdhc0FuaW1hdGluZyA9IE5POwotICAgIGlmIChfZnVsbHNjcmVlbkFu
aW1hdGlvbikgewotICAgICAgICB3YXNBbmltYXRpbmcgPSBZRVM7CisgICAgW19wbGF5ZXJWaWV3
IHdpbGxDaGFuZ2VWYWx1ZUZvcktleTpAImlzRnVsbFNjcmVlbiJdOworICAgIF9pc0Z1bGxTY3Jl
ZW4gPSBOTzsKKyAgICBbX3BsYXllclZpZXcgZGlkQ2hhbmdlVmFsdWVGb3JLZXk6QCJpc0Z1bGxT
Y3JlZW4iXTsKIAotICAgICAgICAvLyBJbnRlcnJ1cHQgYW55IHJ1bm5pbmcgYW5pbWF0aW9uLgot
ICAgICAgICBbX2Z1bGxzY3JlZW5BbmltYXRpb24gc3RvcEFuaW1hdGlvbl07Ci0KLSAgICAgICAg
Ly8gU2F2ZSB0aGUgY3VycmVudCByZWN0IHRvIGVuc3VyZSBhIHNtb290aCB0cmFuc2l0aW9uLgot
ICAgICAgICBzdGFydFJlY3QgPSBbX2Z1bGxzY3JlZW5BbmltYXRpb24gY3VycmVudEZyYW1lXTsK
LSAgICAgICAgW19mdWxsc2NyZWVuQW5pbWF0aW9uIHJlbGVhc2VdOwotICAgICAgICBfZnVsbHNj
cmVlbkFuaW1hdGlvbiA9IG5pbDsKLSAgICB9Ci0gICAgCi0gICAgaWYgKE5TSXNFbXB0eVJlY3Qo
c3RhcnRSZWN0KSB8fCBOU0lzRW1wdHlSZWN0KGVuZFJlY3QpKSB7Ci0gICAgICAgIC8vIEZha2Vs
eSBlbmQgdGhlIHN1YmFuaW1hdGlvbi4KLSAgICAgICAgW3N1YkFuaW1hdGlvbiBzZXRDdXJyZW50
UHJvZ3Jlc3M6MV07Ci0gICAgICAgIC8vIEFuZCByZW1vdmUgdGhlIHdlYWsgbGluayB0byB0aGUg
d2luZG93LgotICAgICAgICBbc3ViQW5pbWF0aW9uIHN0b3BBbmltYXRpb25dOwotCi0gICAgICAg
IFtzZWxmIHNldEZyYW1lOmVuZFJlY3QgZGlzcGxheTpOT107Ci0gICAgICAgIFtzZWxmIG1ha2VL
ZXlBbmRPcmRlckZyb250OnNlbGZdOwotICAgICAgICBbc2VsZiBhbmltYXRlZFJlc2l6ZURpZEVu
ZF07CisgICAgaWYgKCFfdmlkZW9FbGVtZW50KSB7CisgICAgICAgIFtzZWxmLmZ1bGxzY3JlZW5X
aW5kb3cgY2xvc2VdOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCF3YXNBbmlt
YXRpbmcpIHsKLSAgICAgICAgLy8gV2UnbGwgZG93bnNjYWxlIHRoZSB3aW5kb3cgZHVyaW5nIHRo
ZSBhbmltYXRpb24gYmFzZWQgb24gdGhlIGhpZ2hlciByZXNvbHV0aW9uIHJlY3QKLSAgICAgICAg
Qk9PTCBoaWdoZXJSZXNvbHV0aW9uSXNFbmRSZWN0ID0gc3RhcnRSZWN0LnNpemUud2lkdGggPCBl
bmRSZWN0LnNpemUud2lkdGggJiYgc3RhcnRSZWN0LnNpemUuaGVpZ2h0IDwgZW5kUmVjdC5zaXpl
LmhlaWdodDsKLSAgICAgICAgW3NlbGYgc2V0RnJhbWU6aGlnaGVyUmVzb2x1dGlvbklzRW5kUmVj
dCA/IGVuZFJlY3QgOiBzdGFydFJlY3QgZGlzcGxheTpOT107Ci0gICAgfQotICAgIAotICAgIEFT
U0VSVCghX2Z1bGxzY3JlZW5BbmltYXRpb24pOwotICAgIF9mdWxsc2NyZWVuQW5pbWF0aW9uID0g
W1tXZWJXaW5kb3dTY2FsZUFuaW1hdGlvbiBhbGxvY10gaW5pdFdpdGhIaW50ZWREdXJhdGlvbjow
LjIgd2luZG93OnNlbGYgaW5pdGFsRnJhbWU6c3RhcnRSZWN0IGZpbmFsRnJhbWU6ZW5kUmVjdF07
Ci0gICAgW19mdWxsc2NyZWVuQW5pbWF0aW9uIHNldFN1YkFuaW1hdGlvbjpzdWJBbmltYXRpb25d
OwotICAgIFtfZnVsbHNjcmVlbkFuaW1hdGlvbiBzZXREZWxlZ2F0ZTpzZWxmXTsKLSAgICAKLSAg
ICAvLyBNYWtlIHN1cmUgdGhlIGFuaW1hdGlvbiBoYXMgc2NhbGVkIHRoZSB3aW5kb3cgYmVmb3Jl
IHNob3dpbmcgaXQuCi0gICAgW19mdWxsc2NyZWVuQW5pbWF0aW9uIHNldEN1cnJlbnRQcm9ncmVz
czowXTsKLSAgICBbc2VsZiBtYWtlS2V5QW5kT3JkZXJGcm9udDpzZWxmXTsKLQotICAgIFtfZnVs
bHNjcmVlbkFuaW1hdGlvbiBzdGFydEFuaW1hdGlvbl07Ci19Ci0KLS0gKHZvaWQpYW5pbWF0aW9u
RGlkRW5kOihOU0FuaW1hdGlvbiAqKWFuaW1hdGlvbgotewotICAgIGlmICghW05TVGhyZWFkIGlz
TWFpblRocmVhZF0pIHsKLSAgICAgICAgW3NlbGYgcGVyZm9ybVNlbGVjdG9yT25NYWluVGhyZWFk
OkBzZWxlY3RvcihhbmltYXRpb25EaWRFbmQ6KSB3aXRoT2JqZWN0OmFuaW1hdGlvbiB3YWl0VW50
aWxEb25lOk5PXTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoYW5pbWF0aW9uICE9
IF9mdWxsc2NyZWVuQW5pbWF0aW9uKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBUaGUgYW5p
bWF0aW9uIGlzIG5vdCByZWFsbHkgb3ZlciBhbmQgd2FzIGludGVycnVwdGVkCi0gICAgLy8gRG9u
J3Qgc2VuZCBjb21wbGV0aW9uIGV2ZW50cy4KLSAgICBpZiAoW2FuaW1hdGlvbiBjdXJyZW50UHJv
Z3Jlc3NdIDwgMS4wKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBFbnN1cmUgdGhhdCBhbmlt
YXRpb24gKGFuZCBzdWJhbmltYXRpb24pIGRvbid0IGtlZXAKLSAgICAvLyB0aGUgd2VhayByZWZl
cmVuY2UgdG8gdGhlIHdpbmRvdyBpdmFyIHRoYXQgbWF5IGJlIGRlc3Ryb3llZCBmcm9tCi0gICAg
Ly8gbm93IG9uLgotICAgIFtfZnVsbHNjcmVlbkFuaW1hdGlvbiBzZXRXaW5kb3c6bmlsXTsKLQot
ICAgIFtfZnVsbHNjcmVlbkFuaW1hdGlvbiBhdXRvcmVsZWFzZV07Ci0gICAgX2Z1bGxzY3JlZW5B
bmltYXRpb24gPSBuaWw7Ci0KLSAgICBbc2VsZiBhbmltYXRlZFJlc2l6ZURpZEVuZF07Ci19Ci0K
LS0gKHZvaWQpbW91c2VNb3ZlZDooTlNFdmVudCAqKWV2ZW50Ci17Ci0gICAgVU5VU0VEX1BBUkFN
KGV2ZW50KTsKLSAgICBbW3NlbGYgd2luZG93Q29udHJvbGxlcl0gZmFkZUhVREluXTsKKyAgICBb
TlNBbmltYXRpb25Db250ZXh0IGJlZ2luR3JvdXBpbmddOworICAgIF92aWRlb0VsZW1lbnQtPnNl
dFZpZGVvRnVsbHNjcmVlbkxheWVyKG5pbCwgW3NlbGYsIHByb3RlY3RlZFNlbGYgPSByZXRhaW5Q
dHIoc2VsZildIHsKKyAgICAgICAgW3NlbGYuZnVsbHNjcmVlbldpbmRvdyBjbG9zZV07CisgICAg
ICAgIFtOU0FuaW1hdGlvbkNvbnRleHQgZW5kR3JvdXBpbmddOworICAgIH0pOworICAgIF92aWRl
b0VsZW1lbnQtPmV4aXRGdWxsc2NyZWVuKCk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29u
dHJvbGxlci5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWRlb0Z1bGxz
Y3JlZW5IVURXaW5kb3dDb250cm9sbGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGZmMTg0YWQ0MTA2ZmMxNzhiNjcyNjY1OTI1ZmI3YmRmZWFiYzUyZDUuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw3MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmIEVOQUJMRShWSURFTykKLQot
I2ltcG9ydCA8QXBwS2l0L05TQnV0dG9uLmg+Ci0jaW1wb3J0IDxBcHBLaXQvTlNDb250cm9sLmg+
Ci0jaW1wb3J0IDxBcHBLaXQvTlNUZXh0RmllbGQuaD4KLSNpbXBvcnQgPEFwcEtpdC9OU1RyYWNr
aW5nQXJlYS5oPgotI2ltcG9ydCA8QXBwS2l0L05TV2luZG93Lmg+Ci0jaW1wb3J0IDxBcHBLaXQv
TlNXaW5kb3dDb250cm9sbGVyLmg+Ci0jaW1wb3J0IDx3dGYvTmFrZWRQdHIuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotY2xhc3MgSFRNTFZpZGVvRWxlbWVudDsKLX0KLQotQHByb3RvY29sIFdl
YlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXJEZWxlZ2F0ZTsKLQotQGludGVyZmFj
ZSBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyIDogTlNXaW5kb3dDb250cm9s
bGVyIHsKLSAgICBpZCA8V2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlckRlbGVn
YXRlPiBfZGVsZWdhdGU7Ci0gICAgTlNUaW1lciAqX3RpbWVsaW5lVXBkYXRlVGltZXI7Ci0gICAg
TlNUcmFja2luZ0FyZWEgKl9hcmVhOwotICAgIEJPT0wgX21vdXNlSXNJbkhVRDsKLSAgICBCT09M
IF9pc0VuZGluZ0Z1bGxzY3JlZW47Ci0gICAgQk9PTCBfaXNTY3J1YmJpbmc7Ci0KLSAgICBOU0Nv
bnRyb2wgKl90aW1lbGluZTsKLSAgICBOU1RleHRGaWVsZCAqX3JlbWFpbmluZ1RpbWVUZXh0Owot
ICAgIE5TVGV4dEZpZWxkICpfZWxhcHNlZFRpbWVUZXh0OwotICAgIE5TQ29udHJvbCAqX3ZvbHVt
ZVNsaWRlcjsKLSAgICBOU0J1dHRvbiAqX3BsYXlCdXR0b247Ci19Ci0KLS0gKGlkIDxXZWJWaWRl
b0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyRGVsZWdhdGU+KWRlbGVnYXRlOwotLSAodm9p
ZClzZXREZWxlZ2F0ZTooaWQgPFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXJE
ZWxlZ2F0ZT4pZGVsZWdhdGU7Ci0tICh2b2lkKWZhZGVXaW5kb3dJbjsKLS0gKHZvaWQpZmFkZVdp
bmRvd091dDsKLS0gKHZvaWQpY2xvc2VXaW5kb3c7Ci0tICh2b2lkKXVwZGF0ZVJhdGU7Ci0KLUBl
bmQKLQotQHByb3RvY29sIFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXJEZWxl
Z2F0ZSA8TlNPYmplY3Q+Ci0tICh2b2lkKXJlcXVlc3RFeGl0RnVsbHNjcmVlbjsKLS0gKE5ha2Vk
UHRyPFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ+KXZpZGVvRWxlbWVudDsKLUBlbmQKLQotI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZGVv
RnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW0KZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlN2U0YTI4YTA4YmExOTgyOThhMWQ4NDgyNjAyYmY3
YjVmMmIxOGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5k
b3dDb250cm9sbGVyLm1tCisrKyAvZGV2L251bGwKQEAgLTEsNzM3ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
Ci0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2lmIEVOQUJMRShWSURFTykgJiYgUExBVEZPUk0oTUFDKQotCi0jaW1wb3J0ICJXZWJW
aWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLmgiCi0KLSNpbXBvcnQgPFdlYkNvcmUv
RmxvYXRDb252ZXJzaW9uLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0hUTUxWaWRlb0VsZW1lbnQuaD4K
LSNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+Ci0jaW1wb3J0IDxwYWwvc3Bp
L21hYy9RVEtpdFNQSS5oPgotI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+Ci0KLVNPRlRfTElO
S19GUkFNRVdPUktfT1BUSU9OQUwoUVRLaXQpCi0KLVNPRlRfTElOS19DTEFTU19PUFRJT05BTChR
VEtpdCwgUVRIVURCYWNrZ3JvdW5kVmlldykKLVNPRlRfTElOS19DTEFTU19PUFRJT05BTChRVEtp
dCwgUVRIVURCdXR0b24pCi1TT0ZUX0xJTktfQ0xBU1NfT1BUSU9OQUwoUVRLaXQsIFFUSFVEU2xp
ZGVyKQotU09GVF9MSU5LX0NMQVNTX09QVElPTkFMKFFUS2l0LCBRVEhVRFRpbWVsaW5lKQotCi0j
ZGVmaW5lIFFUSFVEQmFja2dyb3VuZFZpZXcgZ2V0UVRIVURCYWNrZ3JvdW5kVmlld0NsYXNzKCkK
LSNkZWZpbmUgUVRIVURCdXR0b24gZ2V0UVRIVURCdXR0b25DbGFzcygpCi0jZGVmaW5lIFFUSFVE
U2xpZGVyIGdldFFUSFVEU2xpZGVyQ2xhc3MoKQotI2RlZmluZSBRVEhVRFRpbWVsaW5lIGdldFFU
SFVEVGltZWxpbmVDbGFzcygpCi0KLWVudW0gY2xhc3MgTWVkaWFVSUNvbnRyb2wgewotICAgIFRp
bWVsaW5lLAotICAgIFNsaWRlciwKLSAgICBQbGF5UGF1c2VCdXR0b24sCi0gICAgRXhpdEZ1bGxz
Y3JlZW5CdXR0b24sCi0gICAgUmV3aW5kQnV0dG9uLAotICAgIEZhc3RGb3J3YXJkQnV0dG9uLAot
ICAgIFZvbHVtZVVwQnV0dG9uLAotICAgIFZvbHVtZURvd25CdXR0b24sCi19OwotCi11c2luZyBX
ZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OwotdXNpbmcgV2ViQ29yZTo6bmFycm93UHJlY2lzaW9u
VG9GbG9hdDsKLQotQGludGVyZmFjZSBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9s
bGVyIChQcml2YXRlKSA8TlNXaW5kb3dEZWxlZ2F0ZT4KLQotLSAodm9pZCl1cGRhdGVUaW1lOwot
LSAodm9pZCl0aW1lbGluZVBvc2l0aW9uQ2hhbmdlZDooaWQpc2VuZGVyOwotLSAoZmxvYXQpY3Vy
cmVudFRpbWU7Ci0tICh2b2lkKXNldEN1cnJlbnRUaW1lOihmbG9hdCljdXJyZW50VGltZTsKLS0g
KGRvdWJsZSlkdXJhdGlvbjsKLQotLSAodm9pZCl2b2x1bWVDaGFuZ2VkOihpZClzZW5kZXI7Ci0t
IChmbG9hdCltYXhWb2x1bWU7Ci0tIChmbG9hdCl2b2x1bWU7Ci0tICh2b2lkKXNldFZvbHVtZToo
ZmxvYXQpdm9sdW1lOwotLSAodm9pZClkZWNyZW1lbnRWb2x1bWU7Ci0tICh2b2lkKWluY3JlbWVu
dFZvbHVtZTsKLQotLSAodm9pZCl1cGRhdGVQbGF5QnV0dG9uOwotLSAodm9pZCl0b2dnbGVQbGF5
aW5nOihpZClzZW5kZXI7Ci0tIChCT09MKXBsYXlpbmc7Ci0tICh2b2lkKXNldFBsYXlpbmc6KEJP
T0wpcGxheWluZzsKLQotLSAodm9pZClyZXdpbmQ6KGlkKXNlbmRlcjsKLS0gKHZvaWQpZmFzdEZv
cndhcmQ6KGlkKXNlbmRlcjsKLQotLSAoTlNTdHJpbmcgKilyZW1haW5pbmdUaW1lVGV4dDsKLS0g
KE5TU3RyaW5nICopZWxhcHNlZFRpbWVUZXh0OwotCi0tICh2b2lkKWV4aXRGdWxsc2NyZWVuOihp
ZClzZW5kZXI7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93
IDogTlNXaW5kb3cKLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIFdlYlZpZGVvRnVsbHNjcmVlbkhV
RFdpbmRvdwotCi0tIChpZClpbml0V2l0aENvbnRlbnRSZWN0OihOU1JlY3QpY29udGVudFJlY3Qg
c3R5bGVNYXNrOihOU1VJbnRlZ2VyKWFTdHlsZSBiYWNraW5nOihOU0JhY2tpbmdTdG9yZVR5cGUp
YnVmZmVyaW5nVHlwZSBkZWZlcjooQk9PTClmbGFnCi17Ci0gICAgVU5VU0VEX1BBUkFNKGFTdHls
ZSk7Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0V2l0aENvbnRlbnRSZWN0OmNvbnRlbnRSZWN0IHN0
eWxlTWFzazpOU1dpbmRvd1N0eWxlTWFza0JvcmRlcmxlc3MgYmFja2luZzpidWZmZXJpbmdUeXBl
IGRlZmVyOmZsYWddOwotICAgIGlmICghc2VsZikKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAg
IFtzZWxmIHNldE9wYXF1ZTpOT107Ci0gICAgW3NlbGYgc2V0QmFja2dyb3VuZENvbG9yOltOU0Nv
bG9yIGNsZWFyQ29sb3JdXTsKLSAgICBbc2VsZiBzZXRMZXZlbDpOU1BvcFVwTWVudVdpbmRvd0xl
dmVsXTsKLSAgICBbc2VsZiBzZXRBY2NlcHRzTW91c2VNb3ZlZEV2ZW50czpZRVNdOwotICAgIFtz
ZWxmIHNldElnbm9yZXNNb3VzZUV2ZW50czpOT107Ci0gICAgW3NlbGYgc2V0TW92YWJsZUJ5V2lu
ZG93QmFja2dyb3VuZDpZRVNdOwotCi0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKEJPT0wpY2Fu
QmVjb21lS2V5V2luZG93Ci17Ci0gICAgcmV0dXJuIFlFUzsKLX0KLQotLSAodm9pZCljYW5jZWxP
cGVyYXRpb246KGlkKXNlbmRlcgotewotICAgIFVOVVNFRF9QQVJBTShzZW5kZXIpOwotICAgIFtb
c2VsZiB3aW5kb3dDb250cm9sbGVyXSBleGl0RnVsbHNjcmVlbjpzZWxmXTsKLX0KLQotLSAodm9p
ZCljZW50ZXIKLXsKLSAgICBOU1JlY3QgaHVkRnJhbWUgPSBbc2VsZiBmcmFtZV07Ci0gICAgTlNS
ZWN0IHNjcmVlbkZyYW1lID0gW1tOU1NjcmVlbiBtYWluU2NyZWVuXSBmcmFtZV07Ci0gICAgW3Nl
bGYgc2V0RnJhbWVUb3BMZWZ0UG9pbnQ6TlNNYWtlUG9pbnQoc2NyZWVuRnJhbWUub3JpZ2luLngg
KyAoc2NyZWVuRnJhbWUuc2l6ZS53aWR0aCAtIGh1ZEZyYW1lLnNpemUud2lkdGgpIC8gMiwgc2Ny
ZWVuRnJhbWUub3JpZ2luLnkgKyAoc2NyZWVuRnJhbWUuc2l6ZS5oZWlnaHQgLSBodWRGcmFtZS5z
aXplLmhlaWdodCkgLyA2KV07Ci19Ci0KLS0gKHZvaWQpa2V5RG93bjooTlNFdmVudCAqKWV2ZW50
Ci17Ci0gICAgW3N1cGVyIGtleURvd246ZXZlbnRdOwotICAgIFtbc2VsZiB3aW5kb3dDb250cm9s
bGVyXSBmYWRlV2luZG93SW5dOwotfQotCi0tIChCT09MKXJlc2lnbkZpcnN0UmVzcG9uZGVyCi17
Ci0gICAgcmV0dXJuIE5POwotfQotCi0tIChCT09MKXBlcmZvcm1LZXlFcXVpdmFsZW50OihOU0V2
ZW50ICopZXZlbnQKLXsKLSAgICAvLyBCbG9jayBhbGwgY29tbWFuZCBrZXkgZXZlbnRzIHdoaWxl
IHRoZSBmdWxsc2NyZWVuIHdpbmRvdyBpcyB1cC4KLSAgICBpZiAoW2V2ZW50IHR5cGVdICE9IE5T
RXZlbnRUeXBlS2V5RG93bikKLSAgICAgICAgcmV0dXJuIE5POwotICAgIAotICAgIGlmICghKFtl
dmVudCBtb2RpZmllckZsYWdzXSAmIE5TRXZlbnRNb2RpZmllckZsYWdDb21tYW5kKSkKLSAgICAg
ICAgcmV0dXJuIE5POwotICAgIHJldHVybiBZRVM7Ci19Ci0KLUBlbmQKLQotc3RhdGljIGNvbnN0
IENHRmxvYXQgd2luZG93SGVpZ2h0ID0gNTk7Ci1zdGF0aWMgY29uc3QgQ0dGbG9hdCB3aW5kb3dX
aWR0aCA9IDQzODsKLQotc3RhdGljIGNvbnN0IE5TVGltZUludGVydmFsIEhVRFdpbmRvd0ZhZGVP
dXREZWxheSA9IDM7Ci0KLUBpbXBsZW1lbnRhdGlvbiBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5k
b3dDb250cm9sbGVyCi0KLS0gKGlkKWluaXQKLXsKLSAgICBOU1dpbmRvdyAqd2luZG93ID0gW1tX
ZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6TlNN
YWtlUmVjdCgwLCAwLCB3aW5kb3dXaWR0aCwgd2luZG93SGVpZ2h0KSBzdHlsZU1hc2s6TlNXaW5k
b3dTdHlsZU1hc2tCb3JkZXJsZXNzIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZl
cjpOT107Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0V2l0aFdpbmRvdzp3aW5kb3ddOwotICAgIFt3
aW5kb3cgc2V0RGVsZWdhdGU6c2VsZl07Ci0gICAgW3dpbmRvdyByZWxlYXNlXTsKLSAgICBpZiAo
IXNlbGYpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgW3NlbGYgd2luZG93RGlkTG9hZF07Ci0g
ICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKHZvaWQpZGVhbGxvYwotewotICAgIEFTU0VSVCghX3Rp
bWVsaW5lVXBkYXRlVGltZXIpOwotICAgIEFTU0VSVCghX2FyZWEpOwotICAgIEFTU0VSVCghX2lz
U2NydWJiaW5nKTsKLSAgICBbX3RpbWVsaW5lIHJlbGVhc2VdOwotICAgIFtfcmVtYWluaW5nVGlt
ZVRleHQgcmVsZWFzZV07Ci0gICAgW19lbGFwc2VkVGltZVRleHQgcmVsZWFzZV07Ci0gICAgW192
b2x1bWVTbGlkZXIgcmVsZWFzZV07Ci0gICAgW19wbGF5QnV0dG9uIHJlbGVhc2VdOwotICAgIFtz
dXBlciBkZWFsbG9jXTsKLX0KLQotLSAodm9pZClzZXRBcmVhOihOU1RyYWNraW5nQXJlYSAqKWFy
ZWEKLXsKLSAgICBpZiAoYXJlYSA9PSBfYXJlYSkKLSAgICAgICAgcmV0dXJuOwotICAgIFtfYXJl
YSByZWxlYXNlXTsKLSAgICBfYXJlYSA9IFthcmVhIHJldGFpbl07Ci19Ci0KLS0gKHZvaWQpa2V5
RG93bjooTlNFdmVudCAqKWV2ZW50Ci17Ci0gICAgTlNTdHJpbmcgKmNoYXJhY3RlcnNJZ25vcmlu
Z01vZGlmaWVycyA9IFtldmVudCBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnNdOwotICAgIGlm
IChbY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzIGxlbmd0aF0gPT0gMSkgewotICAgICAgICBz
d2l0Y2ggKFtjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMgY2hhcmFjdGVyQXRJbmRleDowXSkg
ewotICAgICAgICBjYXNlICcgJzoKLSAgICAgICAgICAgIFtzZWxmIHRvZ2dsZVBsYXlpbmc6bmls
XTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2FzZSBOU1VwQXJyb3dGdW5jdGlvbktl
eToKLSAgICAgICAgICAgIGlmIChbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0V2ZW50TW9kaWZp
ZXJGbGFnT3B0aW9uKQotICAgICAgICAgICAgICAgIFtzZWxmIHNldFZvbHVtZTpbc2VsZiBtYXhW
b2x1bWVdXTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBbc2VsZiBpbmNyZW1l
bnRWb2x1bWVdOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBjYXNlIE5TRG93bkFycm93
RnVuY3Rpb25LZXk6Ci0gICAgICAgICAgICBpZiAoW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNF
dmVudE1vZGlmaWVyRmxhZ09wdGlvbikKLSAgICAgICAgICAgICAgICBbc2VsZiBzZXRWb2x1bWU6
MF07Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgW3NlbGYgZGVjcmVtZW50Vm9s
dW1lXTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgW3N1cGVyIGtleURvd246ZXZlbnRdOwot
fQotCi0tIChpZCA8V2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlckRlbGVnYXRl
PilkZWxlZ2F0ZQotewotICAgIHJldHVybiBfZGVsZWdhdGU7Ci19Ci0KLS0gKHZvaWQpc2V0RGVs
ZWdhdGU6KGlkIDxXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyRGVsZWdhdGU+
KWRlbGVnYXRlCi17Ci0gICAgX2RlbGVnYXRlID0gZGVsZWdhdGU7Ci19Ci0KLS0gKHZvaWQpc2No
ZWR1bGVUaW1lVXBkYXRlCi17Ci0gICAgW05TT2JqZWN0IGNhbmNlbFByZXZpb3VzUGVyZm9ybVJl
cXVlc3RzV2l0aFRhcmdldDpzZWxmIHNlbGVjdG9yOkBzZWxlY3Rvcih1bnNjaGVkdWxlVGltZVVw
ZGF0ZSkgb2JqZWN0OnNlbGZdOwotCi0gICAgLy8gRmlyc3QsIHVwZGF0ZSByaWdodCBhd2F5LCB0
aGVuIHNjaGVkdWxlIGZ1dHVyZSB1cGRhdGUKLSAgICBbc2VsZiB1cGRhdGVUaW1lXTsKLSAgICBb
c2VsZiB1cGRhdGVQbGF5QnV0dG9uXTsKLQotICAgIFtfdGltZWxpbmVVcGRhdGVUaW1lciBpbnZh
bGlkYXRlXTsKLSAgICBbX3RpbWVsaW5lVXBkYXRlVGltZXIgcmVsZWFzZV07Ci0KLSAgICAvLyBO
b3RlIHRoYXQgdGhpcyBjcmVhdGVzIGEgcmV0YWluIGN5Y2xlIGJldHdlZW4gdGhlIHdpbmRvdyBh
bmQgdXMuCi0gICAgX3RpbWVsaW5lVXBkYXRlVGltZXIgPSBbW05TVGltZXIgdGltZXJXaXRoVGlt
ZUludGVydmFsOjAuMjUgdGFyZ2V0OnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKHVwZGF0ZVRpbWUp
IHVzZXJJbmZvOm5pbCByZXBlYXRzOllFU10gcmV0YWluXTsKLSAgICBbW05TUnVuTG9vcCBjdXJy
ZW50UnVuTG9vcF0gYWRkVGltZXI6X3RpbWVsaW5lVXBkYXRlVGltZXIgZm9yTW9kZTpOU1J1bkxv
b3BDb21tb25Nb2Rlc107Ci19Ci0KLS0gKHZvaWQpdW5zY2hlZHVsZVRpbWVVcGRhdGUKLXsKLSAg
ICBbTlNPYmplY3QgY2FuY2VsUHJldmlvdXNQZXJmb3JtUmVxdWVzdHNXaXRoVGFyZ2V0OnNlbGYg
c2VsZWN0b3I6QHNlbGVjdG9yKHVuc2NoZWR1bGVUaW1lVXBkYXRlKSBvYmplY3Q6bmlsXTsKLQot
ICAgIFtfdGltZWxpbmVVcGRhdGVUaW1lciBpbnZhbGlkYXRlXTsKLSAgICBbX3RpbWVsaW5lVXBk
YXRlVGltZXIgcmVsZWFzZV07Ci0gICAgX3RpbWVsaW5lVXBkYXRlVGltZXIgPSBuaWw7Ci19Ci0K
LS0gKHZvaWQpZmFkZVdpbmRvd0luCi17Ci0gICAgTlNXaW5kb3cgKndpbmRvdyA9IFtzZWxmIHdp
bmRvd107Ci0gICAgaWYgKCFbd2luZG93IGlzVmlzaWJsZV0pCi0gICAgICAgIFt3aW5kb3cgc2V0
QWxwaGFWYWx1ZTowXTsKLQotICAgIFt3aW5kb3cgbWFrZUtleUFuZE9yZGVyRnJvbnQ6c2VsZl07
Ci0gICAgW1t3aW5kb3cgYW5pbWF0b3JdIHNldEFscGhhVmFsdWU6MV07Ci0gICAgW3NlbGYgc2No
ZWR1bGVUaW1lVXBkYXRlXTsKLQotICAgIFtOU09iamVjdCBjYW5jZWxQcmV2aW91c1BlcmZvcm1S
ZXF1ZXN0c1dpdGhUYXJnZXQ6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoZmFkZVdpbmRvd091dCkg
b2JqZWN0Om5pbF07Ci0gICAgaWYgKCFfbW91c2VJc0luSFVEICYmIFtzZWxmIHBsYXlpbmddKSAv
LyBEb24ndCBmYWRlIG91dCB3aGVuIHBhdXNlZC4KLSAgICAgICAgW3NlbGYgcGVyZm9ybVNlbGVj
dG9yOkBzZWxlY3RvcihmYWRlV2luZG93T3V0KSB3aXRoT2JqZWN0Om5pbCBhZnRlckRlbGF5OkhV
RFdpbmRvd0ZhZGVPdXREZWxheV07Ci19Ci0KLS0gKHZvaWQpZmFkZVdpbmRvd091dAotewotICAg
IFtOU0N1cnNvciBzZXRIaWRkZW5VbnRpbE1vdXNlTW92ZXM6WUVTXTsKLSAgICBbW1tzZWxmIHdp
bmRvd10gYW5pbWF0b3JdIHNldEFscGhhVmFsdWU6MF07Ci0gICAgW3NlbGYgcGVyZm9ybVNlbGVj
dG9yOkBzZWxlY3Rvcih1bnNjaGVkdWxlVGltZVVwZGF0ZSkgd2l0aE9iamVjdDpuaWwgYWZ0ZXJE
ZWxheToxXTsKLX0KLQotLSAodm9pZCljbG9zZVdpbmRvdwotewotICAgIFtOU09iamVjdCBjYW5j
ZWxQcmV2aW91c1BlcmZvcm1SZXF1ZXN0c1dpdGhUYXJnZXQ6c2VsZiBzZWxlY3RvcjpAc2VsZWN0
b3IoZmFkZVdpbmRvd091dCkgb2JqZWN0Om5pbF07Ci0gICAgW3NlbGYgdW5zY2hlZHVsZVRpbWVV
cGRhdGVdOwotICAgIE5TV2luZG93ICp3aW5kb3cgPSBbc2VsZiB3aW5kb3ddOwotICAgIFtbd2lu
ZG93IGNvbnRlbnRWaWV3XSByZW1vdmVUcmFja2luZ0FyZWE6X2FyZWFdOwotICAgIFtzZWxmIHNl
dEFyZWE6bmlsXTsKLSAgICBbd2luZG93IGNsb3NlXTsKLSAgICBbd2luZG93IHNldERlbGVnYXRl
Om5pbF07Ci0gICAgW3NlbGYgc2V0V2luZG93Om5pbF07Ci19Ci0KLXN0YXRpYyBOU0NvbnRyb2wg
KmNyZWF0ZU1lZGlhVUlDb250cm9sKE1lZGlhVUlDb250cm9sIGNvbnRyb2xUeXBlKQotewotICAg
IHN3aXRjaCAoY29udHJvbFR5cGUpIHsKLSAgICBjYXNlIE1lZGlhVUlDb250cm9sOjpUaW1lbGlu
ZTogewotICAgICAgICBOU1NsaWRlciAqc2xpZGVyID0gW1tRVEhVRFRpbWVsaW5lIGFsbG9jXSBp
bml0XTsKLSAgICAgICAgW1tzbGlkZXIgY2VsbF0gc2V0Q29udGludW91czpZRVNdOwotICAgICAg
ICByZXR1cm4gc2xpZGVyOwotICAgIH0KLSAgICBjYXNlIE1lZGlhVUlDb250cm9sOjpTbGlkZXI6
IHsKLSAgICAgICAgTlNCdXR0b24gKnNsaWRlciA9IFtbUVRIVURTbGlkZXIgYWxsb2NdIGluaXRd
OwotICAgICAgICBbW3NsaWRlciBjZWxsXSBzZXRDb250aW51b3VzOllFU107Ci0gICAgICAgIHJl
dHVybiBzbGlkZXI7Ci0gICAgfQotICAgIGNhc2UgTWVkaWFVSUNvbnRyb2w6OlBsYXlQYXVzZUJ1
dHRvbjogewotICAgICAgICBOU0J1dHRvbiAqYnV0dG9uID0gW1tRVEhVREJ1dHRvbiBhbGxvY10g
aW5pdF07Ci0gICAgICAgIFtidXR0b24gc2V0SW1hZ2U6W05TSW1hZ2UgaW1hZ2VOYW1lZDpAIk5T
UGxheVRlbXBsYXRlIl1dOwotICAgICAgICBbYnV0dG9uIHNldEFsdGVybmF0ZUltYWdlOltOU0lt
YWdlIGltYWdlTmFtZWQ6QCJOU1BhdXNlUVRQcml2YXRlVGVtcGxhdGUiXV07Ci0KLSAgICAgICAg
W1tidXR0b24gY2VsbF0gc2V0U2hvd3NTdGF0ZUJ5Ok5TQ29udGVudHNDZWxsTWFza107Ci0gICAg
ICAgIFtidXR0b24gc2V0Qm9yZGVyZWQ6Tk9dOwotICAgICAgICByZXR1cm4gYnV0dG9uOwotICAg
IH0KLSAgICBjYXNlIE1lZGlhVUlDb250cm9sOjpFeGl0RnVsbHNjcmVlbkJ1dHRvbjogewotICAg
ICAgICBOU0J1dHRvbiAqYnV0dG9uID0gW1tRVEhVREJ1dHRvbiBhbGxvY10gaW5pdF07Ci0gICAg
ICAgIFtidXR0b24gc2V0SW1hZ2U6W05TSW1hZ2UgaW1hZ2VOYW1lZDpAIk5TRXhpdEZ1bGxTY3Jl
ZW5UZW1wbGF0ZSJdXTsKLSAgICAgICAgW2J1dHRvbiBzZXRCb3JkZXJlZDpOT107Ci0gICAgICAg
IHJldHVybiBidXR0b247Ci0gICAgfQotICAgIGNhc2UgTWVkaWFVSUNvbnRyb2w6OlJld2luZEJ1
dHRvbjogewotICAgICAgICBOU0J1dHRvbiAqYnV0dG9uID0gW1tRVEhVREJ1dHRvbiBhbGxvY10g
aW5pdF07Ci0gICAgICAgIFtidXR0b24gc2V0SW1hZ2U6W05TSW1hZ2UgaW1hZ2VOYW1lZDpAIk5T
UmV3aW5kVGVtcGxhdGUiXV07Ci0gICAgICAgIFtidXR0b24gc2V0Qm9yZGVyZWQ6Tk9dOwotICAg
ICAgICByZXR1cm4gYnV0dG9uOwotICAgIH0KLSAgICBjYXNlIE1lZGlhVUlDb250cm9sOjpGYXN0
Rm9yd2FyZEJ1dHRvbjogewotICAgICAgICBOU0J1dHRvbiAqYnV0dG9uID0gW1tRVEhVREJ1dHRv
biBhbGxvY10gaW5pdF07Ci0gICAgICAgIFtidXR0b24gc2V0SW1hZ2U6W05TSW1hZ2UgaW1hZ2VO
YW1lZDpAIk5TRmFzdEZvcndhcmRUZW1wbGF0ZSJdXTsKLSAgICAgICAgW2J1dHRvbiBzZXRCb3Jk
ZXJlZDpOT107Ci0gICAgICAgIHJldHVybiBidXR0b247Ci0gICAgfQotICAgIGNhc2UgTWVkaWFV
SUNvbnRyb2w6OlZvbHVtZVVwQnV0dG9uOiB7Ci0gICAgICAgIE5TQnV0dG9uICpidXR0b24gPSBb
W1FUSFVEQnV0dG9uIGFsbG9jXSBpbml0XTsKLSAgICAgICAgW2J1dHRvbiBzZXRJbWFnZTpbTlNJ
bWFnZSBpbWFnZU5hbWVkOkAiTlNBdWRpb091dHB1dFZvbHVtZUhpZ2hUZW1wbGF0ZSJdXTsKLSAg
ICAgICAgW2J1dHRvbiBzZXRCb3JkZXJlZDpOT107Ci0gICAgICAgIHJldHVybiBidXR0b247Ci0g
ICAgfQotICAgIGNhc2UgTWVkaWFVSUNvbnRyb2w6OlZvbHVtZURvd25CdXR0b246IHsKLSAgICAg
ICAgTlNCdXR0b24gKmJ1dHRvbiA9IFtbUVRIVURCdXR0b24gYWxsb2NdIGluaXRdOwotICAgICAg
ICBbYnV0dG9uIHNldEltYWdlOltOU0ltYWdlIGltYWdlTmFtZWQ6QCJOU0F1ZGlvT3V0cHV0Vm9s
dW1lTG93VGVtcGxhdGUiXV07Ci0gICAgICAgIFtidXR0b24gc2V0Qm9yZGVyZWQ6Tk9dOwotICAg
ICAgICByZXR1cm4gYnV0dG9uOwotICAgIH0KLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICByZXR1cm4gbmlsOwotfQotCi1zdGF0aWMgTlNDb250cm9sICpjcmVhdGVDb250
cm9sV2l0aE1lZGlhVUlDb250cm9sVHlwZShNZWRpYVVJQ29udHJvbCBjb250cm9sVHlwZSwgTlNS
ZWN0IGZyYW1lKQotewotICAgIE5TQ29udHJvbCAqY29udHJvbCA9IGNyZWF0ZU1lZGlhVUlDb250
cm9sKGNvbnRyb2xUeXBlKTsKLSAgICBjb250cm9sLmZyYW1lID0gZnJhbWU7Ci0gICAgcmV0dXJu
IGNvbnRyb2w7Ci19Ci0KLXN0YXRpYyBOU1RleHRGaWVsZCAqY3JlYXRlVGltZVRleHRGaWVsZChO
U1JlY3QgZnJhbWUpCi17Ci0gICAgTlNUZXh0RmllbGQgKnRleHRGaWVsZCA9IFtbTlNUZXh0Rmll
bGQgYWxsb2NdIGluaXRXaXRoRnJhbWU6ZnJhbWVdOwotICAgIFt0ZXh0RmllbGQgc2V0VGV4dENv
bG9yOltOU0NvbG9yIHdoaXRlQ29sb3JdXTsKLSAgICBbdGV4dEZpZWxkIHNldEJvcmRlcmVkOk5P
XTsKLSAgICBbdGV4dEZpZWxkIHNldEZvbnQ6W05TRm9udCBib2xkU3lzdGVtRm9udE9mU2l6ZTox
MF1dOwotICAgIFt0ZXh0RmllbGQgc2V0RHJhd3NCYWNrZ3JvdW5kOk5PXTsKLSAgICBbdGV4dEZp
ZWxkIHNldEJlemVsZWQ6Tk9dOwotICAgIFt0ZXh0RmllbGQgc2V0RWRpdGFibGU6Tk9dOwotICAg
IFt0ZXh0RmllbGQgc2V0U2VsZWN0YWJsZTpOT107Ci0gICAgcmV0dXJuIHRleHRGaWVsZDsKLX0K
LQotc3RhdGljIE5TVmlldyAqY3JlYXRlTWVkaWFVSUJhY2tncm91bmRWaWV3KCkKLXsKLSAgICBp
ZCB2aWV3ID0gW1tRVEhVREJhY2tncm91bmRWaWV3IGFsbG9jXSBpbml0XTsKLQotICAgIGNvbnN0
IENHRmxvYXQgcXVpY2tUaW1lUGxheWVySFVESGVpZ2h0ID0gNTk7Ci0gICAgY29uc3QgQ0dGbG9h
dCBxdWlja1RpbWVQbGF5ZXJIVURDb250ZW50Qm9yZGVyUG9zaXRpb24gPSAzODsKLQotICAgIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCi0gICAgW3ZpZXcgc2V0Q29udGVudEJv
cmRlclBvc2l0aW9uOnF1aWNrVGltZVBsYXllckhVRENvbnRlbnRCb3JkZXJQb3NpdGlvbiAvIHF1
aWNrVGltZVBsYXllckhVREhlaWdodF07Ci0gICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElP
TlNfRU5ECi0KLSAgICByZXR1cm4gdmlldzsKLX0KLQotLSAodm9pZCl3aW5kb3dEaWRMb2FkCi17
Ci0gICAgc3RhdGljIGNvbnN0IENHRmxvYXQgaG9yaXpvbnRhbE1hcmdpbiA9IDEwOwotICAgIHN0
YXRpYyBjb25zdCBDR0Zsb2F0IHBsYXlCdXR0b25XaWR0aCA9IDQxOwotICAgIHN0YXRpYyBjb25z
dCBDR0Zsb2F0IHBsYXlCdXR0b25IZWlnaHQgPSAzNTsKLSAgICBzdGF0aWMgY29uc3QgQ0dGbG9h
dCBwbGF5QnV0dG9uVG9wTWFyZ2luID0gNDsKLSAgICBzdGF0aWMgY29uc3QgQ0dGbG9hdCB2b2x1
bWVTbGlkZXJXaWR0aCA9IDUwOwotICAgIHN0YXRpYyBjb25zdCBDR0Zsb2F0IHZvbHVtZVNsaWRl
ckhlaWdodCA9IDEzOwotICAgIHN0YXRpYyBjb25zdCBDR0Zsb2F0IHZvbHVtZUJ1dHRvbldpZHRo
ID0gMTg7Ci0gICAgc3RhdGljIGNvbnN0IENHRmxvYXQgdm9sdW1lQnV0dG9uSGVpZ2h0ID0gMTY7
Ci0gICAgc3RhdGljIGNvbnN0IENHRmxvYXQgdm9sdW1lVXBCdXR0b25MZWZ0TWFyZ2luID0gNDsK
LSAgICBzdGF0aWMgY29uc3QgQ0dGbG9hdCB2b2x1bWVDb250cm9sc1RvcE1hcmdpbiA9IDEzOwot
ICAgIHN0YXRpYyBjb25zdCBDR0Zsb2F0IGV4aXRGdWxsc2NyZWVuQnV0dG9uV2lkdGggPSAyNTsK
LSAgICBzdGF0aWMgY29uc3QgQ0dGbG9hdCBleGl0RnVsbHNjcmVlbkJ1dHRvbkhlaWdodCA9IDIx
OwotICAgIHN0YXRpYyBjb25zdCBDR0Zsb2F0IGV4aXRGdWxsc2NyZWVuQnV0dG9uVG9wTWFyZ2lu
ID0gMTE7Ci0gICAgc3RhdGljIGNvbnN0IENHRmxvYXQgdGltZWxpbmVXaWR0aCA9IDMxNTsKLSAg
ICBzdGF0aWMgY29uc3QgQ0dGbG9hdCB0aW1lbGluZUhlaWdodCA9IDE0OwotICAgIHN0YXRpYyBj
b25zdCBDR0Zsb2F0IHRpbWVsaW5lQm90dG9tTWFyZ2luID0gNzsKLSAgICBzdGF0aWMgY29uc3Qg
Q0dGbG9hdCB0aW1lVGV4dEZpZWxkV2lkdGggPSA1NDsKLSAgICBzdGF0aWMgY29uc3QgQ0dGbG9h
dCB0aW1lVGV4dEZpZWxkSGVpZ2h0ID0gMTM7Ci0gICAgc3RhdGljIGNvbnN0IENHRmxvYXQgdGlt
ZVRleHRGaWVsZEhvcml6b250YWxNYXJnaW4gPSA3OwotCi0gICAgaWYgKCFRVEtpdExpYnJhcnko
KQotICAgICAgICB8fCAhZ2V0UVRIVURCYWNrZ3JvdW5kVmlld0NsYXNzKCkKLSAgICAgICAgfHwg
IWdldFFUSFVEQnV0dG9uQ2xhc3MoKQotICAgICAgICB8fCAhZ2V0UVRIVURTbGlkZXJDbGFzcygp
Ci0gICAgICAgIHx8ICFnZXRRVEhVRFRpbWVsaW5lQ2xhc3MoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgTlNXaW5kb3cgKndpbmRvdyA9IFtzZWxmIHdpbmRvd107Ci0gICAgQVNTRVJUKHdpbmRv
dyk7Ci0KLSAgICBOU1ZpZXcgKmJhY2tncm91bmQgPSBjcmVhdGVNZWRpYVVJQmFja2dyb3VuZFZp
ZXcoKTsKLQotICAgIFt3aW5kb3cgc2V0Q29udGVudFZpZXc6YmFja2dyb3VuZF07Ci0gICAgX2Fy
ZWEgPSBbW05TVHJhY2tpbmdBcmVhIGFsbG9jXSBpbml0V2l0aFJlY3Q6W2JhY2tncm91bmQgYm91
bmRzXSBvcHRpb25zOk5TVHJhY2tpbmdNb3VzZUVudGVyZWRBbmRFeGl0ZWQgfCBOU1RyYWNraW5n
QWN0aXZlQWx3YXlzIG93bmVyOnNlbGYgdXNlckluZm86bmlsXTsKLSAgICBbYmFja2dyb3VuZCBh
ZGRUcmFja2luZ0FyZWE6X2FyZWFdOwotICAgIFtiYWNrZ3JvdW5kIHJlbGVhc2VdOyAgICAKLQot
ICAgIE5TVmlldyAqY29udGVudFZpZXcgPSBbd2luZG93IGNvbnRlbnRWaWV3XTsKLQotICAgIENH
RmxvYXQgY2VudGVyID0gQ0dGbG9vcigod2luZG93V2lkdGggLSBwbGF5QnV0dG9uV2lkdGgpIC8g
Mik7Ci0gICAgX3BsYXlCdXR0b24gPSAoTlNCdXR0b24gKiljcmVhdGVDb250cm9sV2l0aE1lZGlh
VUlDb250cm9sVHlwZShNZWRpYVVJQ29udHJvbDo6UGxheVBhdXNlQnV0dG9uLCBOU01ha2VSZWN0
KGNlbnRlciwgd2luZG93SGVpZ2h0IC0gcGxheUJ1dHRvblRvcE1hcmdpbiAtIHBsYXlCdXR0b25I
ZWlnaHQsIHBsYXlCdXR0b25XaWR0aCwgcGxheUJ1dHRvbkhlaWdodCkpOwotICAgIEFTU0VSVChb
X3BsYXlCdXR0b24gaXNLaW5kT2ZDbGFzczpbTlNCdXR0b24gY2xhc3NdXSk7Ci0gICAgW19wbGF5
QnV0dG9uIHNldFRhcmdldDpzZWxmXTsKLSAgICBbX3BsYXlCdXR0b24gc2V0QWN0aW9uOkBzZWxl
Y3Rvcih0b2dnbGVQbGF5aW5nOildOwotICAgIFtjb250ZW50VmlldyBhZGRTdWJ2aWV3Ol9wbGF5
QnV0dG9uXTsKLQotICAgIENHRmxvYXQgY2xvc2VUb1JpZ2h0ID0gd2luZG93V2lkdGggLSBob3Jp
em9udGFsTWFyZ2luIC0gZXhpdEZ1bGxzY3JlZW5CdXR0b25XaWR0aDsKLSAgICBOU0NvbnRyb2wg
KmV4aXRGdWxsc2NyZWVuQnV0dG9uID0gY3JlYXRlQ29udHJvbFdpdGhNZWRpYVVJQ29udHJvbFR5
cGUoTWVkaWFVSUNvbnRyb2w6OkV4aXRGdWxsc2NyZWVuQnV0dG9uLCBOU01ha2VSZWN0KGNsb3Nl
VG9SaWdodCwgd2luZG93SGVpZ2h0IC0gZXhpdEZ1bGxzY3JlZW5CdXR0b25Ub3BNYXJnaW4gLSBl
eGl0RnVsbHNjcmVlbkJ1dHRvbkhlaWdodCwgZXhpdEZ1bGxzY3JlZW5CdXR0b25XaWR0aCwgZXhp
dEZ1bGxzY3JlZW5CdXR0b25IZWlnaHQpKTsKLSAgICBbZXhpdEZ1bGxzY3JlZW5CdXR0b24gc2V0
QWN0aW9uOkBzZWxlY3RvcihleGl0RnVsbHNjcmVlbjopXTsKLSAgICBbZXhpdEZ1bGxzY3JlZW5C
dXR0b24gc2V0VGFyZ2V0OnNlbGZdOwotICAgIFtjb250ZW50VmlldyBhZGRTdWJ2aWV3OmV4aXRG
dWxsc2NyZWVuQnV0dG9uXTsKLSAgICBbZXhpdEZ1bGxzY3JlZW5CdXR0b24gcmVsZWFzZV07Ci0g
ICAgCi0gICAgQ0dGbG9hdCB2b2x1bWVDb250cm9sc0JvdHRvbSA9IHdpbmRvd0hlaWdodCAtIHZv
bHVtZUNvbnRyb2xzVG9wTWFyZ2luIC0gdm9sdW1lQnV0dG9uSGVpZ2h0OwotICAgIENHRmxvYXQg
bGVmdCA9IGhvcml6b250YWxNYXJnaW47Ci0gICAgTlNDb250cm9sICp2b2x1bWVEb3duQnV0dG9u
ID0gY3JlYXRlQ29udHJvbFdpdGhNZWRpYVVJQ29udHJvbFR5cGUoTWVkaWFVSUNvbnRyb2w6OlZv
bHVtZURvd25CdXR0b24sIE5TTWFrZVJlY3QobGVmdCwgdm9sdW1lQ29udHJvbHNCb3R0b20sIHZv
bHVtZUJ1dHRvbldpZHRoLCB2b2x1bWVCdXR0b25IZWlnaHQpKTsKLSAgICBbY29udGVudFZpZXcg
YWRkU3Vidmlldzp2b2x1bWVEb3duQnV0dG9uXTsKLSAgICBbdm9sdW1lRG93bkJ1dHRvbiBzZXRU
YXJnZXQ6c2VsZl07Ci0gICAgW3ZvbHVtZURvd25CdXR0b24gc2V0QWN0aW9uOkBzZWxlY3Rvcihz
ZXRWb2x1bWVUb1plcm86KV07Ci0gICAgW3ZvbHVtZURvd25CdXR0b24gcmVsZWFzZV07Ci0KLSAg
ICBsZWZ0ICs9IHZvbHVtZUJ1dHRvbldpZHRoOwotICAgIF92b2x1bWVTbGlkZXIgPSBjcmVhdGVD
b250cm9sV2l0aE1lZGlhVUlDb250cm9sVHlwZShNZWRpYVVJQ29udHJvbDo6U2xpZGVyLCBOU01h
a2VSZWN0KGxlZnQsIHZvbHVtZUNvbnRyb2xzQm90dG9tICsgQ0dGbG9vcigodm9sdW1lQnV0dG9u
SGVpZ2h0IC0gdm9sdW1lU2xpZGVySGVpZ2h0KSAvIDIpLCB2b2x1bWVTbGlkZXJXaWR0aCwgdm9s
dW1lU2xpZGVySGVpZ2h0KSk7Ci0gICAgW192b2x1bWVTbGlkZXIgc2V0VmFsdWU6W05TTnVtYmVy
IG51bWJlcldpdGhEb3VibGU6W3NlbGYgbWF4Vm9sdW1lXV0gZm9yS2V5OkAibWF4VmFsdWUiXTsK
LSAgICBbX3ZvbHVtZVNsaWRlciBzZXRUYXJnZXQ6c2VsZl07Ci0gICAgW192b2x1bWVTbGlkZXIg
c2V0QWN0aW9uOkBzZWxlY3Rvcih2b2x1bWVDaGFuZ2VkOildOwotICAgIFtjb250ZW50VmlldyBh
ZGRTdWJ2aWV3Ol92b2x1bWVTbGlkZXJdOwotCi0gICAgbGVmdCArPSB2b2x1bWVTbGlkZXJXaWR0
aCArIHZvbHVtZVVwQnV0dG9uTGVmdE1hcmdpbjsKLSAgICBOU0NvbnRyb2wgKnZvbHVtZVVwQnV0
dG9uID0gY3JlYXRlQ29udHJvbFdpdGhNZWRpYVVJQ29udHJvbFR5cGUoTWVkaWFVSUNvbnRyb2w6
OlZvbHVtZVVwQnV0dG9uLCBOU01ha2VSZWN0KGxlZnQsIHZvbHVtZUNvbnRyb2xzQm90dG9tLCB2
b2x1bWVCdXR0b25XaWR0aCwgdm9sdW1lQnV0dG9uSGVpZ2h0KSk7Ci0gICAgW3ZvbHVtZVVwQnV0
dG9uIHNldFRhcmdldDpzZWxmXTsKLSAgICBbdm9sdW1lVXBCdXR0b24gc2V0QWN0aW9uOkBzZWxl
Y3RvcihzZXRWb2x1bWVUb01heGltdW06KV07Ci0gICAgW2NvbnRlbnRWaWV3IGFkZFN1YnZpZXc6
dm9sdW1lVXBCdXR0b25dOwotICAgIFt2b2x1bWVVcEJ1dHRvbiByZWxlYXNlXTsKLQotICAgIF90
aW1lbGluZSA9IGNyZWF0ZU1lZGlhVUlDb250cm9sKE1lZGlhVUlDb250cm9sOjpUaW1lbGluZSk7
Ci0KLSAgICBbX3RpbWVsaW5lIHNldFRhcmdldDpzZWxmXTsKLSAgICBbX3RpbWVsaW5lIHNldEFj
dGlvbjpAc2VsZWN0b3IodGltZWxpbmVQb3NpdGlvbkNoYW5nZWQ6KV07Ci0gICAgW190aW1lbGlu
ZSBzZXRGcmFtZTpOU01ha2VSZWN0KENHRmxvb3IoKHdpbmRvd1dpZHRoIC0gdGltZWxpbmVXaWR0
aCkgLyAyKSwgdGltZWxpbmVCb3R0b21NYXJnaW4sIHRpbWVsaW5lV2lkdGgsIHRpbWVsaW5lSGVp
Z2h0KV07Ci0gICAgW2NvbnRlbnRWaWV3IGFkZFN1YnZpZXc6X3RpbWVsaW5lXTsKLQotICAgIF9l
bGFwc2VkVGltZVRleHQgPSBjcmVhdGVUaW1lVGV4dEZpZWxkKE5TTWFrZVJlY3QodGltZVRleHRG
aWVsZEhvcml6b250YWxNYXJnaW4sIHRpbWVsaW5lQm90dG9tTWFyZ2luLCB0aW1lVGV4dEZpZWxk
V2lkdGgsIHRpbWVUZXh0RmllbGRIZWlnaHQpKTsKLSAgICBbX2VsYXBzZWRUaW1lVGV4dCBzZXRB
bGlnbm1lbnQ6TlNUZXh0QWxpZ25tZW50TGVmdF07Ci0gICAgW2NvbnRlbnRWaWV3IGFkZFN1YnZp
ZXc6X2VsYXBzZWRUaW1lVGV4dF07Ci0KLSAgICBfcmVtYWluaW5nVGltZVRleHQgPSBjcmVhdGVU
aW1lVGV4dEZpZWxkKE5TTWFrZVJlY3Qod2luZG93V2lkdGggLSB0aW1lVGV4dEZpZWxkSG9yaXpv
bnRhbE1hcmdpbiAtIHRpbWVUZXh0RmllbGRXaWR0aCwgdGltZWxpbmVCb3R0b21NYXJnaW4sIHRp
bWVUZXh0RmllbGRXaWR0aCwgdGltZVRleHRGaWVsZEhlaWdodCkpOwotICAgIFtfcmVtYWluaW5n
VGltZVRleHQgc2V0QWxpZ25tZW50Ok5TVGV4dEFsaWdubWVudFJpZ2h0XTsKLSAgICBbY29udGVu
dFZpZXcgYWRkU3VidmlldzpfcmVtYWluaW5nVGltZVRleHRdOwotCi0gICAgW3dpbmRvdyByZWNh
bGN1bGF0ZUtleVZpZXdMb29wXTsKLSAgICBbd2luZG93IHNldEluaXRpYWxGaXJzdFJlc3BvbmRl
cjpfcGxheUJ1dHRvbl07Ci0gICAgW3dpbmRvdyBjZW50ZXJdOwotfQotCi0tICh2b2lkKXVwZGF0
ZVZvbHVtZQotewotICAgIFtfdm9sdW1lU2xpZGVyIHNldEZsb2F0VmFsdWU6W3NlbGYgdm9sdW1l
XV07Ci19Ci0KLS0gKHZvaWQpdXBkYXRlVGltZQotewotICAgIFtzZWxmIHVwZGF0ZVZvbHVtZV07
Ci0KLSAgICBbX3RpbWVsaW5lIHNldEZsb2F0VmFsdWU6W3NlbGYgY3VycmVudFRpbWVdXTsKLSAg
ICBbX3RpbWVsaW5lIHNldFZhbHVlOltOU051bWJlciBudW1iZXJXaXRoRG91YmxlOltzZWxmIGR1
cmF0aW9uXV0gZm9yS2V5OkAibWF4VmFsdWUiXTsKLQotICAgIFtfcmVtYWluaW5nVGltZVRleHQg
c2V0U3RyaW5nVmFsdWU6W3NlbGYgcmVtYWluaW5nVGltZVRleHRdXTsKLSAgICBbX2VsYXBzZWRU
aW1lVGV4dCBzZXRTdHJpbmdWYWx1ZTpbc2VsZiBlbGFwc2VkVGltZVRleHRdXTsKLX0KLQotLSAo
dm9pZCllbmRTY3J1YmJpbmcKLXsKLSAgICBBU1NFUlQoX2lzU2NydWJiaW5nKTsKLSAgICBfaXNT
Y3J1YmJpbmcgPSBOTzsKLSAgICBpZiAoSFRNTFZpZGVvRWxlbWVudCogdmlkZW9FbGVtZW50ID0g
W19kZWxlZ2F0ZSB2aWRlb0VsZW1lbnRdKQotICAgICAgICB2aWRlb0VsZW1lbnQtPmVuZFNjcnVi
YmluZygpOwotfQotCi0tICh2b2lkKXRpbWVsaW5lUG9zaXRpb25DaGFuZ2VkOihpZClzZW5kZXIK
LXsKLSAgICBVTlVTRURfUEFSQU0oc2VuZGVyKTsKLSAgICBbc2VsZiBzZXRDdXJyZW50VGltZTpb
X3RpbWVsaW5lIGZsb2F0VmFsdWVdXTsKLSAgICBpZiAoIV9pc1NjcnViYmluZykgewotICAgICAg
ICBfaXNTY3J1YmJpbmcgPSBZRVM7Ci0gICAgICAgIGlmIChIVE1MVmlkZW9FbGVtZW50KiB2aWRl
b0VsZW1lbnQgPSBbX2RlbGVnYXRlIHZpZGVvRWxlbWVudF0pCi0gICAgICAgICAgICB2aWRlb0Vs
ZW1lbnQtPmJlZ2luU2NydWJiaW5nKCk7Ci0gICAgICAgIHN0YXRpYyBOU0FycmF5ICplbmRTY3J1
YmJpbmdNb2RlcyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOk5TRGVmYXVsdFJ1
bkxvb3BNb2RlLCBOU01vZGFsUGFuZWxSdW5Mb29wTW9kZSwgbmlsXTsKLSAgICAgICAgLy8gU2No
ZWR1bGUgLWVuZFNjcnViYmluZyBmb3Igd2hlbiBsZWF2aW5nIG1vdXNlIHRyYWNraW5nIG1vZGUu
Ci0gICAgICAgIFtbTlNSdW5Mb29wIGN1cnJlbnRSdW5Mb29wXSBwZXJmb3JtU2VsZWN0b3I6QHNl
bGVjdG9yKGVuZFNjcnViYmluZykgdGFyZ2V0OnNlbGYgYXJndW1lbnQ6bmlsIG9yZGVyOjAgbW9k
ZXM6ZW5kU2NydWJiaW5nTW9kZXNdOwotICAgIH0KLX0KLQotLSAoZmxvYXQpY3VycmVudFRpbWUK
LXsKLSAgICByZXR1cm4gW19kZWxlZ2F0ZSB2aWRlb0VsZW1lbnRdID8gW19kZWxlZ2F0ZSB2aWRl
b0VsZW1lbnRdLT5jdXJyZW50VGltZSgpIDogMDsKLX0KLQotLSAodm9pZClzZXRDdXJyZW50VGlt
ZTooZmxvYXQpY3VycmVudFRpbWUKLXsKLSAgICBpZiAoIVtfZGVsZWdhdGUgdmlkZW9FbGVtZW50
XSkKLSAgICAgICAgcmV0dXJuOwotICAgIFtfZGVsZWdhdGUgdmlkZW9FbGVtZW50XS0+c2V0Q3Vy
cmVudFRpbWUoY3VycmVudFRpbWUpOwotICAgIFtzZWxmIHVwZGF0ZVRpbWVdOwotfQotCi0tIChk
b3VibGUpZHVyYXRpb24KLXsKLSAgICByZXR1cm4gW19kZWxlZ2F0ZSB2aWRlb0VsZW1lbnRdID8g
W19kZWxlZ2F0ZSB2aWRlb0VsZW1lbnRdLT5kdXJhdGlvbigpIDogMDsKLX0KLQotLSAoZmxvYXQp
bWF4Vm9sdW1lCi17Ci0gICAgLy8gU2V0IHRoZSB2b2x1bWUgc2xpZGVyIHJlc29sdXRpb24KLSAg
ICByZXR1cm4gMTAwOwotfQotCi0tICh2b2lkKXZvbHVtZUNoYW5nZWQ6KGlkKXNlbmRlcgotewot
ICAgIFVOVVNFRF9QQVJBTShzZW5kZXIpOwotICAgIFtzZWxmIHNldFZvbHVtZTpbX3ZvbHVtZVNs
aWRlciBmbG9hdFZhbHVlXV07Ci19Ci0KLS0gKHZvaWQpc2V0Vm9sdW1lVG9aZXJvOihpZClzZW5k
ZXIKLXsKLSAgICBVTlVTRURfUEFSQU0oc2VuZGVyKTsKLSAgICBbc2VsZiBzZXRWb2x1bWU6MF07
Ci19Ci0KLS0gKHZvaWQpc2V0Vm9sdW1lVG9NYXhpbXVtOihpZClzZW5kZXIKLXsKLSAgICBVTlVT
RURfUEFSQU0oc2VuZGVyKTsKLSAgICBbc2VsZiBzZXRWb2x1bWU6W3NlbGYgbWF4Vm9sdW1lXV07
Ci19Ci0KLS0gKHZvaWQpZGVjcmVtZW50Vm9sdW1lCi17Ci0gICAgaWYgKCFbX2RlbGVnYXRlIHZp
ZGVvRWxlbWVudF0pCi0gICAgICAgIHJldHVybjsKLQotICAgIGZsb2F0IHZvbHVtZSA9IFtzZWxm
IHZvbHVtZV0gLSAxMDsKLSAgICBbc2VsZiBzZXRWb2x1bWU6c3RkOjptYXgodm9sdW1lLCAwLjBm
KV07Ci19Ci0KLS0gKHZvaWQpaW5jcmVtZW50Vm9sdW1lCi17Ci0gICAgaWYgKCFbX2RlbGVnYXRl
IHZpZGVvRWxlbWVudF0pCi0gICAgICAgIHJldHVybjsKLQotICAgIGZsb2F0IHZvbHVtZSA9IFtz
ZWxmIHZvbHVtZV0gKyAxMDsKLSAgICBbc2VsZiBzZXRWb2x1bWU6c3RkOjptaW4odm9sdW1lLCBb
c2VsZiBtYXhWb2x1bWVdKV07Ci19Ci0KLS0gKGZsb2F0KXZvbHVtZQotewotICAgIHJldHVybiBb
X2RlbGVnYXRlIHZpZGVvRWxlbWVudF0gPyBbX2RlbGVnYXRlIHZpZGVvRWxlbWVudF0tPnZvbHVt
ZSgpICogW3NlbGYgbWF4Vm9sdW1lXSA6IDA7Ci19Ci0KLS0gKHZvaWQpc2V0Vm9sdW1lOihmbG9h
dCl2b2x1bWUKLXsKLSAgICBpZiAoIVtfZGVsZWdhdGUgdmlkZW9FbGVtZW50XSkKLSAgICAgICAg
cmV0dXJuOwotICAgIGlmIChbX2RlbGVnYXRlIHZpZGVvRWxlbWVudF0tPm11dGVkKCkpCi0gICAg
ICAgIFtfZGVsZWdhdGUgdmlkZW9FbGVtZW50XS0+c2V0TXV0ZWQoZmFsc2UpOwotICAgIFtfZGVs
ZWdhdGUgdmlkZW9FbGVtZW50XS0+c2V0Vm9sdW1lKHZvbHVtZSAvIFtzZWxmIG1heFZvbHVtZV0p
OwotICAgIFtzZWxmIHVwZGF0ZVZvbHVtZV07Ci19Ci0KLS0gKHZvaWQpdXBkYXRlUGxheUJ1dHRv
bgotewotICAgIFtfcGxheUJ1dHRvbiBzZXRJbnRWYWx1ZTpbc2VsZiBwbGF5aW5nXV07Ci19Ci0K
LS0gKHZvaWQpdXBkYXRlUmF0ZQotewotICAgIEJPT0wgcGxheWluZyA9IFtzZWxmIHBsYXlpbmdd
OwotCi0gICAgLy8gS2VlcCB0aGUgSFVEIHZpc2libGUgd2hlbiBwYXVzZWQuCi0gICAgaWYgKCFw
bGF5aW5nKQotICAgICAgICBbc2VsZiBmYWRlV2luZG93SW5dOwotICAgIGVsc2UgaWYgKCFfbW91
c2VJc0luSFVEKSB7Ci0gICAgICAgIFtOU09iamVjdCBjYW5jZWxQcmV2aW91c1BlcmZvcm1SZXF1
ZXN0c1dpdGhUYXJnZXQ6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoZmFkZVdpbmRvd091dCkgb2Jq
ZWN0Om5pbF07Ci0gICAgICAgIFtzZWxmIHBlcmZvcm1TZWxlY3RvcjpAc2VsZWN0b3IoZmFkZVdp
bmRvd091dCkgd2l0aE9iamVjdDpuaWwgYWZ0ZXJEZWxheTpIVURXaW5kb3dGYWRlT3V0RGVsYXld
OwotICAgIH0KLSAgICBbc2VsZiB1cGRhdGVQbGF5QnV0dG9uXTsKLX0KLQotLSAodm9pZCl0b2dn
bGVQbGF5aW5nOihpZClzZW5kZXIKLXsKLSAgICBVTlVTRURfUEFSQU0oc2VuZGVyKTsKLSAgICBb
c2VsZiBzZXRQbGF5aW5nOiFbc2VsZiBwbGF5aW5nXV07Ci19Ci0KLS0gKEJPT0wpcGxheWluZwot
ewotICAgIEhUTUxWaWRlb0VsZW1lbnQqIHZpZGVvRWxlbWVudCA9IFtfZGVsZWdhdGUgdmlkZW9F
bGVtZW50XTsKLSAgICBpZiAoIXZpZGVvRWxlbWVudCkKLSAgICAgICAgcmV0dXJuIE5POwotCi0g
ICAgcmV0dXJuICF2aWRlb0VsZW1lbnQtPmNhblBsYXkoKTsKLX0KLQotLSAodm9pZClzZXRQbGF5
aW5nOihCT09MKXBsYXlpbmcKLXsKLSAgICBIVE1MVmlkZW9FbGVtZW50KiB2aWRlb0VsZW1lbnQg
PSBbX2RlbGVnYXRlIHZpZGVvRWxlbWVudF07Ci0KLSAgICBpZiAoIXZpZGVvRWxlbWVudCkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgaWYgKHBsYXlpbmcpCi0gICAgICAgIHZpZGVvRWxlbWVudC0+
cGxheSgpOwotICAgIGVsc2UKLSAgICAgICAgdmlkZW9FbGVtZW50LT5wYXVzZSgpOwotfQotCi1z
dGF0aWMgTlNTdHJpbmcgKnRpbWVUb1N0cmluZyhkb3VibGUgdGltZSkKLXsKLSAgICBBU1NFUlRf
QVJHKHRpbWUsIHRpbWUgPj0gMCk7Ci0KLSAgICBpZiAoIXN0ZDo6aXNmaW5pdGUodGltZSkpCi0g
ICAgICAgIHRpbWUgPSAwOwotCi0gICAgaW50IHNlY29uZHMgPSBuYXJyb3dQcmVjaXNpb25Ub0Zs
b2F0KHN0ZDo6YWJzKHRpbWUpKTsKLSAgICBpbnQgaG91cnMgPSBzZWNvbmRzIC8gKDYwICogNjAp
OwotICAgIGludCBtaW51dGVzID0gKHNlY29uZHMgLyA2MCkgJSA2MDsKLSAgICBzZWNvbmRzICU9
IDYwOwotCi0gICAgaWYgKGhvdXJzKQotICAgICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dp
dGhGb3JtYXQ6QCIlZDolMDJkOiUwMmQiLCBob3VycywgbWludXRlcywgc2Vjb25kc107Ci0KLSAg
ICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlMDJkOiUwMmQiLCBtaW51dGVz
LCBzZWNvbmRzXTsgICAgCi19Ci0KLS0gKE5TU3RyaW5nICopcmVtYWluaW5nVGltZVRleHQKLXsK
LSAgICBIVE1MVmlkZW9FbGVtZW50KiB2aWRlb0VsZW1lbnQgPSBbX2RlbGVnYXRlIHZpZGVvRWxl
bWVudF07Ci0gICAgaWYgKCF2aWRlb0VsZW1lbnQpCi0gICAgICAgIHJldHVybiBAIiI7Ci0KLSAg
ICBkb3VibGUgcmVtYWluaW5nVGltZSA9IDA7Ci0KLSAgICBpZiAoc3RkOjppc2Zpbml0ZSh2aWRl
b0VsZW1lbnQtPmR1cmF0aW9uKCkpICYmIHN0ZDo6aXNmaW5pdGUodmlkZW9FbGVtZW50LT5jdXJy
ZW50VGltZSgpKSkKLSAgICAgICAgcmVtYWluaW5nVGltZSA9IHZpZGVvRWxlbWVudC0+ZHVyYXRp
b24oKSAtIHZpZGVvRWxlbWVudC0+Y3VycmVudFRpbWUoKTsKLQotICAgIHJldHVybiBbQCItIiBz
dHJpbmdCeUFwcGVuZGluZ1N0cmluZzp0aW1lVG9TdHJpbmcocmVtYWluaW5nVGltZSldOwotfQot
Ci0tIChOU1N0cmluZyAqKWVsYXBzZWRUaW1lVGV4dAotewotICAgIGlmICghW19kZWxlZ2F0ZSB2
aWRlb0VsZW1lbnRdKQotICAgICAgICByZXR1cm4gQCIiOwotCi0gICAgcmV0dXJuIHRpbWVUb1N0
cmluZyhbX2RlbGVnYXRlIHZpZGVvRWxlbWVudF0tPmN1cnJlbnRUaW1lKCkpOwotfQotCi0vLyBN
QVJLOiBOU1Jlc3BvbmRlcgotCi0tICh2b2lkKW1vdXNlRW50ZXJlZDooTlNFdmVudCAqKXRoZUV2
ZW50Ci17Ci0gICAgVU5VU0VEX1BBUkFNKHRoZUV2ZW50KTsKLSAgICAvLyBNYWtlIHN1cmUgdGhl
IEhVRCB3b24ndCBiZSBoaWRkZW4gZnJvbSBub3cKLSAgICBfbW91c2VJc0luSFVEID0gWUVTOwot
ICAgIFtzZWxmIGZhZGVXaW5kb3dJbl07Ci19Ci0KLS0gKHZvaWQpbW91c2VFeGl0ZWQ6KE5TRXZl
bnQgKil0aGVFdmVudAotewotICAgIFVOVVNFRF9QQVJBTSh0aGVFdmVudCk7Ci0gICAgX21vdXNl
SXNJbkhVRCA9IE5POwotICAgIFtzZWxmIGZhZGVXaW5kb3dJbl07Ci19Ci0KLS0gKHZvaWQpcmV3
aW5kOihpZClzZW5kZXIKLXsKLSAgICBVTlVTRURfUEFSQU0oc2VuZGVyKTsKLSAgICBpZiAoIVtf
ZGVsZWdhdGUgdmlkZW9FbGVtZW50XSkKLSAgICAgICAgcmV0dXJuOwotICAgIFtfZGVsZWdhdGUg
dmlkZW9FbGVtZW50XS0+cmV3aW5kKDMwKTsKLX0KLQotLSAodm9pZClmYXN0Rm9yd2FyZDooaWQp
c2VuZGVyCi17Ci0gICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7Ci0gICAgaWYgKCFbX2RlbGVnYXRl
IHZpZGVvRWxlbWVudF0pCi0gICAgICAgIHJldHVybjsKLX0KLQotLSAodm9pZClleGl0RnVsbHNj
cmVlbjooaWQpc2VuZGVyCi17Ci0gICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7Ci0gICAgaWYgKF9p
c0VuZGluZ0Z1bGxzY3JlZW4pCi0gICAgICAgIHJldHVybjsKLSAgICBfaXNFbmRpbmdGdWxsc2Ny
ZWVuID0gWUVTOwotICAgIFtfZGVsZWdhdGUgcmVxdWVzdEV4aXRGdWxsc2NyZWVuXTsgCi19Ci0K
LS8vIE1BUks6IE5TV2luZG93RGVsZWdhdGUKLQotLSAodm9pZCl3aW5kb3dEaWRFeHBvc2U6KE5T
Tm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCi17Ci0gICAgVU5VU0VEX1BBUkFNKG5vdGlmaWNh
dGlvbik7Ci0gICAgW3NlbGYgc2NoZWR1bGVUaW1lVXBkYXRlXTsKLX0KLQotLSAodm9pZCl3aW5k
b3dEaWRDbG9zZTooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KLXsKLSAgICBVTlVTRURf
UEFSQU0obm90aWZpY2F0aW9uKTsKLSAgICBbc2VsZiB1bnNjaGVkdWxlVGltZVVwZGF0ZV07Ci19
Ci0KLUBlbmQKLQotI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390970</attachid>
            <date>2020-02-17 13:42:21 -0800</date>
            <delta_ts>2020-02-19 16:40:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207795-20200217134221.patch</filename>
            <type>text/plain</type>
            <size>86073</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2NTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTU3Yzk0NDI5ZDdhMzBj
MWRiNGUxMTVlMDA1ODVhMDRlMTdkNTZlZi4uZmFlN2M4MzgxZjg3MjY3YzliNTM4MDE4MTVmNTBk
MjU5YTJkNGZkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIwLTAyLTE0ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFN0b3AgdXNpbmcgUVRLaXQg
Zm9yIHJlbmRlcmluZyBXSzEgdmlkZW8gZnVsbHNjcmVlbiBjb250cm9scworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3Nzk1CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS80ODg5NDkxNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBEcml2ZS1ieSBmaXhlczoKKworICAgICAgICAtIERvbid0IHNldCB0aGUg
dmlkZW8gbGF5ZXIgdG8gbm90LXZpc2libGUgd2hlbiBpbiB2aWRlbyBmdWxsc2NyZWVuIG1vZGUu
CisgICAgICAgIC0gRXhwb3J0IHByZXZpb3VzbHkgdW4tZXhwb3J0ZWQgbWV0aG9kcy4KKyAgICAg
ICAgLSBNYWtlIHNvbWUgaW9zLW9ubHkgY2xhc3NlcyBhdmFpbGFibGUgb24gbWFjLgorICAgICAg
ICAtIEFkZCBhIGNvdXBsZSBwcmV2aW91c2x5IHVuaW1wbGVtZW50ZWQgcHJvcGVydGllcyB0byBX
ZWJBVlBsYXllckNvbnRyb2xsZXIgbmVlZGVkIGJ5IEFWS2l0LgorICAgICAgICAtIFdlYkNvcmVG
dWxsc2NyZWVuV2luZG93IGRvZXNuJ3QgZGVwZW5kIG9uIEZVTExTQ1JFRU5fQVBJLgorCisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
Ojp2aXNpYmlsaXR5U3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1l
bnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNldFZpZGVvRnVsbHNj
cmVlbkxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlQVZLaXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlQVZLaXQubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VB
VktpdDo6ZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9X
ZWJBVlBsYXllckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViQVZQbGF5
ZXJDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgY2FuU2Vl
a0ZyYW1lQmFja3dhcmRdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJDb250cm9sbGVyIGNhblNl
ZWtGcmFtZUZvcndhcmRdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZUZ1bGxTY3Jl
ZW5XaW5kb3cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZUZ1bGxTY3JlZW5XaW5k
b3cubW06CisKIDIwMjAtMDItMTMgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAK
ICAgICAgICAgTWVkaWFUb29sYm94IG1heSBub3QgYmUgYXZhaWxhYmxlOyBjaGVjayBiZWZvcmUg
Y2FsbGluZyBNVE92ZXJyaWRlU2hvdWxkUGxheUhEUlZpZGVvKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmlu
ZGV4IDg5MGE4NDM4ZmEwZjA2NzU3NmQ1MGE3OTRmZDJlMTBiMzYwYTU1MTMuLjFlYmU3OTZlNmE2
YWM1N2UyOGI2OGE3YTUyZjgwZTRiOTIzYmY4ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE2IEBACisyMDIwLTAyLTE0ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgor
CisgICAgICAgIFN0b3AgdXNpbmcgUVRLaXQgZm9yIHJlbmRlcmluZyBXSzEgdmlkZW8gZnVsbHNj
cmVlbiBjb250cm9scworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA3Nzk1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80ODg5NDkxNT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBBTC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhbC9zcGkvY29jb2EvQVZLaXRTUEkuaDoKKyAg
ICAgICAgKiBwYWwvc3BpL21hYy9OU1dpbmRvd1NQSS5oOgorICAgICAgICAqIHBhbC9zcGkvbWFj
L1FUS2l0U1BJLmg6IFJlbW92ZWQuCisKIDIwMjAtMDItMTIgIFJ5YW4gSGFkZGFkICA8cnlhbmhh
ZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjI1NjAx
MC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBlNjA3NDRmZjRiMjczMTBkMDJmZTAy
YjkxN2RmMDk0NTIzNGVhM2MwLi42ZWM1MTQzYzkzNjE4MzEwN2YxNTU1NDg4MmViYjM0ZTBjYTY0
ZTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzYgQEAKKzIwMjAt
MDItMTQgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcCB1
c2luZyBRVEtpdCBmb3IgcmVuZGVyaW5nIFdLMSB2aWRlbyBmdWxsc2NyZWVuIGNvbnRyb2xzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc3OTUKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ4ODk0OTE1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFN3aXRjaCB0byB1c2luZyBBVlBsYXllclZpZXcgaW5z
dGVhZCBvZiBRVEhVRCB0byByZW5kZXIgb3VyIGZ1bGxzY3JlZW4gY29udHJvbHMuCisKKyAgICAg
ICAgSW4gYWRkaXRpb24sIHN3aXRjaCB0byBhIG1vZGVybiBOU1dpbmRvdyBmdWxsc2NyZWVuIEFQ
SSwgd2l0aCBjdXN0b20sIHNtb290aCBhbmltYXRpb25zIHdoaWNoIAorICAgICAgICBtb3ZlIHRo
ZSBmdWxsc2NyZWVuIHdpbmRvdyB0byBhIHNlcGFyYXRlIHNwYWNlLiBUaGlzIHJlcXVpcmVzIHN1
YmNsYXNzaW5nIEFWUGxheWVyVmlldyBzbyB0aGF0CisgICAgICAgIGZ1bGxzY3JlZW4gdG9nZ2xp
bmcgd2lsbCBzaWduYWwgdG8gdGhlIGNvbnRyb2xsZXIsIHNvIHRoYXQgb3VyIGZ1bGxzY3JlZW4g
YnV0dG9uIGFuZCB0aGUgaW5saW5lCisgICAgICAgIHZlcnNpb24gb2Ygc2FtZSBkb24ndCBnZXQg
b3V0IG9mIHN5bmMuIEJlY2F1c2UgQVZQbGF5ZXJWaWV3IHJlcXVpcmVzIGFuIEFWUGxheWVyIGlu
IG9yZGVyIHRvCisgICAgICAgIGRpc3BsYXkgdGhlIHZpZGVvIGxheWVyLCBhbmQgd2Ugd29uJ3Qg
bmVjZXNzYXJpbHkgaGF2ZSBhbiBBVlBsYXllciBmb3IgTVNFLWJhY2tlZCB2aWRlb3MsIGluc3Rl
YWQKKyAgICAgICAgaW5zdGFsbCBhIGN1c3RvbSBvdmVybGF5IHZpZXcgaW5zaWRlIHRoZSBBVlBs
YXllclZpZXcgaW4gd2hpY2ggdG8gaG9zdCB0aGUgZnVsbHNjcmVlbiB2aWRlbyBsYXllci4KKwor
ICAgICAgICAqIFdlYlZpZXcvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5oOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbToKKyAgICAgICAgKC1b
V2ViT3ZlcmxheUxheWVyIGxheW91dFN1YmxheWVyc10pOgorICAgICAgICAoV2ViQVZQbGF5ZXJW
aWV3X2RlbGVnYXRlKToKKyAgICAgICAgKFdlYkFWUGxheWVyVmlld19zZXREZWxlZ2F0ZSk6Cisg
ICAgICAgIChXZWJBVlBsYXllclZpZXdfaXNGdWxsU2NyZWVuKToKKyAgICAgICAgKFdlYkFWUGxh
eWVyVmlld19lbnRlckZ1bGxTY3JlZW4pOgorICAgICAgICAoV2ViQVZQbGF5ZXJWaWV3X2V4aXRG
dWxsU2NyZWVuKToKKyAgICAgICAgKGFsbG9jV2ViQVZQbGF5ZXJWaWV3SW5zdGFuY2UpOgorICAg
ICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIGluaXRdKToKKyAgICAgICAgKC1b
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciBkZWFsbG9jXSk6CisgICAgICAgICgtW1dlYlZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgZnVsbHNjcmVlbldpbmRvd10pOgorICAgICAgICAoLVtX
ZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIHdpbmRvd0RpZExvYWRdKToKKyAgICAgICAgKC1b
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciBzZXRWaWRlb0VsZW1lbnQ6XSk6CisgICAgICAg
ICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgZW50ZXJGdWxsc2NyZWVuOl0pOgorICAg
ICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIGV4aXRGdWxsc2NyZWVuXSk6Cisg
ICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgYXBwbGljYXRpb25EaWRSZXNp
Z25BY3RpdmU6XSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgX3Jl
cXVlc3RFeGl0XSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgX3Jl
cXVlc3RFbnRlcl0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIGNh
bmNlbE9wZXJhdGlvbjpdKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ciBwbGF5ZXJWaWV3SXNGdWxsU2NyZWVuOl0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyIHBsYXllclZpZXdSZXF1ZXN0RW50ZXJGdWxsc2NyZWVuOl0pOgorICAgICAg
ICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIHBsYXllclZpZXdSZXF1ZXN0RXhpdEZ1
bGxzY3JlZW46XSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgY3Vz
dG9tV2luZG93c1RvRW50ZXJGdWxsU2NyZWVuRm9yV2luZG93Ol0pOgorICAgICAgICAoLVtXZWJW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIHdpbmRvdzpzdGFydEN1c3RvbUFuaW1hdGlvblRvRW50
ZXJGdWxsU2NyZWVuV2l0aER1cmF0aW9uOl0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyIGN1c3RvbVdpbmRvd3NUb0V4aXRGdWxsU2NyZWVuRm9yV2luZG93Ol0pOgor
ICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIHdpbmRvdzpzdGFydEN1c3Rv
bUFuaW1hdGlvblRvRXhpdEZ1bGxTY3JlZW5XaXRoRHVyYXRpb246XSk6CisgICAgICAgICgtW1dl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgd2luZG93RGlkRW50ZXJGdWxsU2NyZWVuOl0pOgor
ICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIHdpbmRvd1dpbGxFeGl0RnVs
bFNjcmVlbjpdKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciB3aW5k
b3dEaWRFeGl0RnVsbFNjcmVlbjpdKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlciBjbGVhckZhZGVBbmltYXRpb25dKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlciB3aW5kb3dEaWRFeGl0RnVsbHNjcmVlbl0pOiBEZWxldGVk
LgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIHdpbmRvd0RpZEVudGVy
RnVsbHNjcmVlbl0pOiBEZWxldGVkLgorICAgICAgICAoZnJhbWVFeHBhbmRlZFRvUmF0aW9PZkZy
YW1lKTogRGVsZXRlZC4KKyAgICAgICAgKGNyZWF0ZUJhY2tncm91bmRGdWxsc2NyZWVuV2luZG93
KTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciBzZXR1
cEZhZGVBbmltYXRpb25JZk5lZWRlZEFuZEZhZGVJbjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1b
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciBhcHBsaWNhdGlvbkRpZENoYW5nZVNjcmVlblBh
cmFtZXRlcnM6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXIgdXBkYXRlTWVudUFuZERvY2tGb3JGdWxsc2NyZWVuXSk6IERlbGV0ZWQuCisgICAgICAg
ICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgcmVxdWVzdEV4aXRGdWxsc2NyZWVuV2l0
aEFuaW1hdGlvbjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlciByZXF1ZXN0RXhpdEZ1bGxzY3JlZW5dKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2Vi
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciBmYWRlSFVESW5dKTogRGVsZXRlZC4KKyAgICAgICAg
KC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciBvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOm9m
T2JqZWN0OmNoYW5nZTpjb250ZXh0Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyIHJhdGVDaGFuZ2VkOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtX
ZWJWaWRlb0Z1bGxzY3JlZW5XaW5kb3cgaW5pdFdpdGhDb250ZW50UmVjdDpzdHlsZU1hc2s6YmFj
a2luZzpkZWZlcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuV2lu
ZG93IGRlYWxsb2NdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuV2lu
ZG93IHJlc2lnbkZpcnN0UmVzcG9uZGVyXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlZpZGVv
RnVsbHNjcmVlbldpbmRvdyBjYW5CZWNvbWVLZXlXaW5kb3ddKTogRGVsZXRlZC4KKyAgICAgICAg
KC1bV2ViVmlkZW9GdWxsc2NyZWVuV2luZG93IG1vdXNlRG93bjpdKTogRGVsZXRlZC4KKyAgICAg
ICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuV2luZG93IGNhbmNlbE9wZXJhdGlvbjpdKTogRGVsZXRl
ZC4KKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuV2luZG93IGFuaW1hdGVkUmVzaXplRGlk
RW5kXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbldpbmRvdyBhbmlt
YXRlRnJvbVJlY3Q6dG9SZWN0OndpdGhTdWJBbmltYXRpb246Y29udHJvbGxlckFjdGlvbjpdKTog
RGVsZXRlZC4KKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuV2luZG93IGFuaW1hdGlvbkRp
ZEVuZDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuV2luZG93IG1v
dXNlTW92ZWQ6XSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViVmlldy9XZWJWaWRlb0Z1bGxzY3Jl
ZW5IVURXaW5kb3dDb250cm9sbGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogV2ViVmlldy9XZWJW
aWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1tOiBSZW1vdmVkLgorCiAyMDIwLTAy
LTEzICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIHJvbGxpbmcgb3V0IHIyNTUxNTgsIDI1NTQwNSBhbmQgcjI1NTQ4NgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDM4ZDdm
YTllNWQwOWMyY2Q5ZDhjNjA4ZWJhMzhlNzA1MDRhMzA5NmEuLmQyZTBjODIwOTEzZDU0YzYwMGQ4
ZjE0YTIwYWEzZThjNDA1NDUzODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTk1LDcgKzk1LDYgQEAKIAkJMEM3Nzg1OUMxRjQ1
MTMwRjAwRjRFQkI2IC8qIE5TVmlld1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEM3Nzg1ODMxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TVmlld1NQSS5o
ICovOyB9OwogCQkwQzc3ODU5RDFGNDUxMzBGMDBGNEVCQjYgLyogTlNXaW5kb3dTUEkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBDNzc4NTg0MUY0NTEz
MEYwMEY0RUJCNiAvKiBOU1dpbmRvd1NQSS5oICovOyB9OwogCQkwQzc3ODU5RTFGNDUxMzBGMDBG
NEVCQjYgLyogUElQU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwQzc3ODU4NTFGNDUxMzBGMDBGNEVCQjYgLyogUElQU1BJLmggKi87IH07Ci0JCTBD
Nzc4NTlGMUY0NTEzMEYwMEY0RUJCNiAvKiBRVEtpdFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEM3Nzg1ODYxRjQ1MTMwRjAwRjRFQkI2IC8qIFFU
S2l0U1BJLmggKi87IH07CiAJCTBDNzc4NUEwMUY0NTEzMEYwMEY0RUJCNiAvKiBRdWlja0xvb2tN
YWNTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBD
Nzc4NTg3MUY0NTEzMEYwMEY0RUJCNiAvKiBRdWlja0xvb2tNYWNTUEkuaCAqLzsgfTsKIAkJMEM3
Nzg1QTExRjQ1MTMwRjAwRjRFQkI2IC8qIFRlbGVwaG9ueVV0aWxpdGllc1NQSS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEM3Nzg1ODgxRjQ1MTMwRjAw
RjRFQkI2IC8qIFRlbGVwaG9ueVV0aWxpdGllc1NQSS5oICovOyB9OwogCQkwQ0Y5OUNBNDFGNzM2
Mzc1MDA3RUU3OTMgLyogTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBDMDBDRkQxMUY2OENFNDYwMEFBQzI2RCAv
KiBNZWRpYVRpbWVBVkZvdW5kYXRpb24uY3BwICovOyB9OwpAQCAtMjYzLDcgKzI2Miw2IEBACiAJ
CTBDNzc4NTgzMUY0NTEzMEYwMEY0RUJCNiAvKiBOU1ZpZXdTUEkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTlNWaWV3U1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBDNzc4NTg0MUY0NTEzMEYwMEY0RUJCNiAvKiBOU1dpbmRvd1NQSS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBOU1dpbmRvd1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwQzc3ODU4NTFGNDUxMzBGMDBGNEVCQjYgLyogUElQU1BJLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBJUFNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQkwQzc3ODU4NjFGNDUxMzBGMDBGNEVCQjYgLyogUVRLaXRTUEkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUVRLaXRTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEM3Nzg1ODcxRjQ1MTMwRjAwRjRFQkI2IC8qIFF1aWNrTG9va01hY1NQSS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdWlja0xvb2tNYWNTUEkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEM3Nzg1ODgxRjQ1MTMwRjAwRjRFQkI2IC8qIFRlbGVw
aG9ueVV0aWxpdGllc1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZWxl
cGhvbnlVdGlsaXRpZXNTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMENGOTlD
QTYxRjczODQzNjAwN0VFNzkzIC8qIENvcmVNZWRpYVNvZnRMaW5rLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvcmVNZWRpYVNvZnRMaW5rLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUxMCw3ICs1MDgsNiBAQAogCQkJCTBDNzc4NTgzMUY0NTEz
MEYwMEY0RUJCNiAvKiBOU1ZpZXdTUEkuaCAqLywKIAkJCQkwQzc3ODU4NDFGNDUxMzBGMDBGNEVC
QjYgLyogTlNXaW5kb3dTUEkuaCAqLywKIAkJCQkwQzc3ODU4NTFGNDUxMzBGMDBGNEVCQjYgLyog
UElQU1BJLmggKi8sCi0JCQkJMEM3Nzg1ODYxRjQ1MTMwRjAwRjRFQkI2IC8qIFFUS2l0U1BJLmgg
Ki8sCiAJCQkJMEM3Nzg1ODcxRjQ1MTMwRjAwRjRFQkI2IC8qIFF1aWNrTG9va01hY1NQSS5oICov
LAogCQkJCUExMTc1QjQ4MUY2QUZGOEUwMEM0QjlGMCAvKiBTcGVlY2hTeW50aGVzaXNTUEkuaCAq
LywKIAkJCQkwQzc3ODU4ODFGNDUxMzBGMDBGNEVCQjYgLyogVGVsZXBob255VXRpbGl0aWVzU1BJ
LmggKi8sCkBAIC04MTMsNyArODEwLDYgQEAKIAkJCQkwQzc3ODU5RTFGNDUxMzBGMDBGNEVCQjYg
LyogUElQU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTE3NUI0RTFGNkIzMzczMDBDNEI5RjAg
LyogUG9wdXBNZW51LmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzJEQTE1NjFGM0JFQjQ5MDBEQkMz
MTcgLyogcHRocmVhZFNQSS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEM3Nzg1OUYxRjQ1MTMwRjAw
RjRFQkI2IC8qIFFUS2l0U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzJEQTE1NzFGM0JFQjQ5
MDBEQkMzMTcgLyogUXVhcnR6Q29yZVNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEM3Nzg1QTAx
RjQ1MTMwRjAwRjRFQkI2IC8qIFF1aWNrTG9va01hY1NQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDQ1MEZDQTAyMUY1RjYwMjAwNERGQTU2IC8qIFF1aWNrTG9va1NvZnRMaW5rLmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0FWS2l0
U1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9BVktpdFNQSS5oCmluZGV4
IDA5NDY5OGExYmVmMzMyYWMwMGEzOWEyMjEzYzczODcxMDQ4ZjVkN2MuLjE1YmExMzg1Mjk3MWMx
NWVlNDM0OGQ5NDM3OWY0NGYxMTdhNjA4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvc3BpL2NvY29hL0FWS2l0U1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9z
cGkvY29jb2EvQVZLaXRTUEkuaApAQCAtMjYsNiArMjYsMzQgQEAKICNpbXBvcnQgPG9iamMvcnVu
dGltZS5oPgogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CiAKKyNpZiBVU0UoQVBQTEVfSU5U
RVJOQUxfU0RLKQorI2ltcG9ydCA8QVZLaXQvQVZQbGF5ZXJDb250cm9sbGVyLmg+CisjZWxzZQor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisjaW1wb3J0IDxVSUtpdC9VSVJlc3BvbmRlci5oPgor
QGludGVyZmFjZSBBVlBsYXllckNvbnRyb2xsZXIgOiBVSVJlc3BvbmRlcgorI2Vsc2UKKyNpbXBv
cnQgPEFwcEtpdC9OU1Jlc3BvbmRlci5oPgorQGludGVyZmFjZSBBVlBsYXllckNvbnRyb2xsZXIg
OiBOU1Jlc3BvbmRlciA8TlNVc2VySW50ZXJmYWNlVmFsaWRhdGlvbnM+CisjZW5kaWYKK0BlbmQK
KworQGludGVyZmFjZSBBVlBsYXllckNvbnRyb2xsZXIgKCkKK3R5cGVkZWYgTlNfRU5VTShOU0lu
dGVnZXIsIEFWUGxheWVyQ29udHJvbGxlclN0YXR1cykgeworICAgIEFWUGxheWVyQ29udHJvbGxl
clN0YXR1c1Vua25vd24gPSAwLAorICAgIEFWUGxheWVyQ29udHJvbGxlclN0YXR1c1JlYWR5VG9Q
bGF5ID0gMiwKK307CisKK3R5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIEFWUGxheWVyQ29udHJv
bGxlckV4dGVybmFsUGxheWJhY2tUeXBlKSB7CisgICAgQVZQbGF5ZXJDb250cm9sbGVyRXh0ZXJu
YWxQbGF5YmFja1R5cGVOb25lID0gMCwKKyAgICBBVlBsYXllckNvbnRyb2xsZXJFeHRlcm5hbFBs
YXliYWNrVHlwZUFpclBsYXkgPSAxLAorICAgIEFWUGxheWVyQ29udHJvbGxlckV4dGVybmFsUGxh
eWJhY2tUeXBlVFZPdXQgPSAyLAorfTsKKworQHByb3BlcnR5IChOU19OT05BVE9NSUNfSU9TT05M
WSwgcmVhZG9ubHkpIEFWUGxheWVyQ29udHJvbGxlclN0YXR1cyBzdGF0dXM7CitAZW5kCisjZW5k
aWYgLy8gVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAjaW1wb3J0IDxBVktpdC9BVktpdC5oPgogI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3Jl
Lmg+CkBAIC0zNyw3ICs2NSw2IEBACiAjaW1wb3J0IDxBVktpdC9BVkJhY2tncm91bmRWaWV3Lmg+
CiAjZW5kaWYKIAotI2ltcG9ydCA8QVZLaXQvQVZQbGF5ZXJDb250cm9sbGVyLmg+CiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oIm9iamMtcHJvcGVydHktbm8tYXR0cmlidXRlIikKICNpbXBvcnQgPEFW
S2l0L0FWUGxheWVyTGF5ZXJWaWV3Lmg+CiBJR05PUkVfV0FSTklOR1NfRU5ECkBAIC0xMTUsMjQg
KzE0Miw2IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIEFWQmFja2dyb3VuZFZpZXdUaW50
RWZmZWN0U3R5bGUpIHsKIC0gKHZvaWQpYWRkU3VidmlldzooVUlWaWV3ICopc3VidmlldyBhcHBs
eWluZ01hdGVyaWFsU3R5bGU6KEFWQmFja2dyb3VuZFZpZXdNYXRlcmlhbFN0eWxlKW1hdGVyaWFs
U3R5bGUgdGludEVmZmVjdFN0eWxlOihBVkJhY2tncm91bmRWaWV3VGludEVmZmVjdFN0eWxlKXRp
bnRFZmZlY3RTdHlsZTsKIEBlbmQKIAotQGludGVyZmFjZSBBVlBsYXllckNvbnRyb2xsZXIgOiBV
SVJlc3BvbmRlcgotQGVuZAotCi1AaW50ZXJmYWNlIEFWUGxheWVyQ29udHJvbGxlciAoKQotdHlw
ZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgQVZQbGF5ZXJDb250cm9sbGVyU3RhdHVzKSB7Ci0gICAg
QVZQbGF5ZXJDb250cm9sbGVyU3RhdHVzVW5rbm93biA9IDAsCi0gICAgQVZQbGF5ZXJDb250cm9s
bGVyU3RhdHVzUmVhZHlUb1BsYXkgPSAyLAotfTsKLQotdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdl
ciwgQVZQbGF5ZXJDb250cm9sbGVyRXh0ZXJuYWxQbGF5YmFja1R5cGUpIHsKLSAgICBBVlBsYXll
ckNvbnRyb2xsZXJFeHRlcm5hbFBsYXliYWNrVHlwZU5vbmUgPSAwLAotICAgIEFWUGxheWVyQ29u
dHJvbGxlckV4dGVybmFsUGxheWJhY2tUeXBlQWlyUGxheSA9IDEsCi0gICAgQVZQbGF5ZXJDb250
cm9sbGVyRXh0ZXJuYWxQbGF5YmFja1R5cGVUVk91dCA9IDIsCi19OwotCi1AcHJvcGVydHkgKE5T
X05PTkFUT01JQ19JT1NPTkxZLCByZWFkb25seSkgQVZQbGF5ZXJDb250cm9sbGVyU3RhdHVzIHN0
YXR1czsKLUBlbmQKLQogQGNsYXNzIEFWUGxheWVyTGF5ZXI7CiAKIEBpbnRlcmZhY2UgQVZQaWN0
dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3IDogVUlWaWV3CkBAIC0xNzgsNiArMTg3LDI2IEBA
IE5TX0FTU1VNRV9OT05OVUxMX0VORAogI2VuZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5BTF9TREsp
CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAorI2lmIFBMQVRGT1JNKE1BQykKKyNp
ZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorI2ltcG9ydCA8QVZLaXQvQVZQbGF5ZXJWaWV3X1By
aXZhdGUuaD4KKyNlbHNlCisjaW1wb3J0IDxBVktpdC9BVlBsYXllclZpZXcuaD4KKworTlNfQVNT
VU1FX05PTk5VTExfQkVHSU4KKworQGludGVyZmFjZSBBVlBsYXllclZpZXcgKFdlYktpdEZ1bGxz
Y3JlZW5TUEkpCitAcHJvcGVydHkgQVZQbGF5ZXJDb250cm9sbGVyICpwbGF5ZXJDb250cm9sbGVy
OworQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBpc0Z1bGxTY3JlZW47CistICh2b2lkKWVudGVy
RnVsbFNjcmVlbjooaWQpc2VuZGVyOworLSAodm9pZClleGl0RnVsbFNjcmVlbjooaWQpc2VuZGVy
OworQGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKKworI2VuZGlmIC8vIFVTRShBUFBMRV9J
TlRFUk5BTF9TREspCisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQorCiAjaWYgRU5BQkxFKFdJUkVM
RVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpZiBVU0Uo
QVBQTEVfSU5URVJOQUxfU0RLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9z
cGkvbWFjL05TV2luZG93U1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMvTlNX
aW5kb3dTUEkuaAppbmRleCAwOGFmOTVhMDQ0YWQ2OTkwNDIwNjIxN2E0YzRhNzUwMDMwOWE0YTEz
Li5jNTY5NDI0YWM5ZmJkNGY0YmExZGFlMjk3NjZmMWQwYjY0MGEwZTdjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMvTlNXaW5kb3dTUEkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMvTlNXaW5kb3dTUEkuaApAQCAtNDAsNyArNDAsOCBAQAog
LSAoaWQpX29sZEZpcnN0UmVzcG9uZGVyQmVmb3JlQmVjb21pbmc7CiAtIChpZClfbmV3Rmlyc3RS
ZXNwb25kZXJBZnRlclJlc2lnbmluZzsKIC0gKHZvaWQpX3NldEN1cnNvckZvck1vdXNlTG9jYXRp
b246KE5TUG9pbnQpcG9pbnQ7Ci0KKy0gKHZvaWQpZXhpdEZ1bGxTY3JlZW5Nb2RlOihpZClzZW5k
ZXI7CistICh2b2lkKWVudGVyRnVsbFNjcmVlbk1vZGU6KGlkKXNlbmRlcjsKIEBlbmQKIAogZW51
bSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMvUVRLaXRTUEku
aCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9RVEtpdFNQSS5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwNGJiMjQ5NjI3MDg1NzI5ZjE1YmExNGI0MjhhNGU3MGYyZjZi
YmM0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9RVEtpdFNQSS5oCisrKyAvZGV2L251bGwKQEAgLTEs
MTUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgVVNFKEFQ
UExFX0lOVEVSTkFMX1NESykKLQotI2ltcG9ydCA8UVRLaXQvUVRIVURCYWNrZ3JvdW5kVmlld19Q
cml2YXRlLmg+Ci0jaW1wb3J0IDxRVEtpdC9RVEtpdF9Qcml2YXRlLmg+Ci0jaW1wb3J0IDxRVEtp
dC9RVFV0aWxpdGllc19Qcml2YXRlLmg+Ci0KLSNlbHNlCi0KLWVudW0gewotICAgIGtRVFRpbWVJ
c0luZGVmaW5pdGUgPSAxIDw8IDAKLX07Ci0KLXR5cGVkZWYgc3RydWN0IHsKLSAgICBsb25nIGxv
bmcgdGltZVZhbHVlOwotICAgIGxvbmcgdGltZVNjYWxlOwotICAgIGxvbmcgZmxhZ3M7Ci19IFFU
VGltZTsKLQotdHlwZWRlZiBzdHJ1Y3QgewotICAgIFFUVGltZSB0aW1lOwotICAgIFFUVGltZSBk
dXJhdGlvbjsKLX0gUVRUaW1lUmFuZ2U7Ci0KLXR5cGVkZWYgZW51bSB7Ci0gICAgUVRJbmNsdWRl
Q29tbW9uVHlwZXMgPSAwLAotICAgIFFUSW5jbHVkZU9ubHlGaWdNZWRpYUZpbGVUeXBlcyA9IDEg
PDwgOCwKLX0gUVRNb3ZpZUZpbGVUeXBlT3B0aW9uczsKLQotZW51bSB7Ci0gICAgUVRNb3ZpZVR5
cGVVbmtub3duID0gMCwKLSAgICBRVE1vdmllVHlwZUxvY2FsLAotICAgIFFUTW92aWVUeXBlRmFz
dFN0YXJ0LAotICAgIFFUTW92aWVUeXBlTGl2ZVN0cmVhbSwKLSAgICBRVE1vdmllVHlwZVN0b3Jl
ZFN0cmVhbQotfTsKLQotQGNsYXNzIFFUVHJhY2s7Ci0KLUBpbnRlcmZhY2UgUVRNZWRpYSA6IE5T
T2JqZWN0Ci0KLS0gKGlkKWF0dHJpYnV0ZUZvcktleTooTlNTdHJpbmcgKilhdHRyaWJ1dGVLZXk7
Ci0KLUBlbmQKLQotQGludGVyZmFjZSBRVE1vdmllIDogTlNPYmplY3QgPE5TQ29kaW5nLCBOU0Nv
cHlpbmc+Ci0KLSsgKE5TQXJyYXkgKiltb3ZpZUZpbGVUeXBlczooUVRNb3ZpZUZpbGVUeXBlT3B0
aW9ucyl0eXBlczsKLQotKyAodm9pZClkaXNhYmxlQ29tcG9uZW50OihDb21wb25lbnREZXNjcmlw
dGlvbiljb21wb25lbnQ7Ci0KLS0gKGlkKWluaXRXaXRoQXR0cmlidXRlczooTlNEaWN0aW9uYXJ5
ICopYXR0cmlidXRlcyBlcnJvcjooTlNFcnJvciAqKillcnJvclB0cjsKLQotLSAodm9pZClwbGF5
OwotLSAodm9pZClzdG9wOwotCi0tIChRVFRpbWUpZHVyYXRpb247Ci0KLS0gKFFUVGltZSljdXJy
ZW50VGltZTsKLS0gKHZvaWQpc2V0Q3VycmVudFRpbWU6KFFUVGltZSl0aW1lOwotCi0tIChmbG9h
dClyYXRlOwotLSAodm9pZClzZXRSYXRlOihmbG9hdClyYXRlOwotCi0tIChmbG9hdCl2b2x1bWU7
Ci0tICh2b2lkKXNldFZvbHVtZTooZmxvYXQpdm9sdW1lOwotCi0tIChOU0RpY3Rpb25hcnkgKilt
b3ZpZUF0dHJpYnV0ZXM7Ci0KLS0gKGlkKWF0dHJpYnV0ZUZvcktleTooTlNTdHJpbmcgKilhdHRy
aWJ1dGVLZXk7Ci0tICh2b2lkKXNldEF0dHJpYnV0ZTooaWQpdmFsdWUgZm9yS2V5OihOU1N0cmlu
ZyAqKWF0dHJpYnV0ZUtleTsKLQotLSAoTlNBcnJheSAqKXRyYWNrczsKLQotLSAoTlNBcnJheSAq
KWFsdGVybmF0ZUdyb3VwVHlwZXM7Ci0tIChOU0FycmF5ICopYWx0ZXJuYXRlc0Zvck1lZGlhVHlw
ZTooTlNTdHJpbmcgKil0eXBlOwotLSAodm9pZClkZXNlbGVjdEFsdGVybmF0ZUdyb3VwVHJhY2s6
KFFUVHJhY2sgKilhbHRlcm5hdGVUcmFjazsKLS0gKHZvaWQpc2VsZWN0QWx0ZXJuYXRlR3JvdXBU
cmFjazooUVRUcmFjayAqKWFsdGVybmF0ZVRyYWNrOwotCi0tIChOU1VSTCAqKVVSTDsKLS0gKFVJ
bnQzMiltb3ZpZVR5cGU7Ci0KLUBlbmQKLQotQGludGVyZmFjZSBRVE1vdmllTGF5ZXIgOiBDQUxh
eWVyCi0KLS0gKHZvaWQpc2V0TW92aWU6KFFUTW92aWUgKiltb3ZpZTsKLS0gKFFUTW92aWUgKilt
b3ZpZTsKLQotQGVuZAotCi1AaW50ZXJmYWNlIE5TVmFsdWUgKE5TVmFsdWVRVFRpbWVSYW5nZUV4
dGVuc2lvbnMpCi0rIChOU1ZhbHVlICopdmFsdWVXaXRoUVRUaW1lUmFuZ2U6KFFUVGltZVJhbmdl
KXJhbmdlOwotLSAoUVRUaW1lUmFuZ2UpUVRUaW1lUmFuZ2VWYWx1ZTsKLUBlbmQKLQotQGludGVy
ZmFjZSBRVFRyYWNrIDogTlNPYmplY3QKLQotLSAoUVRNZWRpYSAqKW1lZGlhOwotCi0tIChCT09M
KWlzRW5hYmxlZDsKLS0gKHZvaWQpc2V0RW5hYmxlZDooQk9PTCllbmFibGVkOwotCi0tIChpZClh
dHRyaWJ1dGVGb3JLZXk6KE5TU3RyaW5nICopYXR0cmlidXRlS2V5OwotCi1AZW5kCi0KLUBpbnRl
cmZhY2UgUVRIVURCYWNrZ3JvdW5kVmlldyA6IE5TVmlldwotCi0tICh2b2lkKXNldENvbnRlbnRC
b3JkZXJQb3NpdGlvbjooQ0dGbG9hdCljb250ZW50Qm9yZGVyUG9zaXRpb247Ci0KLUBlbmQKLQot
QGludGVyZmFjZSBRVFV0aWxpdGllcyA6IE5TT2JqZWN0Ci0KLSsgKGlkKXF0VXRpbGl0aWVzOwot
Ci0tIChOU0FycmF5ICopc2l0ZXNJbkRvd25sb2FkQ2FjaGU7Ci0tICh2b2lkKWNsZWFyRG93bmxv
YWRDYWNoZTsKLS0gKHZvaWQpY2xlYXJEb3dubG9hZENhY2hlRm9yU2l0ZTooTlNTdHJpbmcgKilz
aXRlOwotCi1AZW5kCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDA4ZDVhMmRhNTFlZDU5MTdiMTY4ZjFlNzMzODRk
ODkzYzM2MTZjOTYuLmIzYTBhNDJiMWYwYWFhY2Q0NjgwOGI1MmEzY2QyODE1N2IzZWM2OGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTQxMjgsNiArNDEyOCw3IEBACiAJCUNEQUI2RDI5MTdDN0RFNkMwMEM2MEIzNCAvKiBNZWRp
YUNvbnRyb2xzSG9zdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0RBQjZEMjcxN0M3REU2QzAwQzYwQjM0IC8qIE1lZGlhQ29udHJvbHNIb3N0LmggKi87
IH07CiAJCUNEQUI2RDJFMTdDODE0RUUwMEM2MEIzNCAvKiBKU01lZGlhQ29udHJvbHNIb3N0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFCNkQyQzE3
QzgxNEVFMDBDNjBCMzQgLyogSlNNZWRpYUNvbnRyb2xzSG9zdC5oICovOyB9OwogCQlDREFCNkQz
MTE3QzkyNTk1MDBDNjBCMzQgLyogVXNlckFnZW50U2NyaXB0cy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQjZEMkYxN0M5MjU5NTAwQzYwQjM0IC8q
IFVzZXJBZ2VudFNjcmlwdHMuaCAqLzsgfTsKKwkJQ0RCNjM1NDkyM0Y2MDIzQTAwQzBGOURFIC8q
IFdlYkFWUGxheWVyQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0RBMjlBMkMxQ0JGNzNGQzAwOTAxQ0NGIC8qIFdlYkFWUGxheWVyQ29u
dHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUNEQjcwNDVBMUY3NDY1QTEwMDM5MjNERiAvKiBDRE1GYWlyUGxheVN0cmVhbWluZy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RCNzA0NTgxRjc0
NjVBMTAwMzkyM0RGIC8qIENETUZhaXJQbGF5U3RyZWFtaW5nLmggKi87IH07CiAJCUNEQjcwNDVC
MUY3NDY1QTEwMDM5MjNERiAvKiBDRE1GYWlyUGxheVN0cmVhbWluZy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREI3MDQ1OTFGNzQ2NUExMDAzOTIz
REYgLyogQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwICovOyB9OwogCQlDREJFQUVBQzE5RDkyQjZD
MDBCRUJBODggLyogTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREJFQUVBQTE5RDkyQjZDMDBCRUJBODgg
LyogTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMubW0gKi87IH07CkBAIC0zMjg2Miw2ICszMjg2
Myw3IEBACiAJCQkJMDdENjM3NDAxQkIwQjExMzAwMjU2Q0U5IC8qIFdlYkF1ZGlvU291cmNlUHJv
dmlkZXJBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzRGNTVFMTIwNEYzQjIzMDAyOTQ4
QzYgLyogV2ViQXV0aGVudGljYXRpb25Db25zdGFudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3
MTUyQjgwMjFEREE1ODEwMDBDMzdDQSAvKiBXZWJBdXRoZW50aWNhdGlvblV0aWxzLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlDREI2MzU0OTIzRjYwMjNBMDBDMEY5REUgLyogV2ViQVZQbGF5ZXJDb250
cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxRjM2RUE5QzFFMjFCQTE3MDA2MjFFMjUgLyog
V2ViQmFja2dyb3VuZFRhc2tDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUI4MUNC
NTFGQUE0NDYyMDAzN0QxRTYgLyogV2ViQ29uc29sZUFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5QkJBMkNBQjFGNjc5RTBDMDBGRDFDMUUgLyogV2ViQ29udGVudFJlYWRlci5oIGluIEhlYWRl
cnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBhNzNi
YzBiNGMyZmVlYjMxM2RmZTc3NWM4OGQ4ZWE5ZDA5OWEwYmY1Li4yNTQyOWQ0NmIxYWU2OWI4YTA3
ZWE1OTRiYTEwNzFlN2FiNGJjNjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAKQEAgLTU3ODksNyArNTc4OSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVk
aWFWb2x1bWVEaWRDaGFuZ2UoKQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnZpc2liaWxpdHlT
dGF0ZUNoYW5nZWQoKQogewotICAgIGJvb2wgZWxlbWVudElzSGlkZGVuID0gZG9jdW1lbnQoKS5o
aWRkZW4oKSAmJiBtX3ZpZGVvRnVsbHNjcmVlbk1vZGUgIT0gVmlkZW9GdWxsc2NyZWVuTW9kZVBp
Y3R1cmVJblBpY3R1cmU7CisgICAgYm9vbCBlbGVtZW50SXNIaWRkZW4gPSBkb2N1bWVudCgpLmhp
ZGRlbigpICYmIG1fdmlkZW9GdWxsc2NyZWVuTW9kZSA9PSBWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9u
ZTsKICAgICBpZiAoZWxlbWVudElzSGlkZGVuID09IG1fZWxlbWVudElzSGlkZGVuKQogICAgICAg
ICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggNTUy
MmY4Y2U1MmEwMzk3NzA4NmViZDYwMzk0YjZiOWE4MTJlNTg1Yi4uYzg4YjU3M2M1Mzg2ODkwNDE4
ZmMzMDMwNGU4YjlkYjI4NjQ4OGRkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmgKQEAgLTE4MSw3ICsxODEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQcmVwYXJlZFRv
UmV0dXJuVmlkZW9MYXllclRvSW5saW5lKGJvb2wpOwogICAgIHZvaWQgd2FpdEZvclByZXBhcmVk
Rm9ySW5saW5lVGhlbihXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciA9
IFtdIHsgfSk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYg
RU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKLSAgICB2b2lkIHNldFZpZGVvRnVsbHNj
cmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlciA9IFtdIHsgfSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWRlb0Z1
bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIgPSBbXSB7IH0pOwogI2lmZGVmIF9fT0JKQ19fCiAgICAgUGxhdGZvcm1M
YXllciogdmlkZW9GdWxsc2NyZWVuTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3ZpZGVvRnVsbHNj
cmVlbkxheWVyLmdldCgpOyB9CiAjZW5kaWYKQEAgLTQ0Niw3ICs0NDYsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChWaWRlb0Z1bGxzY3JlZW5Nb2Rl
KTsKIAogICAgIHZvaWQgZW50ZXJGdWxsc2NyZWVuKFZpZGVvRnVsbHNjcmVlbk1vZGUpOwotICAg
IHZvaWQgZW50ZXJGdWxsc2NyZWVuKCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBlbnRlckZ1bGxzY3JlZW4oKSBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGV4
aXRGdWxsc2NyZWVuKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWRlb0Z1bGxzY3Jl
ZW5TdGFuZGJ5KGJvb2wpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5oCmluZGV4IDdkZWUxNTI3ZWYy
Mzk1ZjllNmJjZTBjY2NiZWJiZGU3NGQ2ZGU3NGQuLjBmOWQxMjNiNzFhMGI4OWYwMzVlYzJjMDM5
NTc5OGY0YzA3YjQ4YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Q
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5oCkBAIC0yNiw3ICsyNiw3IEBA
CiAKICNwcmFnbWEgb25jZQogCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpZiBIQVZFKEFW
S0lUKQogCiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIkhUTUxNZWRpYUVs
ZW1lbnRFbnVtcy5oIgpAQCAtNDEsMTAgKzQxLDYgQEAKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+CiAKIE9CSkNfQ0xBU1MgV2ViQVZQbGF5ZXJDb250cm9sbGVyOwotT0JKQ19DTEFTUyBBVlBs
YXllclZpZXdDb250cm9sbGVyOwotT0JKQ19DTEFTUyBVSVZpZXdDb250cm9sbGVyOwotT0JKQ19D
TEFTUyBVSVdpbmRvdzsKLU9CSkNfQ0xBU1MgVUlWaWV3OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBJbnRSZWN0OwpAQCAtOTIsNSArODgsNCBAQCBwcm90ZWN0ZWQ6CiAKIH0KIAotI2Vu
ZGlmCi0KKyNlbmRpZiAvLyBIQVZFKEFWS0lUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1BsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Lm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1BsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Lm1tCmluZGV4
IGZjYWIyNmZiYjcyZGViOTg5M2QyNWUyZmNkYmI5YTFkMTU5NzNjYmUuLjlmMjc2ZWE5YmNiOGE0
N2Y4MDAxNjM1MTljZTA3MWI5ZjQ5MDAyZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQubW0KQEAg
LTI3LDcgKzI3LDYgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiUGxheWJhY2tTZXNz
aW9uSW50ZXJmYWNlQVZLaXQuaCIKIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaWYgSEFW
RShBVktJVCkKIAogI2ltcG9ydCAiTG9nZ2luZy5oIgpAQCAtMTg1LDkgKzE4NCw5IEBAIHZvaWQg
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlv
bnNDaGFuZ2VkKGNvbnN0IFZlCiB2b2lkIFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Ojpl
eHRlcm5hbFBsYXliYWNrQ2hhbmdlZChib29sIGVuYWJsZWQsIFBsYXliYWNrU2Vzc2lvbk1vZGVs
OjpFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSB0YXJnZXRUeXBlLCBjb25zdCBTdHJpbmcmIGxv
Y2FsaXplZERldmljZU5hbWUpCiB7CiAgICAgQVZQbGF5ZXJDb250cm9sbGVyRXh0ZXJuYWxQbGF5
YmFja1R5cGUgZXh0ZXJuYWxQbGF5YmFja1R5cGUgPSBBVlBsYXllckNvbnRyb2xsZXJFeHRlcm5h
bFBsYXliYWNrVHlwZU5vbmU7Ci0gICAgaWYgKHRhcmdldFR5cGUgPT0gUGxheWJhY2tTZXNzaW9u
TW9kZWw6OlRhcmdldFR5cGVBaXJQbGF5KQorICAgIGlmIChlbmFibGVkICYmIHRhcmdldFR5cGUg
PT0gUGxheWJhY2tTZXNzaW9uTW9kZWw6OlRhcmdldFR5cGVBaXJQbGF5KQogICAgICAgICBleHRl
cm5hbFBsYXliYWNrVHlwZSA9IEFWUGxheWVyQ29udHJvbGxlckV4dGVybmFsUGxheWJhY2tUeXBl
QWlyUGxheTsKLSAgICBlbHNlIGlmICh0YXJnZXRUeXBlID09IFBsYXliYWNrU2Vzc2lvbk1vZGVs
OjpUYXJnZXRUeXBlVFZPdXQpCisgICAgZWxzZSBpZiAoZW5hYmxlZCAmJiB0YXJnZXRUeXBlID09
IFBsYXliYWNrU2Vzc2lvbk1vZGVsOjpUYXJnZXRUeXBlVFZPdXQpCiAgICAgICAgIGV4dGVybmFs
UGxheWJhY2tUeXBlID0gQVZQbGF5ZXJDb250cm9sbGVyRXh0ZXJuYWxQbGF5YmFja1R5cGVUVk91
dDsKIAogICAgIFdlYkFWUGxheWVyQ29udHJvbGxlciogcGxheWVyQ29udHJvbGxlciA9IG1fcGxh
eWVyQ29udHJvbGxlci5nZXQoKTsKQEAgLTIzMSw0ICsyMzAsMyBAQCB2b2lkIFBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZUFWS2l0Ojptb2RlbERlc3Ryb3llZCgpCiB9CiAKICNlbmRpZiAvLyBIQVZF
KEFWS0lUKQotI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQVZQbGF5ZXJDb250cm9sbGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQVZQbGF5ZXJDb250cm9sbGVyLmgKaW5kZXggYTYzOWE5
ODFmZmMwYjA2MmRhNjMwYzgxYmVhNGJkZGJmMmY2MzZhMS4uODk0MGQwMmMzOTAzNmEzMzA0OTY2
N2RlZDMxOGViOTZmNzVkMTIwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1dlYkFWUGxheWVyQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9XZWJBVlBsYXllckNvbnRyb2xsZXIuaApAQCAtMjMsNyArMjMsNyBAQAogICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgSEFWRShBVktJVCkKKyNp
ZiBIQVZFKEFWS0lUKQogCiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0FWS2l0U1BJLmg+CiAKQEAg
LTM2LDcgKzM2LDcgQEAgY2xhc3MgUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ7CiBAcHJv
cGVydHkgKHJldGFpbikgTlNTdHJpbmcgKmxvY2FsaXplZERpc3BsYXlOYW1lOwogQGVuZAogCi1A
aW50ZXJmYWNlIFdlYkFWUGxheWVyQ29udHJvbGxlciA6IE5TT2JqZWN0IHsKK1dFQkNPUkVfRVhQ
T1JUIEBpbnRlcmZhY2UgV2ViQVZQbGF5ZXJDb250cm9sbGVyIDogTlNPYmplY3QgewogICAgIFdl
YkFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKl9jdXJyZW50QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlv
bjsKICAgICBXZWJBVk1lZGlhU2VsZWN0aW9uT3B0aW9uICpfY3VycmVudExlZ2libGVNZWRpYVNl
bGVjdGlvbk9wdGlvbjsKICAgICBCT09MIF9waWN0dXJlSW5QaWN0dXJlSW50ZXJydXB0ZWQ7CkBA
IC01Miw2ICs1Miw5IEBAIGNsYXNzIFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OwogQHBy
b3BlcnR5IChyZWFkb25seSkgQk9PTCBjYW5TZWVrVG9CZWdpbm5pbmc7CiBAcHJvcGVydHkgKHJl
YWRvbmx5KSBCT09MIGNhblNlZWtUb0VuZDsKIEBwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgaXNT
Y3J1YmJpbmc7CitAcHJvcGVydHkgKHJlYWRvbmx5KSBCT09MIGNhblNlZWtGcmFtZUJhY2t3YXJk
OworQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBjYW5TZWVrRnJhbWVGb3J3YXJkOworQHByb3Bl
cnR5IChyZWFkb25seSkgQk9PTCBoYXNDb250ZW50Q2hhcHRlcnM7CiAKIEBwcm9wZXJ0eSBCT09M
IGNhblBsYXk7CiBAcHJvcGVydHkgKGdldHRlcj1pc1BsYXlpbmcpIEJPT0wgcGxheWluZzsKQEAg
LTEwMCw0ICsxMDMsMyBAQCBjbGFzcyBQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDsKIEBl
bmQKIAogI2VuZGlmCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9X
ZWJBVlBsYXllckNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2Vi
QVZQbGF5ZXJDb250cm9sbGVyLm1tCmluZGV4IGQ1OWJhODc4NzdlYzRjOGE4YzY2YzE4MGIxZTc1
Y2FiMTlkNDQ0ZGEuLjIyOTc3NWM2Y2I1MDUzYjlhNTRlM2MwOWM0YmNjZjUzY2E5NzhkYjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJBVlBsYXllckNvbnRyb2xs
ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkFWUGxheWVyQ29udHJv
bGxlci5tbQpAQCAtMjcsNyArMjcsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJX
ZWJBVlBsYXllckNvbnRyb2xsZXIuaCIKIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEhB
VkUoQVZLSVQpCisjaWYgSEFWRShBVktJVCkKIAogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9y
dCAiUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQuaCIKQEAgLTM5Nyw2ICszOTcsMTYgQEAg
LSAodm9pZClzZWVrQ2hhcHRlckZvcndhcmQ6KGlkKXNlbmRlcgogICAgIFtzZWxmIHNlZWtUb0Vu
ZDpzZW5kZXJdOwogfQogCistIChCT09MKWNhblNlZWtGcmFtZUJhY2t3YXJkCit7CisgICAgcmV0
dXJuIFlFUzsKK30KKworLSAoQk9PTCljYW5TZWVrRnJhbWVGb3J3YXJkCit7CisgICAgcmV0dXJu
IFlFUzsKK30KKwogLSAoQk9PTCloYXNNZWRpYVNlbGVjdGlvbk9wdGlvbnMKIHsKICAgICByZXR1
cm4gW3NlbGYgaGFzQXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNdIHx8IFtzZWxmIGhhc0xlZ2li
bGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNdOwpAQCAtNjUwLDUgKzY2MCw1IEBAIC0gKHZvaWQpZGVh
bGxvYwogCiBAZW5kCiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQorI2VuZGlmIC8v
IEhBVkUoQVZLSVQpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9X
ZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dl
YkNvcmVGdWxsU2NyZWVuV2luZG93LmgKaW5kZXggMjExY2NlYTFlNGQ0MzU2YTU5MDcwMTY3YWVk
ZGY5MGMyYzUwMDg1MC4uNjI5N2IwZGJmNzhkNmJiMjFhNDRiNTIyM2FjYjU2NzgzNGQ4ZDVkMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVGdWxsU2NyZWVu
V2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVGdWxsU2Ny
ZWVuV2luZG93LmgKQEAgLTIzLDE0ICsyMywxMSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3dfaAotI2Rl
ZmluZSBXZWJDb3JlRnVsbFNjcmVlbldpbmRvd19oCisjcHJhZ21hIG9uY2UKIAotI2lmIEVOQUJM
RShGVUxMU0NSRUVOX0FQSSkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisjaWYgIVBMQVRGT1JN
KElPU19GQU1JTFkpCiAKIFdFQkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgV2ViQ29yZUZ1bGxTY3Jl
ZW5XaW5kb3cgOiBOU1dpbmRvdwogQGVuZAogCi0jZW5kaWYgLy8gRU5BQkxFKEZVTExTQ1JFRU5f
QVBJKQotCi0jZW5kaWYgLy8gV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3dfaAorI2VuZGlmIC8vIFBM
QVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cubW0KaW5kZXggYWE2OGUwMTNmYjRjODIwMjEyYjcw
YjRkMGEwZGIwODI2OTIzOTg4Mi4uMzUzMjU1OWQ5MjI3MDNlZjdlMzIxMDkzYjQ3NWE5OTQ0YjAw
OWMwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVGdWxs
U2NyZWVuV2luZG93Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3Jl
RnVsbFNjcmVlbldpbmRvdy5tbQpAQCAtMjUsNyArMjUsNyBAQAogCiAjaW1wb3J0ICJjb25maWcu
aCIKIAotI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkp
CisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIldlYkNvcmVGdWxsU2NyZWVu
V2luZG93LmgiCiAKQEAgLTEwMSw0ICsxMDEsNCBAQCAtICh2b2lkKXNldFN0eWxlTWFzazooTlNV
SW50ZWdlcilzdHlsZU1hc2sKIH0KIEBlbmQKIAotI2VuZGlmIC8vIEVOQUJMRShGVUxMU0NSRUVO
X0FQSSkKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvV2ViS2l0TGVnYWN5Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L1dlYktpdExlZ2FjeS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IGQzOWU3MzZhNzdkNjY5MmI4MjMxMzFjNGZlNWUzZTM5MjYxNWFiMzMuLmM4NDc1NTNj
MTRjMmEwMmFmMThiNzYxMzlmYjNlODk0MTc0OGQ4ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvV2ViS2l0TGVnYWN5Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9XZWJLaXRMZWdhY3kueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtNjY0LDcgKzY2NCw2IEBACiAJCUMxMUVCRjQxMjE0MTlDQ0UwMEQ2NTlFNyAvKiBXZWJTd2l0
Y2hpbmdHUFVDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQzExRUJGM0YyMTQxOUNDRTAwRDY1OUU3IC8qIFdlYlN3aXRjaGluZ0dQVUNsaWVu
dC5jcHAgKi87IH07CiAJCUMxMUVCRjQyMjE0MTlDQ0UwMEQ2NTlFNyAvKiBXZWJTd2l0Y2hpbmdH
UFVDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEMxMUVCRjQwMjE0MTlDQ0UwMEQ2NTlFNyAvKiBXZWJTd2l0Y2hpbmdHUFVDbGllbnQuaCAqLzsg
fTsKIAkJQzFEODExMjgyMDJDRDgwMDAwRUU3NEY5IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
MUQ4MTEyNzIwMkNEODAwMDBFRTc0RjkgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5t
bSAqLzsgfTsKLQkJQzFEODExMkIyMDJDRENDNDAwRUU3NEY5IC8qIFdlYlZpZGVvRnVsbHNjcmVl
bkhVRFdpbmRvd0NvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDMUQ4MTEyOTIwMkNEQ0MyMDBFRTc0RjkgLyogV2ViVmlkZW9GdWxsc2Ny
ZWVuSFVEV2luZG93Q29udHJvbGxlci5tbSAqLzsgfTsKIAkJQzFEODExMkUyMDJDRUQwODAwRUU3
NEY5IC8qIFdlYldpbmRvd0FuaW1hdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEMxRDgxMTJEMjAyQ0VEMDcwMEVFNzRGOSAvKiBXZWJXaW5kb3dB
bmltYXRpb24ubW0gKi87IH07CiAJCUNEOEJGQ0U3MTU1MzEyMjQwMDVBRkIyNSAvKiBXZWJLaXRG
dWxsU2NyZWVuTGlzdGVuZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDRDhCRkNFNTE1NTMxMjI0MDA1QUZCMjUgLyogV2ViS2l0RnVsbFNjcmVlbkxp
c3RlbmVyLm1tICovOyB9OwogCQlDRDhCRkNFODE1NTMxMjI0MDA1QUZCMjUgLyogV2ViS2l0RnVs
bFNjcmVlbkxpc3RlbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRDhCRkNFNjE1NTMxMjI0MDA1QUZCMjUgLyogV2ViS2l0RnVsbFNjcmVlbkxpc3Rl
bmVyLmggKi87IH07CkBAIC0xNDk1LDggKzE0OTQsNiBAQAogCQlDMTFFQkY0MDIxNDE5Q0NFMDBE
NjU5RTcgLyogV2ViU3dpdGNoaW5nR1BVQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlN3aXRj
aGluZ0dQVUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMUQ4MTEyNjIw
MkNEN0ZFMDBFRTc0RjkgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxRDgxMTI3MjAyQ0Q4MDAwMEVFNzRGOSAv
KiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzFEODExMjkyMDJDRENDMjAwRUU3NEY5IC8qIFdlYlZp
ZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVy
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMUQ4MTEyQTIwMkNEQ0MzMDBFRTc0
RjkgLyogV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9s
bGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxRDgxMTJDMjAyQ0VEMDYwMEVF
NzRGOSAvKiBXZWJXaW5kb3dBbmltYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViV2luZG93QW5pbWF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUMxRDgxMTJEMjAyQ0VEMDcwMEVFNzRGOSAvKiBXZWJXaW5kb3dBbmltYXRpb24ubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJXaW5kb3dBbmltYXRpb24ubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEOEJGQ0U1MTU1MzEyMjQwMDVBRkIyNSAv
KiBXZWJLaXRGdWxsU2NyZWVuTGlzdGVuZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBXZWJLaXRGdWxsU2NyZWVuTGlzdGVuZXIubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0yMDgzLDggKzIwODAsNiBAQAogCQkJCTY1QTdENDRBMDU2OEFCMjYw
MEU3MEVGNiAvKiBXZWJVSURlbGVnYXRlUHJpdmF0ZS5oICovLAogCQkJCUMxRDgxMTI2MjAyQ0Q3
RkUwMEVFNzRGOSAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLmggKi8sCiAJCQkJQzFE
ODExMjcyMDJDRDgwMDAwRUU3NEY5IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW0g
Ki8sCi0JCQkJQzFEODExMkEyMDJDRENDMzAwRUU3NEY5IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkhV
RFdpbmRvd0NvbnRyb2xsZXIuaCAqLywKLQkJCQlDMUQ4MTEyOTIwMkNEQ0MyMDBFRTc0RjkgLyog
V2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5tbSAqLywKIAkJCQk1MUE4QjU3
OTA0MjgzNEY3MDBDQTJEM0EgLyogV2ViVmlldy5oICovLAogCQkJCTUxQThCNTdBMDQyODM0Rjcw
MENBMkQzQSAvKiBXZWJWaWV3Lm1tICovLAogCQkJCUJDMkU0NjRCMEZEOEE5NjgwMEE5RDlERSAv
KiBXZWJWaWV3RGF0YS5oICovLApAQCAtMzU3NCw3ICszNTY5LDYgQEAKIAkJCQlDMEM1QjNFRjEx
NzdBNEEwMDAyQjBBRUYgLyogV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNDYxOERGRjkxREVGNzYwQTAwMzNDM0FBIC8qIFdlYlZhbGlkYXRpb25NZXNzYWdl
Q2xpZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQzFEODExMjgyMDJDRDgwMDAwRUU3NEY5IC8q
IFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLywKLQkJCQlDMUQ4
MTEyQjIwMkNEQ0M0MDBFRTc0RjkgLyogV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJv
bGxlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDMkU0NjRFMEZEOEE5NjgwMEE5RDlERSAvKiBX
ZWJWaWV3RGF0YS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTE0MzBDMTJDMUIyQzVERjcwMERFQTAx
RCAvKiBXZWJWaWV3R3JvdXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTEwQzFENzcxODIwMzAw
RTAwMzY4ODNBIC8qIFdlYlZpc2libGVQb3NpdGlvbi5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZGVvRnVs
bHNjcmVlbkNvbnRyb2xsZXIuaAppbmRleCBlOGZiNTYyOTUwOTViZjM3YTRkMjg4MDc1MDQ2ZjM1
YmRkMmUwODVhLi45YTY0YTYwY2MzYjViZWIxODcyMjIxYTUyNjE5ZmEyZjIyYzIzMjIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZGVvRnVsbHNjcmVl
bkNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIuaApAQCAtMzMsMTQgKzMzLDEyIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIEhUTUxWaWRlb0VsZW1lbnQ7CiB9CiAKLUBjbGFzcyBXZWJWaWRlb0Z1
bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyOwogQGNsYXNzIFdlYldpbmRvd0ZhZGVBbmltYXRp
b247CiAKIEBpbnRlcmZhY2UgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciA6IE5TV2luZG93
Q29udHJvbGxlciB7CiAgICAgUmVmUHRyPFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ+IF92aWRl
b0VsZW1lbnQ7CiAKICAgICBOU1dpbmRvdyAqX2JhY2tncm91bmRGdWxsc2NyZWVuV2luZG93OyAv
LyAocmV0YWluKQotICAgIFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIgKl9o
dWRDb250cm9sbGVyOyAvLyAocmV0YWluKQogCiAgICAgV2ViV2luZG93RmFkZUFuaW1hdGlvbiAq
X2ZhZGVBbmltYXRpb247IC8vIChyZXRhaW4pCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5t
bQppbmRleCA3NmJiNDc2YWIwNDQwMWQ4Mzg0ZTBhN2M3ZjJjMTBlNmYwY2RiNmZiLi5kNjA1Yjcw
Yzg3ZmE5M2E2M2VlZWNjYjQ5N2JjNGQzN2FkNDYyY2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyLm1tCkBAIC0yNywyOCArMjcsMTEzIEBACiAKICNpZiBFTkFCTEUoVklERU8pICYmIFBM
QVRGT1JNKE1BQykKIAotI2ltcG9ydCAiV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJv
bGxlci5oIgotI2ltcG9ydCAiV2ViV2luZG93QW5pbWF0aW9uLmgiCiAjaW1wb3J0IDxBVkZvdW5k
YXRpb24vQVZQbGF5ZXIuaD4KLSNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBsYXllckxheWVyLmg+
Ci0jaW1wb3J0IDxDYXJib24vQ2FyYm9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxWaWRlb0Vs
ZW1lbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQuaD4K
KyNpbXBvcnQgPFdlYkNvcmUvV2ViQVZQbGF5ZXJDb250cm9sbGVyLmg+CisjaW1wb3J0IDxXZWJD
b3JlL1dlYkNvcmVGdWxsU2NyZWVuV2luZG93Lmg+CisjaW1wb3J0IDxvYmpjL21lc3NhZ2UuaD4K
ICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgotI2ltcG9ydCA8cGFsL3N5c3RlbS9TbGVlcERpc2Fi
bGVyLmg+CisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0FWS2l0U1BJLmg+CisjaW1wb3J0IDxwYWwv
c3BpL21hYy9OU1dpbmRvd1NQSS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCisjaW1w
b3J0IDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4KICNpbXBvcnQgPHBhbC9jb2NvYS9BVkZv
dW5kYXRpb25Tb2Z0TGluay5oPgogCitTT0ZUTElOS19BVktJVF9GUkFNRVdPUksoKQorU09GVF9M
SU5LX0NMQVNTKEFWS2l0LCBBVlBsYXllclZpZXcpCisKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0JFR0lOCiAKLUBpbnRlcmZhY2UgV2ViVmlkZW9GdWxsc2NyZWVuV2luZG93IDogTlNX
aW5kb3c8TlNBbmltYXRpb25EZWxlZ2F0ZT4gewotICAgIFNFTCBfY29udHJvbGxlckFjdGlvbk9u
QW5pbWF0aW9uRW5kOwotICAgIFdlYldpbmRvd1NjYWxlQW5pbWF0aW9uICpfZnVsbHNjcmVlbkFu
aW1hdGlvbjsgLy8gKHJldGFpbikKK0BpbnRlcmZhY2UgQVZQbGF5ZXJWaWV3IChTZWNyZXRTdHVm
ZikKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIEJPT0wgc2hvd3NBdWRpb09ubHlJbmRp
Y2F0b3JWaWV3OworQGVuZAorCitAaW50ZXJmYWNlIFdlYk92ZXJsYXlMYXllciA6IENBTGF5ZXIK
K0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdlYk92ZXJsYXlMYXllcgorLSAodm9pZClsYXlvdXRT
dWJsYXllcnMKK3sKKyAgICBmb3IgKENBTGF5ZXIqIGxheWVyIGluIHNlbGYuc3VibGF5ZXJzKQor
ICAgICAgICBsYXllci5mcmFtZSA9IHNlbGYuYm91bmRzOwogfQotLSAodm9pZClhbmltYXRlRnJv
bVJlY3Q6KE5TUmVjdClzdGFydFJlY3QgdG9SZWN0OihOU1JlY3QpZW5kUmVjdCB3aXRoU3ViQW5p
bWF0aW9uOihOU0FuaW1hdGlvbiAqKXN1YkFuaW1hdGlvbiBjb250cm9sbGVyQWN0aW9uOihTRUwp
Y29udHJvbGxlckFjdGlvbjsKIEBlbmQKIAotQGludGVyZmFjZSBXZWJWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyICgpIDxXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyRGVsZWdh
dGU+CitAY2xhc3MgV2ViQVZQbGF5ZXJWaWV3OworCitAcHJvdG9jb2wgV2ViQVZQbGF5ZXJWaWV3
RGVsZWdhdGUKKy0gKEJPT0wpcGxheWVyVmlld0lzRnVsbFNjcmVlbjooV2ViQVZQbGF5ZXJWaWV3
KilwbGF5ZXJWaWV3OworLSAodm9pZClwbGF5ZXJWaWV3UmVxdWVzdEVudGVyRnVsbHNjcmVlbjoo
V2ViQVZQbGF5ZXJWaWV3KilwbGF5ZXJWaWV3OworLSAodm9pZClwbGF5ZXJWaWV3UmVxdWVzdEV4
aXRGdWxsc2NyZWVuOihXZWJBVlBsYXllclZpZXcqKXBsYXllclZpZXc7CitAZW5kCisKK0BpbnRl
cmZhY2UgV2ViQVZQbGF5ZXJWaWV3IDogQVZQbGF5ZXJWaWV3CitAcHJvcGVydHkgKHdlYWspIGlk
PFdlYkFWUGxheWVyVmlld0RlbGVnYXRlPiBkZWxlZ2F0ZTsKK0BlbmQKKworc3RhdGljIGlkPFdl
YkFWUGxheWVyVmlld0RlbGVnYXRlPiBXZWJBVlBsYXllclZpZXdfZGVsZWdhdGUoaWQgYVNlbGYs
IFNFTCkKK3sKKyAgICB2b2lkKiBkZWxlZ2F0ZSA9IG5pbDsKKyAgICBvYmplY3RfZ2V0SW5zdGFu
Y2VWYXJpYWJsZShhU2VsZiwgIl93ZWJEZWxlZ2F0ZSIsICZkZWxlZ2F0ZSk7CisgICAgcmV0dXJu
IHN0YXRpY19jYXN0PGlkPFdlYkFWUGxheWVyVmlld0RlbGVnYXRlPj4oZGVsZWdhdGUpOworfQor
CitzdGF0aWMgdm9pZCBXZWJBVlBsYXllclZpZXdfc2V0RGVsZWdhdGUoaWQgYVNlbGYsIFNFTCwg
aWQ8V2ViQVZQbGF5ZXJWaWV3RGVsZWdhdGU+IGRlbGVnYXRlKQoreworICAgIG9iamVjdF9zZXRJ
bnN0YW5jZVZhcmlhYmxlKGFTZWxmLCAiX3dlYkRlbGVnYXRlIiwgZGVsZWdhdGUpOworfQorCitz
dGF0aWMgQk9PTCBXZWJBVlBsYXllclZpZXdfaXNGdWxsU2NyZWVuKGlkIGFTZWxmLCBTRUwpCit7
CisgICAgV2ViQVZQbGF5ZXJWaWV3ICpwbGF5ZXJWaWV3ID0gYVNlbGY7CisgICAgcmV0dXJuIFtw
bGF5ZXJWaWV3LmRlbGVnYXRlIHBsYXllclZpZXdJc0Z1bGxTY3JlZW46cGxheWVyVmlld107Cit9
CisKK3N0YXRpYyB2b2lkIFdlYkFWUGxheWVyVmlld19lbnRlckZ1bGxTY3JlZW4oaWQgYVNlbGYs
IFNFTCwgaWQgc2VuZGVyKQoreworICAgIFdlYkFWUGxheWVyVmlldyAqcGxheWVyVmlldyA9IGFT
ZWxmOworICAgIFtwbGF5ZXJWaWV3LmRlbGVnYXRlIHBsYXllclZpZXdSZXF1ZXN0RW50ZXJGdWxs
c2NyZWVuOnBsYXllclZpZXddOworfQorCitzdGF0aWMgdm9pZCBXZWJBVlBsYXllclZpZXdfZXhp
dEZ1bGxTY3JlZW4oaWQgYVNlbGYsIFNFTCwgaWQgc2VuZGVyKQoreworICAgIFdlYkFWUGxheWVy
VmlldyAqcGxheWVyVmlldyA9IGFTZWxmOworICAgIFtwbGF5ZXJWaWV3LmRlbGVnYXRlIHBsYXll
clZpZXdSZXF1ZXN0RXhpdEZ1bGxzY3JlZW46cGxheWVyVmlld107Cit9CisKK3N0YXRpYyBXZWJB
VlBsYXllclZpZXcgKmFsbG9jV2ViQVZQbGF5ZXJWaWV3SW5zdGFuY2UoKQoreworICAgIHN0YXRp
YyBDbGFzcyB0aGVDbGFzcyA9IG5pbDsKKyAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VU
b2tlbjsKKyAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57CisgICAgICAgIEFTU0VSVChn
ZXRBVlBsYXllclZpZXdDbGFzcygpKTsKKyAgICAgICAgQ2xhc3MgYUNsYXNzID0gb2JqY19hbGxv
Y2F0ZUNsYXNzUGFpcihnZXRBVlBsYXllclZpZXdDbGFzcygpLCAiV2ViQVZQbGF5ZXJWaWV3Iiwg
MCk7CisgICAgICAgIHRoZUNsYXNzID0gYUNsYXNzOworICAgICAgICBjbGFzc19hZGRNZXRob2Qo
dGhlQ2xhc3MsIEBzZWxlY3RvcihzZXREZWxlZ2F0ZTopLCAoSU1QKVdlYkFWUGxheWVyVmlld19z
ZXREZWxlZ2F0ZSwgInZAOkAiKTsKKyAgICAgICAgY2xhc3NfYWRkTWV0aG9kKHRoZUNsYXNzLCBA
c2VsZWN0b3IoZGVsZWdhdGUpLCAoSU1QKVdlYkFWUGxheWVyVmlld19kZWxlZ2F0ZSwgIkBAOiIp
OworICAgICAgICBjbGFzc19hZGRNZXRob2QodGhlQ2xhc3MsIEBzZWxlY3Rvcihpc0Z1bGxTY3Jl
ZW4pLCAoSU1QKVdlYkFWUGxheWVyVmlld19pc0Z1bGxTY3JlZW4sICJCQDoiKTsKKyAgICAgICAg
Y2xhc3NfYWRkTWV0aG9kKHRoZUNsYXNzLCBAc2VsZWN0b3IoZW50ZXJGdWxsU2NyZWVuOiksIChJ
TVApV2ViQVZQbGF5ZXJWaWV3X2VudGVyRnVsbFNjcmVlbiwgInZAOkAiKTsKKyAgICAgICAgY2xh
c3NfYWRkTWV0aG9kKHRoZUNsYXNzLCBAc2VsZWN0b3IoZXhpdEZ1bGxTY3JlZW46KSwgKElNUClX
ZWJBVlBsYXllclZpZXdfZXhpdEZ1bGxTY3JlZW4sICJ2QDpAIik7CisKKyAgICAgICAgY2xhc3Nf
YWRkSXZhcih0aGVDbGFzcywgIl93ZWJEZWxlZ2F0ZSIsIHNpemVvZihpZCksIGxvZzIoc2l6ZW9m
KGlkKSksICJAIik7CisgICAgICAgIGNsYXNzX2FkZEl2YXIodGhlQ2xhc3MsICJfd2ViSXNGdWxs
U2NyZWVuIiwgc2l6ZW9mKEJPT0wpLCBsb2cyKHNpemVvZihCT09MKSksICJCIik7CisKKyAgICAg
ICAgb2JqY19yZWdpc3RlckNsYXNzUGFpcih0aGVDbGFzcyk7CisgICAgfSk7CisgICAgcmV0dXJu
IChXZWJBVlBsYXllclZpZXcgKilbdGhlQ2xhc3MgYWxsb2NdOworfQorCitAaW50ZXJmYWNlIFdl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgKCkgPFdlYkFWUGxheWVyVmlld0RlbGVnYXRlLCBO
U1dpbmRvd0RlbGVnYXRlPiB7CisgICAgUmVmUHRyPFdlYkNvcmU6OlBsYXliYWNrU2Vzc2lvbk1v
ZGVsTWVkaWFFbGVtZW50PiBfcGxheWJhY2tNb2RlbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6UGxh
eWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ+IF9wbGF5YmFja0ludGVyZmFjZTsKKyAgICBSZXRh
aW5QdHI8TlNWaWV3PiBfY29udGVudE92ZXJsYXk7CisgICAgQk9PTCBfaXNGdWxsU2NyZWVuOwor
fQorQHByb3BlcnR5IChyZWFkb25seSkgV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cqIGZ1bGxzY3Jl
ZW5XaW5kb3c7CitAcHJvcGVydHkgKHJlYWRvbmx5KSBXZWJBVlBsYXllclZpZXcqIHBsYXllclZp
ZXc7CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
CkBAIC01Niw0MSArMTQxLDU2IEBAIEBpbXBsZW1lbnRhdGlvbiBXZWJWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyCiAtIChpZClpbml0CiB7CiAgICAgLy8gRG8gbm90IGRlZmVyIHdpbmRvdyBjcmVh
dGlvbiwgdG8gbWFrZSBzdXJlIC13aW5kb3dOdW1iZXIgaXMgY3JlYXRlZCAobmVlZGVkIGJ5IFdl
YldpbmRvd1NjYWxlQW5pbWF0aW9uKS4KLSAgICBOU1dpbmRvdyAqd2luZG93ID0gW1tXZWJWaWRl
b0Z1bGxzY3JlZW5XaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6TlNaZXJvUmVjdCBz
dHlsZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVm
ZmVyZWQgZGVmZXI6Tk9dOworICAgIE5TV2luZG93ICp3aW5kb3cgPSBbW1dlYkNvcmVGdWxsU2Ny
ZWVuV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0Ok5TWmVyb1JlY3Qgc3R5bGVNYXNr
OihOU1dpbmRvd1N0eWxlTWFza0Z1bGxTaXplQ29udGVudFZpZXcgfCBOU1dpbmRvd1N0eWxlTWFz
a1Jlc2l6YWJsZSkgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOk5PXTsKKyAg
ICBbd2luZG93IHNldENvbGxlY3Rpb25CZWhhdmlvcjooW3dpbmRvdyBjb2xsZWN0aW9uQmVoYXZp
b3JdIHwgTlNXaW5kb3dDb2xsZWN0aW9uQmVoYXZpb3JGdWxsU2NyZWVuUHJpbWFyeSldOworICAg
IHdpbmRvdy5kZWxlZ2F0ZSA9IHNlbGY7CiAgICAgc2VsZiA9IFtzdXBlciBpbml0V2l0aFdpbmRv
dzp3aW5kb3ddOwogICAgIFt3aW5kb3cgcmVsZWFzZV07CiAgICAgaWYgKCFzZWxmKQogICAgICAg
ICByZXR1cm4gbmlsOworICAgIF9wbGF5YmFja01vZGVsID0gV2ViQ29yZTo6UGxheWJhY2tTZXNz
aW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmNyZWF0ZSgpOworICAgIF9wbGF5YmFja0ludGVyZmFjZSA9
IFdlYkNvcmU6OlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpjcmVhdGUoKl9wbGF5YmFj
a01vZGVsKTsKKyAgICBfY29udGVudE92ZXJsYXkgPSBhZG9wdE5TKFtbTlNWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TWmVyb1JlY3RdKTsKKyAgICBfY29udGVudE92ZXJsYXkuZ2V0KCkubGF5
ZXJDb250ZW50c1JlZHJhd1BvbGljeSA9IE5TVmlld0xheWVyQ29udGVudHNSZWRyYXdOZXZlcjsK
KyAgICBfY29udGVudE92ZXJsYXkuZ2V0KCkubGF5ZXIgPSBbW1tXZWJPdmVybGF5TGF5ZXIgYWxs
b2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICBbX2NvbnRlbnRPdmVybGF5IHNldFdhbnRzTGF5
ZXI6WUVTXTsKKyAgICBbX2NvbnRlbnRPdmVybGF5IHNldEF1dG9yZXNpemluZ01hc2s6KE5TVmll
d1dpZHRoU2l6YWJsZSB8IE5TVmlld0hlaWdodFNpemFibGUpXTsKICAgICBbc2VsZiB3aW5kb3dE
aWRMb2FkXTsKKwogICAgIHJldHVybiBzZWxmOwotICAgIAogfQogLSAodm9pZClkZWFsbG9jCiB7
CiAgICAgQVNTRVJUKCFfYmFja2dyb3VuZEZ1bGxzY3JlZW5XaW5kb3cpOwogICAgIEFTU0VSVCgh
X2ZhZGVBbmltYXRpb24pOwotICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRl
cl0gcmVtb3ZlT2JzZXJ2ZXI6c2VsZl07CisgICAgX3BsYXllclZpZXcuZGVsZWdhdGUgPSBuaWw7
CisgICAgX3BsYXliYWNrTW9kZWwgPSBuaWw7CiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCi0t
IChXZWJWaWRlb0Z1bGxzY3JlZW5XaW5kb3cgKilmdWxsc2NyZWVuV2luZG93CistIChXZWJDb3Jl
RnVsbFNjcmVlbldpbmRvdyAqKWZ1bGxzY3JlZW5XaW5kb3cKIHsKLSAgICByZXR1cm4gKFdlYlZp
ZGVvRnVsbHNjcmVlbldpbmRvdyAqKVtzdXBlciB3aW5kb3ddOworICAgIHJldHVybiAoV2ViQ29y
ZUZ1bGxTY3JlZW5XaW5kb3cgKilbc3VwZXIgd2luZG93XTsKIH0KIAogLSAodm9pZCl3aW5kb3dE
aWRMb2FkCiB7CiAgICAgYXV0byB3aW5kb3cgPSBbc2VsZiBmdWxsc2NyZWVuV2luZG93XTsKLSAg
ICBhdXRvIGNvbnRlbnRWaWV3ID0gW3dpbmRvdyBjb250ZW50Vmlld107CiAKICAgICBbd2luZG93
IHNldEhhc1NoYWRvdzpZRVNdOyAvLyBUaGlzIGlzIG5pY2VyIHdpdGggYSBzaGFkb3cuCiAgICAg
W3dpbmRvdyBzZXRMZXZlbDpOU1BvcFVwTWVudVdpbmRvd0xldmVsLTFdOwogCi0gICAgW2NvbnRl
bnRWaWV3IHNldExheWVyOltDQUxheWVyIGxheWVyXV07Ci0gICAgW2NvbnRlbnRWaWV3IHNldFdh
bnRzTGF5ZXI6WUVTXTsKKyAgICBfcGxheWVyVmlldyA9IFthbGxvY1dlYkFWUGxheWVyVmlld0lu
c3RhbmNlKCkgaW5pdFdpdGhGcmFtZTp3aW5kb3cuY29udGVudExheW91dFJlY3RdOworICAgIF9w
bGF5ZXJWaWV3LmNvbnRyb2xzU3R5bGUgPSBBVlBsYXllclZpZXdDb250cm9sc1N0eWxlTm9uZTsK
KyAgICBfcGxheWVyVmlldy5zaG93c0Z1bGxTY3JlZW5Ub2dnbGVCdXR0b24gPSBZRVM7CisgICAg
X3BsYXllclZpZXcuc2hvd3NBdWRpb09ubHlJbmRpY2F0b3JWaWV3ID0gTk87CisgICAgX3BsYXll
clZpZXcuZGVsZWdhdGUgPSBzZWxmOworICAgIHdpbmRvdy5jb250ZW50VmlldyA9IF9wbGF5ZXJW
aWV3OworICAgIFtfY29udGVudE92ZXJsYXkgc2V0RnJhbWU6X3BsYXllclZpZXcuY29udGVudE92
ZXJsYXlWaWV3LmJvdW5kc107CisgICAgW19wbGF5ZXJWaWV3LmNvbnRlbnRPdmVybGF5VmlldyBh
ZGRTdWJ2aWV3Ol9jb250ZW50T3ZlcmxheS5nZXQoKV07CiAKLSAgICBbW05TTm90aWZpY2F0aW9u
Q2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9y
KGFwcGxpY2F0aW9uRGlkUmVzaWduQWN0aXZlOikgbmFtZTpOU0FwcGxpY2F0aW9uRGlkUmVzaWdu
QWN0aXZlTm90aWZpY2F0aW9uIG9iamVjdDpOU0FwcF07Ci0gICAgW1tOU05vdGlmaWNhdGlvbkNl
bnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3Rvcihh
cHBsaWNhdGlvbkRpZENoYW5nZVNjcmVlblBhcmFtZXRlcnM6KSBuYW1lOk5TQXBwbGljYXRpb25E
aWRDaGFuZ2VTY3JlZW5QYXJhbWV0ZXJzTm90aWZpY2F0aW9uIG9iamVjdDpOU0FwcF07CisvLyAg
ICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOnNlbGYg
c2VsZWN0b3I6QHNlbGVjdG9yKGFwcGxpY2F0aW9uRGlkUmVzaWduQWN0aXZlOikgbmFtZTpOU0Fw
cGxpY2F0aW9uRGlkUmVzaWduQWN0aXZlTm90aWZpY2F0aW9uIG9iamVjdDpOU0FwcF07CisvLyAg
ICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOnNlbGYg
c2VsZWN0b3I6QHNlbGVjdG9yKGFwcGxpY2F0aW9uRGlkQ2hhbmdlU2NyZWVuUGFyYW1ldGVyczop
IG5hbWU6TlNBcHBsaWNhdGlvbkRpZENoYW5nZVNjcmVlblBhcmFtZXRlcnNOb3RpZmljYXRpb24g
b2JqZWN0Ok5TQXBwXTsKIH0KIAogLSAoTmFrZWRQdHI8V2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVu
dD4pdmlkZW9FbGVtZW50CkBAIC0xMDcsNzUgKzIwNywyNyBAQCAtICh2b2lkKXNldFZpZGVvRWxl
bWVudDooTmFrZWRQdHI8V2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudD4pdmlkZW9FbGVtZW50CiAK
ICAgICBpZiAoIVtzZWxmIGlzV2luZG93TG9hZGVkXSkKICAgICAgICAgcmV0dXJuOwotICAgIGF1
dG8gY29yZVBsYXllciA9IHZpZGVvRWxlbWVudC0+cGxheWVyKCk7Ci0gICAgaWYgKCFjb3JlUGxh
eWVyKQotICAgICAgICByZXR1cm47Ci0gICAgYXV0byBwbGF5ZXIgPSBjb3JlUGxheWVyLT5vYmpD
QVZGb3VuZGF0aW9uQVZQbGF5ZXIoKTsKLSAgICBpZiAoIXBsYXllcikKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgYXV0byBjb250ZW50VmlldyA9IFtbc2VsZiBmdWxsc2NyZWVuV2luZG93XSBjb250
ZW50Vmlld107Ci0KLSAgICBhdXRvIGxheWVyID0gYWRvcHROUyhbUEFMOjphbGxvY0FWUGxheWVy
TGF5ZXJJbnN0YW5jZSgpIGluaXRdKTsKLSAgICBbbGF5ZXIgc2V0UGxheWVyOnBsYXllcl07Ci0K
LSAgICBbY29udGVudFZpZXcgc2V0TGF5ZXI6bGF5ZXIuZ2V0KCldOwotCi0gICAgLy8gRklYTUU6
IFRoZSB3aW5kb3dEaWRMb2FkIG1ldGhvZCBhbHJlYWR5IGNhbGxlZCB0aGlzLCBzbyBpdCBzaG91
bGQKLSAgICAvLyBub3QgYmUgbmVjZXNzYXJ5IHRvIGRvIGl0IGFnYWluIGhlcmUuCi0gICAgW2Nv
bnRlbnRWaWV3IHNldFdhbnRzTGF5ZXI6WUVTXTsKIAotICAgIC8vIEZJWE1FOiBUaGlzIGNhbiBi
ZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMsIGFuZCB3b24ndCBuZWNlc3NhcmlseSBiZQotICAgIC8v
IGJhbGFuY2VkIGJ5IGNhbGxzIHRvIHdpbmRvd0RpZEV4aXRGdWxsc2NyZWVuIGluIHNvbWUgY2Fz
ZXMsIHNvIGl0Ci0gICAgLy8gd291bGQgYmUgYmV0dGVyIHRvIGNoYW5nZSB0aGluZ3Mgc28gdGhl
IG9ic2VydmVyIGlzIHJlbGlhYmx5IGFkZGVkCi0gICAgLy8gb25seSBvbmNlIGFuZCBndWFyYW50
ZWVkIHJlbW92ZWQgZXZlbiBpbiB1bnVzdWFsIGVkZ2UgY2FzZXMuCi0gICAgW3BsYXllciBhZGRP
YnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJyYXRlIiBvcHRpb25zOjAgY29udGV4dDpudWxscHRy
XTsKKyAgICBfcGxheWJhY2tNb2RlbC0+c2V0TWVkaWFFbGVtZW50KHZpZGVvRWxlbWVudCk7Cisg
ICAgc2VsZi5wbGF5ZXJWaWV3LnBsYXllckNvbnRyb2xsZXIgPSAoQVZQbGF5ZXJDb250cm9sbGVy
KilfcGxheWJhY2tJbnRlcmZhY2UtPnBsYXllckNvbnRyb2xsZXIoKTsKIH0KIAotLSAoQ0dGbG9h
dCljbGVhckZhZGVBbmltYXRpb24KLXsKLSAgICBbX2ZhZGVBbmltYXRpb24gc3RvcEFuaW1hdGlv
bl07Ci0gICAgQ0dGbG9hdCBwcmV2aW91c0FscGhhID0gW19mYWRlQW5pbWF0aW9uIGN1cnJlbnRB
bHBoYV07Ci0gICAgW19mYWRlQW5pbWF0aW9uIHNldFdpbmRvdzpuaWxdOwotICAgIFtfZmFkZUFu
aW1hdGlvbiByZWxlYXNlXTsKLSAgICBfZmFkZUFuaW1hdGlvbiA9IG5pbDsKLSAgICByZXR1cm4g
cHJldmlvdXNBbHBoYTsKLX0KLQotLSAodm9pZCl3aW5kb3dEaWRFeGl0RnVsbHNjcmVlbgorLSAo
dm9pZCllbnRlckZ1bGxzY3JlZW46KE5TU2NyZWVuICopc2NyZWVuCiB7Ci0gICAgQ0FMYXllciAq
bGF5ZXIgPSBbW1tzZWxmIHdpbmRvd10gY29udGVudFZpZXddIGxheWVyXTsKLSAgICBpZiAoW2xh
eWVyIGlzS2luZE9mQ2xhc3M6UEFMOjpnZXRBVlBsYXllckxheWVyQ2xhc3MoKV0pCi0gICAgICAg
IFtbKEFWUGxheWVyTGF5ZXIgKilsYXllciBwbGF5ZXJdIHJlbW92ZU9ic2VydmVyOnNlbGYgZm9y
S2V5UGF0aDpAInJhdGUiXTsKLQotICAgIFtzZWxmIGNsZWFyRmFkZUFuaW1hdGlvbl07Ci0gICAg
W1tzZWxmIHdpbmRvd10gY2xvc2VdOwotICAgIFtzZWxmIHNldFdpbmRvdzpuaWxdOwotICAgIFtz
ZWxmIHVwZGF0ZU1lbnVBbmREb2NrRm9yRnVsbHNjcmVlbl07ICAgCi0gICAgW19odWRDb250cm9s
bGVyIHNldERlbGVnYXRlOm5pbF07Ci0gICAgW19odWRDb250cm9sbGVyIHJlbGVhc2VdOwotICAg
IF9odWRDb250cm9sbGVyID0gbmlsOwotICAgIFtfYmFja2dyb3VuZEZ1bGxzY3JlZW5XaW5kb3cg
Y2xvc2VdOwotICAgIFtfYmFja2dyb3VuZEZ1bGxzY3JlZW5XaW5kb3cgcmVsZWFzZV07Ci0gICAg
X2JhY2tncm91bmRGdWxsc2NyZWVuV2luZG93ID0gbmlsOwotICAgIAotICAgIFtzZWxmIGF1dG9y
ZWxlYXNlXTsgLy8gQXNzb2NpYXRlZCAtcmV0YWluIGlzIGluIC1leGl0RnVsbHNjcmVlbi4KLSAg
ICBfaXNFbmRpbmdGdWxsc2NyZWVuID0gTk87CisgICAgaWYgKCFfdmlkZW9FbGVtZW50KQorICAg
ICAgICByZXR1cm47CisgICAgW05TQW5pbWF0aW9uQ29udGV4dCBiZWdpbkdyb3VwaW5nXTsKKyAg
ICBfdmlkZW9FbGVtZW50LT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihfY29udGVudE92ZXJsYXku
Z2V0KCkubGF5ZXIsIFtzZWxmLCBwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpXSB7Cisg
ICAgICAgIFtzZWxmLmZ1bGxzY3JlZW5XaW5kb3cgc2V0RnJhbWU6c2VsZi52aWRlb0VsZW1lbnRS
ZWN0IGRpc3BsYXk6WUVTXTsKKyAgICAgICAgW3NlbGYuZnVsbHNjcmVlbldpbmRvdyBtYWtlS2V5
QW5kT3JkZXJGcm9udDpzZWxmXTsKKyAgICAgICAgW3NlbGYuZnVsbHNjcmVlbldpbmRvdyBlbnRl
ckZ1bGxTY3JlZW5Nb2RlOnNlbGZdOworICAgICAgICBbTlNBbmltYXRpb25Db250ZXh0IGVuZEdy
b3VwaW5nXTsKKyAgICB9KTsKIH0KIAotLSAodm9pZCl3aW5kb3dEaWRFbnRlckZ1bGxzY3JlZW4K
Ky0gKHZvaWQpZXhpdEZ1bGxzY3JlZW4KIHsKLSAgICBbc2VsZiBjbGVhckZhZGVBbmltYXRpb25d
OwotCi0gICAgQVNTRVJUKCFfaHVkQ29udHJvbGxlcik7Ci0gICAgX2h1ZENvbnRyb2xsZXIgPSBb
W1dlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIgYWxsb2NdIGluaXRdOwotICAg
IFtfaHVkQ29udHJvbGxlciBzZXREZWxlZ2F0ZTpzZWxmXTsKLQotICAgIFtzZWxmIHVwZGF0ZU1l
bnVBbmREb2NrRm9yRnVsbHNjcmVlbl07Ci0gICAgW05TQ3Vyc29yIHNldEhpZGRlblVudGlsTW91
c2VNb3ZlczpZRVNdOwotICAgIAotICAgIC8vIEdpdmUgdGhlIEhVRCBrZXlib2FyZCBmb2N1cyBp
bml0aWFsbHkKLSAgICBbX2h1ZENvbnRyb2xsZXIgZmFkZVdpbmRvd0luXTsKKyAgICBbc2VsZi5m
dWxsc2NyZWVuV2luZG93IGV4aXRGdWxsU2NyZWVuTW9kZTpzZWxmXTsKIH0KIAogLSAoTlNSZWN0
KXZpZGVvRWxlbWVudFJlY3QKQEAgLTE4NCwzMjQgKzIzNiwxMDcgQEAgLSAoTlNSZWN0KXZpZGVv
RWxlbWVudFJlY3QKIH0KIAogLSAodm9pZClhcHBsaWNhdGlvbkRpZFJlc2lnbkFjdGl2ZTooTlNO
b3RpZmljYXRpb24qKW5vdGlmaWNhdGlvbgoteyAgIAorewogICAgIFVOVVNFRF9QQVJBTShub3Rp
ZmljYXRpb24pOwogICAgIE5TV2luZG93KiBmdWxsc2NyZWVuV2luZG93ID0gW3NlbGYgZnVsbHNj
cmVlbldpbmRvd107CiAKICAgICAvLyBSZXBsaWNhdGUgdGhlIFF1aWNrVGltZSBQbGF5ZXIgKFgp
IGJlaGF2aW9yIHdoZW4gbG9zaW5nIGFjdGl2ZSBhcHBsaWNhdGlvbiBzdGF0dXM6Ci0gICAgLy8g
SXMgdGhlIGZ1bGxzY3JlZW4gc2NyZWVuIHRoZSBtYWluIHNjcmVlbj8gKE5vdGU6IHRoaXMgY292
ZXJzIHRoZSBjYXNlIHdoZXJlIG9ubHkgYSAKLSAgICAvLyBzaW5nbGUgc2NyZWVuIGlzIGF2YWls
YWJsZS4pICBJcyB0aGUgZnVsbHNjcmVlbiBzY3JlZW4gb24gdGhlIGN1cnJlbnQgc3BhY2U/IElG
RiBzbywgCi0gICAgLy8gdGhlbiBleGl0IGZ1bGxzY3JlZW4gbW9kZS4gICAgCisgICAgLy8gSXMg
dGhlIGZ1bGxzY3JlZW4gc2NyZWVuIHRoZSBtYWluIHNjcmVlbj8gKE5vdGU6IHRoaXMgY292ZXJz
IHRoZSBjYXNlIHdoZXJlIG9ubHkgYQorICAgIC8vIHNpbmdsZSBzY3JlZW4gaXMgYXZhaWxhYmxl
LikgIElzIHRoZSBmdWxsc2NyZWVuIHNjcmVlbiBvbiB0aGUgY3VycmVudCBzcGFjZT8gSUZGIHNv
LAorICAgIC8vIHRoZW4gZXhpdCBmdWxsc2NyZWVuIG1vZGUuCiAgICAgaWYgKGZ1bGxzY3JlZW5X
aW5kb3cuc2NyZWVuID09IFtOU1NjcmVlbiBzY3JlZW5zXVswXSAmJiBmdWxsc2NyZWVuV2luZG93
Lm9uQWN0aXZlU3BhY2UpCi0gICAgICAgIFtzZWxmIHJlcXVlc3RFeGl0RnVsbHNjcmVlbldpdGhB
bmltYXRpb246Tk9dOwotfQotCi0KLS8vIE1BUks6IC0KLS8vIE1BUks6IEV4cG9zZWQgSW50ZXJm
YWNlCi0KLXN0YXRpYyBOU1JlY3QgZnJhbWVFeHBhbmRlZFRvUmF0aW9PZkZyYW1lKE5TUmVjdCBm
cmFtZVRvRXhwYW5kLCBOU1JlY3QgZnJhbWUpCi17Ci0gICAgLy8gS2VlcCBhIGNvbnN0cmFpbmVk
IGFzcGVjdCByYXRpbyBmb3IgdGhlIGRlc3RpbmF0aW9uIHdpbmRvdwotICAgIE5TUmVjdCByZXN1
bHQgPSBmcmFtZVRvRXhwYW5kOwotICAgIENHRmxvYXQgbmV3UmF0aW8gPSBmcmFtZS5zaXplLndp
ZHRoIC8gZnJhbWUuc2l6ZS5oZWlnaHQ7Ci0gICAgQ0dGbG9hdCBvcmlnaW5hbFJhdGlvID0gZnJh
bWVUb0V4cGFuZC5zaXplLndpZHRoIC8gZnJhbWVUb0V4cGFuZC5zaXplLmhlaWdodDsKLSAgICBp
ZiAobmV3UmF0aW8gPiBvcmlnaW5hbFJhdGlvKSB7Ci0gICAgICAgIENHRmxvYXQgbmV3V2lkdGgg
PSBuZXdSYXRpbyAqIGZyYW1lVG9FeHBhbmQuc2l6ZS5oZWlnaHQ7Ci0gICAgICAgIENHRmxvYXQg
ZGlmZiA9IG5ld1dpZHRoIC0gZnJhbWVUb0V4cGFuZC5zaXplLndpZHRoOwotICAgICAgICByZXN1
bHQuc2l6ZS53aWR0aCA9IG5ld1dpZHRoOwotICAgICAgICByZXN1bHQub3JpZ2luLnggLT0gZGlm
ZiAvIDI7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgQ0dGbG9hdCBuZXdIZWlnaHQgPSBmcmFtZVRv
RXhwYW5kLnNpemUud2lkdGggLyBuZXdSYXRpbzsKLSAgICAgICAgQ0dGbG9hdCBkaWZmID0gbmV3
SGVpZ2h0IC0gZnJhbWVUb0V4cGFuZC5zaXplLmhlaWdodDsKLSAgICAgICAgcmVzdWx0LnNpemUu
aGVpZ2h0ID0gbmV3SGVpZ2h0OwotICAgICAgICByZXN1bHQub3JpZ2luLnkgLT0gZGlmZiAvIDI7
Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXN0YXRpYyBOU1dpbmRvdyAqY3JlYXRl
QmFja2dyb3VuZEZ1bGxzY3JlZW5XaW5kb3coTlNSZWN0IGZyYW1lLCBpbnQgbGV2ZWwpCi17Ci0g
ICAgTlNXaW5kb3cgKndpbmRvdyA9IFtbTlNXaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJl
Y3Q6ZnJhbWUgc3R5bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01hc2sgYmFja2luZzpOU0JhY2tp
bmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOk5PXTsKLSAgICBbd2luZG93IHNldE9wYXF1ZTpZRVNdOwot
ICAgIFt3aW5kb3cgc2V0QmFja2dyb3VuZENvbG9yOltOU0NvbG9yIGJsYWNrQ29sb3JdXTsKLSAg
ICBbd2luZG93IHNldExldmVsOmxldmVsXTsKLSAgICBbd2luZG93IHNldFJlbGVhc2VkV2hlbkNs
b3NlZDpOT107Ci0gICAgcmV0dXJuIHdpbmRvdzsKLX0KLQotLSAodm9pZClzZXR1cEZhZGVBbmlt
YXRpb25JZk5lZWRlZEFuZEZhZGVJbjooQk9PTClmYWRlSW4KLXsKLSAgICBDR0Zsb2F0IGluaXRp
YWxBbHBoYSA9IGZhZGVJbiA/IDAgOiAxOwotICAgIGlmIChfZmFkZUFuaW1hdGlvbikgewotICAg
ICAgICAvLyBNYWtlIHN1cmUgd2Ugc3VwcG9ydCBxdWV1aW5nIGFuaW1hdGlvbiBpZiB0aGUgcHJl
dmlvdXMgb25lIGlzbid0IG92ZXIgeWV0Ci0gICAgICAgIGluaXRpYWxBbHBoYSA9IFtzZWxmIGNs
ZWFyRmFkZUFuaW1hdGlvbl07Ci0gICAgfQotICAgIGlmICghX2ZvcmNlRGlzYWJsZUFuaW1hdGlv
bikKLSAgICAgICAgX2ZhZGVBbmltYXRpb24gPSBbW1dlYldpbmRvd0ZhZGVBbmltYXRpb24gYWxs
b2NdIGluaXRXaXRoRHVyYXRpb246MC4yIHdpbmRvdzpfYmFja2dyb3VuZEZ1bGxzY3JlZW5XaW5k
b3cgaW5pdGlhbEFscGhhOmluaXRpYWxBbHBoYSBmaW5hbEFscGhhOmZhZGVJbiA/IDEgOiAwXTsK
LX0KLQotLSAodm9pZCllbnRlckZ1bGxzY3JlZW46KE5TU2NyZWVuICopc2NyZWVuCi17Ci0gICAg
aWYgKCFzY3JlZW4pCi0gICAgICAgIHNjcmVlbiA9IFtOU1NjcmVlbiBtYWluU2NyZWVuXTsKLQot
ICAgIE5TUmVjdCBlbmRGcmFtZSA9IFtzY3JlZW4gZnJhbWVdOwotICAgIE5TUmVjdCBmcmFtZSA9
IGZyYW1lRXhwYW5kZWRUb1JhdGlvT2ZGcmFtZShbc2VsZiB2aWRlb0VsZW1lbnRSZWN0XSwgZW5k
RnJhbWUpOwotCi0gICAgLy8gQ3JlYXRlIGEgYmxhY2sgd2luZG93IGlmIG5lZWRlZAotICAgIGlm
ICghX2JhY2tncm91bmRGdWxsc2NyZWVuV2luZG93KQotICAgICAgICBfYmFja2dyb3VuZEZ1bGxz
Y3JlZW5XaW5kb3cgPSBjcmVhdGVCYWNrZ3JvdW5kRnVsbHNjcmVlbldpbmRvdyhbc2NyZWVuIGZy
YW1lXSwgW1tzZWxmIHdpbmRvd10gbGV2ZWxdLTEpOwotICAgIGVsc2UKLSAgICAgICAgW19iYWNr
Z3JvdW5kRnVsbHNjcmVlbldpbmRvdyBzZXRGcmFtZTpbc2NyZWVuIGZyYW1lXSBkaXNwbGF5Ok5P
XTsKLQotICAgIFtzZWxmIHNldHVwRmFkZUFuaW1hdGlvbklmTmVlZGVkQW5kRmFkZUluOllFU107
Ci0gICAgaWYgKF9mb3JjZURpc2FibGVBbmltYXRpb24pIHsKLSAgICAgICAgLy8gVGhpcyB3aWxs
IGRpc2FibGUgc2NhbGUgYW5pbWF0aW9uCi0gICAgICAgIGZyYW1lID0gTlNaZXJvUmVjdDsKLSAg
ICB9Ci0gICAgW1tzZWxmIGZ1bGxzY3JlZW5XaW5kb3ddIGFuaW1hdGVGcm9tUmVjdDpmcmFtZSB0
b1JlY3Q6ZW5kRnJhbWUgd2l0aFN1YkFuaW1hdGlvbjpfZmFkZUFuaW1hdGlvbiBjb250cm9sbGVy
QWN0aW9uOkBzZWxlY3Rvcih3aW5kb3dEaWRFbnRlckZ1bGxzY3JlZW4pXTsKLQotICAgIFtfYmFj
a2dyb3VuZEZ1bGxzY3JlZW5XaW5kb3cgb3JkZXJXaW5kb3c6TlNXaW5kb3dCZWxvdyByZWxhdGl2
ZVRvOltbc2VsZiBmdWxsc2NyZWVuV2luZG93XSB3aW5kb3dOdW1iZXJdXTsKLX0KLQotLSAodm9p
ZClleGl0RnVsbHNjcmVlbgotewotICAgIGlmIChfaXNFbmRpbmdGdWxsc2NyZWVuKQotICAgICAg
ICByZXR1cm47Ci0gICAgX2lzRW5kaW5nRnVsbHNjcmVlbiA9IFlFUzsKLSAgICBbX2h1ZENvbnRy
b2xsZXIgY2xvc2VXaW5kb3ddOwotCi0gICAgTlNSZWN0IGVuZEZyYW1lID0gW3NlbGYgdmlkZW9F
bGVtZW50UmVjdF07Ci0KLSAgICBbc2VsZiBzZXR1cEZhZGVBbmltYXRpb25JZk5lZWRlZEFuZEZh
ZGVJbjpOT107Ci0gICAgaWYgKF9mb3JjZURpc2FibGVBbmltYXRpb24pIHsKLSAgICAgICAgLy8g
VGhpcyB3aWxsIGRpc2FibGUgc2NhbGUgYW5pbWF0aW9uCi0gICAgICAgIGVuZEZyYW1lID0gTlNa
ZXJvUmVjdDsKLSAgICB9Ci0gICAgCi0gICAgLy8gV2UgaGF2ZSB0byByZXRhaW4gb3Vyc2VsdmVz
IGJlY2F1c2Ugd2Ugd2FudCB0byBiZSBhbGl2ZSBmb3IgdGhlIGVuZCBvZiB0aGUgYW5pbWF0aW9u
LgotICAgIC8vIElmIG91ciBvd25lciByZWxlYXNlcyB1cyB3ZSBjb3VsZCBjcmFzaCBpZiB0aGlz
IGlzIG5vdCB0aGUgY2FzZS4KLSAgICAvLyBCYWxhbmNlZCBpbiB3aW5kb3dEaWRFeGl0RnVsbHNj
cmVlbgotICAgIFtzZWxmIHJldGFpbl07ICAgIAotCi0gICAgTlNSZWN0IHN0YXJ0RnJhbWUgPSBb
W3NlbGYgd2luZG93XSBmcmFtZV07Ci0gICAgZW5kRnJhbWUgPSBmcmFtZUV4cGFuZGVkVG9SYXRp
b09mRnJhbWUoZW5kRnJhbWUsIHN0YXJ0RnJhbWUpOwotCi0gICAgW1tzZWxmIGZ1bGxzY3JlZW5X
aW5kb3ddIGFuaW1hdGVGcm9tUmVjdDpzdGFydEZyYW1lIHRvUmVjdDplbmRGcmFtZSB3aXRoU3Vi
QW5pbWF0aW9uOl9mYWRlQW5pbWF0aW9uIGNvbnRyb2xsZXJBY3Rpb246QHNlbGVjdG9yKHdpbmRv
d0RpZEV4aXRGdWxsc2NyZWVuKV07CisgICAgICAgIFtzZWxmIF9yZXF1ZXN0RXhpdF07CiB9CiAK
LS0gKHZvaWQpYXBwbGljYXRpb25EaWRDaGFuZ2VTY3JlZW5QYXJhbWV0ZXJzOihOU05vdGlmaWNh
dGlvbiopbm90aWZpY2F0aW9uCi17Ci0gICAgVU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7Ci0g
ICAgLy8gVGhlIHVzZXIgbWF5IGhhdmUgY2hhbmdlZCB0aGUgbWFpbiBzY3JlZW4gYnkgbW92aW5n
IHRoZSBtZW51IGJhciwgb3IgdGhleSBtYXkgaGF2ZSBjaGFuZ2VkCi0gICAgLy8gdGhlIERvY2sn
cyBzaXplIG9yIGxvY2F0aW9uLCBvciB0aGV5IG1heSBoYXZlIGNoYW5nZWQgdGhlIGZ1bGxzY3Jl
ZW4gc2NyZWVuJ3MgZGltZW5zaW9ucy4gIAotICAgIC8vIFVwZGF0ZSBvdXIgcHJlc2VudGF0aW9u
IHBhcmFtZXRlcnMsIGFuZCBlbnN1cmUgdGhhdCB0aGUgZnVsbCBzY3JlZW4gd2luZG93IG9jY3Vw
aWVzIHRoZSAKLSAgICAvLyBlbnRpcmUgc2NyZWVuOgotICAgIFtzZWxmIHVwZGF0ZU1lbnVBbmRE
b2NrRm9yRnVsbHNjcmVlbl07Ci0gICAgW1tzZWxmIHdpbmRvd10gc2V0RnJhbWU6W1tbc2VsZiB3
aW5kb3ddIHNjcmVlbl0gZnJhbWVdIGRpc3BsYXk6WUVTXTsKLX0KLQotLSAodm9pZCl1cGRhdGVN
ZW51QW5kRG9ja0ZvckZ1bGxzY3JlZW4KLXsKLSAgICAvLyBOU0FwcGxpY2F0aW9uUHJlc2VudGF0
aW9uT3B0aW9ucyBpcyBhdmFpbGFibGUgb24gPiAxMC42IG9ubHk6Ci0gICAgTlNBcHBsaWNhdGlv
blByZXNlbnRhdGlvbk9wdGlvbnMgb3B0aW9ucyA9IE5TQXBwbGljYXRpb25QcmVzZW50YXRpb25E
ZWZhdWx0OwotICAgIE5TU2NyZWVuKiBmdWxsc2NyZWVuU2NyZWVuID0gW1tzZWxmIHdpbmRvd10g
c2NyZWVuXTsKLQotICAgIGlmICghX2lzRW5kaW5nRnVsbHNjcmVlbikgewotICAgICAgICAvLyBB
dXRvLWhpZGUgdGhlIG1lbnUgYmFyIGlmIHRoZSBmdWxsc2NyZWVuU2NyZWVuIGNvbnRhaW5zIHRo
ZSBtZW51IGJhcjoKLSAgICAgICAgLy8gTk9URTogaWYgdGhlIGZ1bGxzY3JlZW5TY3JlZW4gY29u
dGFpbnMgdGhlIG1lbnUgYmFyIGJ1dCBub3QgdGhlIGRvY2ssIHdlIG11c3Qgc3RpbGwgCi0gICAg
ICAgIC8vIGF1dG8taGlkZSB0aGUgZG9jaywgb3IgYW4gZXhjZXB0aW9uIHdpbGwgYmUgdGhyb3du
LgotICAgICAgICBpZiAoW1tOU1NjcmVlbiBzY3JlZW5zXSBvYmplY3RBdEluZGV4OjBdID09IGZ1
bGxzY3JlZW5TY3JlZW4pCi0gICAgICAgICAgICBvcHRpb25zIHw9IChOU0FwcGxpY2F0aW9uUHJl
c2VudGF0aW9uQXV0b0hpZGVNZW51QmFyIHwgTlNBcHBsaWNhdGlvblByZXNlbnRhdGlvbkF1dG9I
aWRlRG9jayk7Ci0gICAgICAgIC8vIENoZWNrIGlmIHRoZSBjdXJyZW50IHNjcmVlbiBjb250YWlu
cyB0aGUgZG9jayBieSBjb21wYXJpbmcgdGhlIHNjcmVlbidzIGZyYW1lIHRvIGl0cwotICAgICAg
ICAvLyB2aXNpYmxlRnJhbWU7IGlmIGEgZG9jayBpcyBwcmVzZW50LCB0aGUgdmlzaWJsZUZyYW1l
IHdpbGwgZGlmZmVyLiBJZiB0aGUgY3VycmVudCBzY3JlZW4KLSAgICAgICAgLy8gY29udGFpbnMg
dGhlIGRvY2ssIGhpZGUgaXQuCi0gICAgICAgIGVsc2UgaWYgKCFOU0VxdWFsUmVjdHMoW2Z1bGxz
Y3JlZW5TY3JlZW4gZnJhbWVdLCBbZnVsbHNjcmVlblNjcmVlbiB2aXNpYmxlRnJhbWVdKSkKLSAg
ICAgICAgICAgIG9wdGlvbnMgfD0gTlNBcHBsaWNhdGlvblByZXNlbnRhdGlvbkF1dG9IaWRlRG9j
azsKLSAgICB9Ci0KLSAgICBOU0FwcC5wcmVzZW50YXRpb25PcHRpb25zID0gb3B0aW9uczsKLX0K
LQotLy8gTUFSSzogLQotLy8gTUFSSzogV2luZG93IGNhbGxiYWNrCi0KIC0gKHZvaWQpX3JlcXVl
c3RFeGl0CiB7Ci0gICAgaWYgKF92aWRlb0VsZW1lbnQpCi0gICAgICAgIF92aWRlb0VsZW1lbnQt
PmV4aXRGdWxsc2NyZWVuKCk7Ci0gICAgX2ZvcmNlRGlzYWJsZUFuaW1hdGlvbiA9IE5POwotfQot
Ci0tICh2b2lkKXJlcXVlc3RFeGl0RnVsbHNjcmVlbldpdGhBbmltYXRpb246KEJPT0wpYW5pbWF0
aW9uCi17Ci0gICAgaWYgKF9pc0VuZGluZ0Z1bGxzY3JlZW4pCi0gICAgICAgIHJldHVybjsKLQot
ICAgIF9mb3JjZURpc2FibGVBbmltYXRpb24gPSAhYW5pbWF0aW9uOwotICAgIFtzZWxmIHBlcmZv
cm1TZWxlY3RvcjpAc2VsZWN0b3IoX3JlcXVlc3RFeGl0KSB3aXRoT2JqZWN0Om5pbCBhZnRlckRl
bGF5OjBdOwotCisgICAgW3NlbGYuZnVsbHNjcmVlbldpbmRvdyBleGl0RnVsbFNjcmVlbk1vZGU6
c2VsZl07CiB9CiAKLS0gKHZvaWQpcmVxdWVzdEV4aXRGdWxsc2NyZWVuCistICh2b2lkKV9yZXF1
ZXN0RW50ZXIKIHsKLSAgICBbc2VsZiByZXF1ZXN0RXhpdEZ1bGxzY3JlZW5XaXRoQW5pbWF0aW9u
OllFU107CisgICAgaWYgKF92aWRlb0VsZW1lbnQpCisgICAgICAgIF92aWRlb0VsZW1lbnQtPmVu
dGVyRnVsbHNjcmVlbigpOwogfQogCi0tICh2b2lkKWZhZGVIVURJbgorLSAodm9pZCljYW5jZWxP
cGVyYXRpb246KGlkKXNlbmRlcgogewotICAgIFtfaHVkQ29udHJvbGxlciBmYWRlV2luZG93SW5d
OworICAgIFtzZWxmIF9yZXF1ZXN0RXhpdF07CiB9CiAKLS0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9y
S2V5UGF0aDooTlNTdHJpbmcgKilrZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hhbmdlOihO
U0RpY3Rpb25hcnkgKiljaGFuZ2UgY29udGV4dDoodm9pZCAqKWNvbnRleHQKKy0gKEJPT0wpcGxh
eWVyVmlld0lzRnVsbFNjcmVlbjooV2ViQVZQbGF5ZXJWaWV3KilwbGF5ZXJWaWV3CiB7Ci0gICAg
VU5VU0VEX1BBUkFNKG9iamVjdCk7Ci0gICAgVU5VU0VEX1BBUkFNKGNoYW5nZSk7Ci0gICAgVU5V
U0VEX1BBUkFNKGNvbnRleHQpOwotCi0gICAgaWYgKFtrZXlQYXRoIGlzRXF1YWxUbzpAInJhdGUi
XSkKLSAgICAgICAgW3NlbGYgcmF0ZUNoYW5nZWQ6bmlsXTsKKyAgICByZXR1cm4gX2lzRnVsbFNj
cmVlbjsKIH0KIAotLSAodm9pZClyYXRlQ2hhbmdlZDooTlNOb3RpZmljYXRpb24gKil1bnVzZWRO
b3RpZmljYXRpb24KKy0gKHZvaWQpcGxheWVyVmlld1JlcXVlc3RFbnRlckZ1bGxzY3JlZW46KEFW
UGxheWVyVmlldyopcGxheWVyVmlldwogewotICAgIFVOVVNFRF9QQVJBTSh1bnVzZWROb3RpZmlj
YXRpb24pOwotICAgIFtfaHVkQ29udHJvbGxlciB1cGRhdGVSYXRlXTsKKyAgICBbc2VsZiBfcmVx
dWVzdEVudGVyXTsKIH0KIAotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gV2ViVmlkZW9GdWxsc2Ny
ZWVuV2luZG93Ci0KLS0gKGlkKWluaXRXaXRoQ29udGVudFJlY3Q6KE5TUmVjdCljb250ZW50UmVj
dCBzdHlsZU1hc2s6KE5TVUludGVnZXIpYVN0eWxlIGJhY2tpbmc6KE5TQmFja2luZ1N0b3JlVHlw
ZSlidWZmZXJpbmdUeXBlIGRlZmVyOihCT09MKWZsYWcKKy0gKHZvaWQpcGxheWVyVmlld1JlcXVl
c3RFeGl0RnVsbHNjcmVlbjooQVZQbGF5ZXJWaWV3KilwbGF5ZXJWaWV3CiB7Ci0gICAgVU5VU0VE
X1BBUkFNKGFTdHlsZSk7Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0V2l0aENvbnRlbnRSZWN0OmNv
bnRlbnRSZWN0IHN0eWxlTWFzazpOU0JvcmRlcmxlc3NXaW5kb3dNYXNrIGJhY2tpbmc6YnVmZmVy
aW5nVHlwZSBkZWZlcjpmbGFnXTsKLSAgICBpZiAoIXNlbGYpCi0gICAgICAgIHJldHVybiBuaWw7
Ci0gICAgW3NlbGYgc2V0T3BhcXVlOk5PXTsKLSAgICBbc2VsZiBzZXRCYWNrZ3JvdW5kQ29sb3I6
W05TQ29sb3IgY2xlYXJDb2xvcl1dOwotICAgIFtzZWxmIHNldElnbm9yZXNNb3VzZUV2ZW50czpO
T107Ci0gICAgW3NlbGYgc2V0QWNjZXB0c01vdXNlTW92ZWRFdmVudHM6WUVTXTsKLSAgICByZXR1
cm4gc2VsZjsKKyAgICBbc2VsZiBfcmVxdWVzdEV4aXRdOwogfQogCi0tICh2b2lkKWRlYWxsb2MK
Ky0gKG51bGxhYmxlIE5TQXJyYXk8TlNXaW5kb3cgKj4gKiljdXN0b21XaW5kb3dzVG9FbnRlckZ1
bGxTY3JlZW5Gb3JXaW5kb3c6KE5TV2luZG93ICopd2luZG93CiB7Ci0gICAgQVNTRVJUKCFfZnVs
bHNjcmVlbkFuaW1hdGlvbik7Ci0gICAgW3N1cGVyIGRlYWxsb2NdOworICAgIHJldHVybiBAW3Nl
bGYuZnVsbHNjcmVlbldpbmRvd107CiB9CiAKLS0gKEJPT0wpcmVzaWduRmlyc3RSZXNwb25kZXIK
Ky0gKHZvaWQpd2luZG93OihOU1dpbmRvdyAqKXdpbmRvdyBzdGFydEN1c3RvbUFuaW1hdGlvblRv
RW50ZXJGdWxsU2NyZWVuV2l0aER1cmF0aW9uOihOU1RpbWVJbnRlcnZhbClkdXJhdGlvbgogewot
ICAgIHJldHVybiBOTzsKKyAgICBbTlNBbmltYXRpb25Db250ZXh0IHJ1bkFuaW1hdGlvbkdyb3Vw
Ol4oTlNBbmltYXRpb25Db250ZXh0ICpjb250ZXh0KSB7CisgICAgICAgIGNvbnRleHQuYWxsb3dz
SW1wbGljaXRBbmltYXRpb24gPSBZRVM7CisgICAgICAgIGNvbnRleHQuZHVyYXRpb24gPSBkdXJh
dGlvbjsKKyAgICAgICAgW3dpbmRvdyBzZXRGcmFtZTp3aW5kb3cuc2NyZWVuLmZyYW1lIGRpc3Bs
YXk6WUVTXTsKKyAgICB9IGNvbXBsZXRpb25IYW5kbGVyOk5VTExdOwogfQogCi0tIChCT09MKWNh
bkJlY29tZUtleVdpbmRvdworLSAobnVsbGFibGUgTlNBcnJheTxOU1dpbmRvdyAqPiAqKWN1c3Rv
bVdpbmRvd3NUb0V4aXRGdWxsU2NyZWVuRm9yV2luZG93OihOU1dpbmRvdyAqKXdpbmRvdwogewot
ICAgIHJldHVybiBOTzsKKyAgICByZXR1cm4gQFtzZWxmLmZ1bGxzY3JlZW5XaW5kb3ddOwogfQog
Ci0tICh2b2lkKW1vdXNlRG93bjooTlNFdmVudCAqKWV2ZW50CistICh2b2lkKXdpbmRvdzooTlNX
aW5kb3cgKil3aW5kb3cgc3RhcnRDdXN0b21BbmltYXRpb25Ub0V4aXRGdWxsU2NyZWVuV2l0aER1
cmF0aW9uOihOU1RpbWVJbnRlcnZhbClkdXJhdGlvbgogewotICAgIFVOVVNFRF9QQVJBTShldmVu
dCk7CisgICAgW05TQW5pbWF0aW9uQ29udGV4dCBydW5BbmltYXRpb25Hcm91cDpeKE5TQW5pbWF0
aW9uQ29udGV4dCAqY29udGV4dCkgeworICAgICAgICBjb250ZXh0LmFsbG93c0ltcGxpY2l0QW5p
bWF0aW9uID0gWUVTOworICAgICAgICBjb250ZXh0LmR1cmF0aW9uID0gZHVyYXRpb247CisgICAg
ICAgIFt3aW5kb3cgc2V0RnJhbWU6c2VsZi52aWRlb0VsZW1lbnRSZWN0IGRpc3BsYXk6WUVTXTsK
KyAgICB9IGNvbXBsZXRpb25IYW5kbGVyOk5VTExdOwogfQogCi0tICh2b2lkKWNhbmNlbE9wZXJh
dGlvbjooaWQpc2VuZGVyCistICh2b2lkKXdpbmRvd0RpZEVudGVyRnVsbFNjcmVlbjooTlNOb3Rp
ZmljYXRpb24gKilub3RpZmljYXRpb24KIHsKLSAgICBVTlVTRURfUEFSQU0oc2VuZGVyKTsKLSAg
ICBbW3NlbGYgd2luZG93Q29udHJvbGxlcl0gcmVxdWVzdEV4aXRGdWxsc2NyZWVuXTsKKyAgICBf
cGxheWVyVmlldy5jb250cm9sc1N0eWxlID0gQVZQbGF5ZXJWaWV3Q29udHJvbHNTdHlsZUZsb2F0
aW5nOworICAgIFtfcGxheWVyVmlldyB3aWxsQ2hhbmdlVmFsdWVGb3JLZXk6QCJpc0Z1bGxTY3Jl
ZW4iXTsKKyAgICBfaXNGdWxsU2NyZWVuID0gWUVTOworICAgIFtfcGxheWVyVmlldyBkaWRDaGFu
Z2VWYWx1ZUZvcktleTpAImlzRnVsbFNjcmVlbiJdOwogfQogCi0tICh2b2lkKWFuaW1hdGVkUmVz
aXplRGlkRW5kCistICh2b2lkKXdpbmRvd1dpbGxFeGl0RnVsbFNjcmVlbjooTlNOb3RpZmljYXRp
b24gKilub3RpZmljYXRpb24KIHsKLSAgICBpZiAoX2NvbnRyb2xsZXJBY3Rpb25PbkFuaW1hdGlv
bkVuZCkKLSAgICAgICAgW1tzZWxmIHdpbmRvd0NvbnRyb2xsZXJdIHBlcmZvcm1TZWxlY3Rvcjpf
Y29udHJvbGxlckFjdGlvbk9uQW5pbWF0aW9uRW5kXTsKLSAgICBfY29udHJvbGxlckFjdGlvbk9u
QW5pbWF0aW9uRW5kID0gTlVMTDsKKyAgICBfcGxheWVyVmlldy5jb250cm9sc1N0eWxlID0gQVZQ
bGF5ZXJWaWV3Q29udHJvbHNTdHlsZU5vbmU7CiB9CiAKLS8vCi0vLyBUaGlzIGZ1bmN0aW9uIHdp
bGwgYW5pbWF0ZSBhIGNoYW5nZSBvZiBmcmFtZSByZWN0YW5nbGUKLS8vIFdlIHN1cHBvcnQgcXVl
dWluZyBhbmltYXRpb24sIHRoYXQgbWVhbnMgdGhhdCB3ZSdsbCBjb3JyZWN0bHkKLS8vIGludGVy
cnVwdCB0aGUgcnVubmluZyBhbmltYXRpb24sIGFuZCBxdWV1ZSB0aGUgbmV4dCBvbmUuCi0vLwot
LSAodm9pZClhbmltYXRlRnJvbVJlY3Q6KE5TUmVjdClzdGFydFJlY3QgdG9SZWN0OihOU1JlY3Qp
ZW5kUmVjdCB3aXRoU3ViQW5pbWF0aW9uOihOU0FuaW1hdGlvbiAqKXN1YkFuaW1hdGlvbiBjb250
cm9sbGVyQWN0aW9uOihTRUwpY29udHJvbGxlckFjdGlvbgorLSAodm9pZCl3aW5kb3dEaWRFeGl0
RnVsbFNjcmVlbjooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KIHsKLSAgICBfY29udHJv
bGxlckFjdGlvbk9uQW5pbWF0aW9uRW5kID0gY29udHJvbGxlckFjdGlvbjsKLQotICAgIEJPT0wg
d2FzQW5pbWF0aW5nID0gTk87Ci0gICAgaWYgKF9mdWxsc2NyZWVuQW5pbWF0aW9uKSB7Ci0gICAg
ICAgIHdhc0FuaW1hdGluZyA9IFlFUzsKKyAgICBbX3BsYXllclZpZXcgd2lsbENoYW5nZVZhbHVl
Rm9yS2V5OkAiaXNGdWxsU2NyZWVuIl07CisgICAgX2lzRnVsbFNjcmVlbiA9IE5POworICAgIFtf
cGxheWVyVmlldyBkaWRDaGFuZ2VWYWx1ZUZvcktleTpAImlzRnVsbFNjcmVlbiJdOwogCi0gICAg
ICAgIC8vIEludGVycnVwdCBhbnkgcnVubmluZyBhbmltYXRpb24uCi0gICAgICAgIFtfZnVsbHNj
cmVlbkFuaW1hdGlvbiBzdG9wQW5pbWF0aW9uXTsKLQotICAgICAgICAvLyBTYXZlIHRoZSBjdXJy
ZW50IHJlY3QgdG8gZW5zdXJlIGEgc21vb3RoIHRyYW5zaXRpb24uCi0gICAgICAgIHN0YXJ0UmVj
dCA9IFtfZnVsbHNjcmVlbkFuaW1hdGlvbiBjdXJyZW50RnJhbWVdOwotICAgICAgICBbX2Z1bGxz
Y3JlZW5BbmltYXRpb24gcmVsZWFzZV07Ci0gICAgICAgIF9mdWxsc2NyZWVuQW5pbWF0aW9uID0g
bmlsOwotICAgIH0KLSAgICAKLSAgICBpZiAoTlNJc0VtcHR5UmVjdChzdGFydFJlY3QpIHx8IE5T
SXNFbXB0eVJlY3QoZW5kUmVjdCkpIHsKLSAgICAgICAgLy8gRmFrZWx5IGVuZCB0aGUgc3ViYW5p
bWF0aW9uLgotICAgICAgICBbc3ViQW5pbWF0aW9uIHNldEN1cnJlbnRQcm9ncmVzczoxXTsKLSAg
ICAgICAgLy8gQW5kIHJlbW92ZSB0aGUgd2VhayBsaW5rIHRvIHRoZSB3aW5kb3cuCi0gICAgICAg
IFtzdWJBbmltYXRpb24gc3RvcEFuaW1hdGlvbl07Ci0KLSAgICAgICAgW3NlbGYgc2V0RnJhbWU6
ZW5kUmVjdCBkaXNwbGF5Ok5PXTsKLSAgICAgICAgW3NlbGYgbWFrZUtleUFuZE9yZGVyRnJvbnQ6
c2VsZl07Ci0gICAgICAgIFtzZWxmIGFuaW1hdGVkUmVzaXplRGlkRW5kXTsKKyAgICBpZiAoIV92
aWRlb0VsZW1lbnQpIHsKKyAgICAgICAgW3NlbGYuZnVsbHNjcmVlbldpbmRvdyBjbG9zZV07CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIXdhc0FuaW1hdGluZykgewotICAgICAg
ICAvLyBXZSdsbCBkb3duc2NhbGUgdGhlIHdpbmRvdyBkdXJpbmcgdGhlIGFuaW1hdGlvbiBiYXNl
ZCBvbiB0aGUgaGlnaGVyIHJlc29sdXRpb24gcmVjdAotICAgICAgICBCT09MIGhpZ2hlclJlc29s
dXRpb25Jc0VuZFJlY3QgPSBzdGFydFJlY3Quc2l6ZS53aWR0aCA8IGVuZFJlY3Quc2l6ZS53aWR0
aCAmJiBzdGFydFJlY3Quc2l6ZS5oZWlnaHQgPCBlbmRSZWN0LnNpemUuaGVpZ2h0OwotICAgICAg
ICBbc2VsZiBzZXRGcmFtZTpoaWdoZXJSZXNvbHV0aW9uSXNFbmRSZWN0ID8gZW5kUmVjdCA6IHN0
YXJ0UmVjdCBkaXNwbGF5Ok5PXTsKLSAgICB9Ci0gICAgCi0gICAgQVNTRVJUKCFfZnVsbHNjcmVl
bkFuaW1hdGlvbik7Ci0gICAgX2Z1bGxzY3JlZW5BbmltYXRpb24gPSBbW1dlYldpbmRvd1NjYWxl
QW5pbWF0aW9uIGFsbG9jXSBpbml0V2l0aEhpbnRlZER1cmF0aW9uOjAuMiB3aW5kb3c6c2VsZiBp
bml0YWxGcmFtZTpzdGFydFJlY3QgZmluYWxGcmFtZTplbmRSZWN0XTsKLSAgICBbX2Z1bGxzY3Jl
ZW5BbmltYXRpb24gc2V0U3ViQW5pbWF0aW9uOnN1YkFuaW1hdGlvbl07Ci0gICAgW19mdWxsc2Ny
ZWVuQW5pbWF0aW9uIHNldERlbGVnYXRlOnNlbGZdOwotICAgIAotICAgIC8vIE1ha2Ugc3VyZSB0
aGUgYW5pbWF0aW9uIGhhcyBzY2FsZWQgdGhlIHdpbmRvdyBiZWZvcmUgc2hvd2luZyBpdC4KLSAg
ICBbX2Z1bGxzY3JlZW5BbmltYXRpb24gc2V0Q3VycmVudFByb2dyZXNzOjBdOwotICAgIFtzZWxm
IG1ha2VLZXlBbmRPcmRlckZyb250OnNlbGZdOwotCi0gICAgW19mdWxsc2NyZWVuQW5pbWF0aW9u
IHN0YXJ0QW5pbWF0aW9uXTsKLX0KLQotLSAodm9pZClhbmltYXRpb25EaWRFbmQ6KE5TQW5pbWF0
aW9uICopYW5pbWF0aW9uCi17Ci0gICAgaWYgKCFbTlNUaHJlYWQgaXNNYWluVGhyZWFkXSkgewot
ICAgICAgICBbc2VsZiBwZXJmb3JtU2VsZWN0b3JPbk1haW5UaHJlYWQ6QHNlbGVjdG9yKGFuaW1h
dGlvbkRpZEVuZDopIHdpdGhPYmplY3Q6YW5pbWF0aW9uIHdhaXRVbnRpbERvbmU6Tk9dOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChhbmltYXRpb24gIT0gX2Z1bGxzY3JlZW5Bbmlt
YXRpb24pCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIFRoZSBhbmltYXRpb24gaXMgbm90IHJl
YWxseSBvdmVyIGFuZCB3YXMgaW50ZXJydXB0ZWQKLSAgICAvLyBEb24ndCBzZW5kIGNvbXBsZXRp
b24gZXZlbnRzLgotICAgIGlmIChbYW5pbWF0aW9uIGN1cnJlbnRQcm9ncmVzc10gPCAxLjApCi0g
ICAgICAgIHJldHVybjsKLQotICAgIC8vIEVuc3VyZSB0aGF0IGFuaW1hdGlvbiAoYW5kIHN1YmFu
aW1hdGlvbikgZG9uJ3Qga2VlcAotICAgIC8vIHRoZSB3ZWFrIHJlZmVyZW5jZSB0byB0aGUgd2lu
ZG93IGl2YXIgdGhhdCBtYXkgYmUgZGVzdHJveWVkIGZyb20KLSAgICAvLyBub3cgb24uCi0gICAg
W19mdWxsc2NyZWVuQW5pbWF0aW9uIHNldFdpbmRvdzpuaWxdOwotCi0gICAgW19mdWxsc2NyZWVu
QW5pbWF0aW9uIGF1dG9yZWxlYXNlXTsKLSAgICBfZnVsbHNjcmVlbkFuaW1hdGlvbiA9IG5pbDsK
LQotICAgIFtzZWxmIGFuaW1hdGVkUmVzaXplRGlkRW5kXTsKLX0KLQotLSAodm9pZCltb3VzZU1v
dmVkOihOU0V2ZW50ICopZXZlbnQKLXsKLSAgICBVTlVTRURfUEFSQU0oZXZlbnQpOwotICAgIFtb
c2VsZiB3aW5kb3dDb250cm9sbGVyXSBmYWRlSFVESW5dOworICAgIFtOU0FuaW1hdGlvbkNvbnRl
eHQgYmVnaW5Hcm91cGluZ107CisgICAgX3ZpZGVvRWxlbWVudC0+c2V0VmlkZW9GdWxsc2NyZWVu
TGF5ZXIobmlsLCBbc2VsZiwgcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKV0geworICAg
ICAgICBbc2VsZi5mdWxsc2NyZWVuV2luZG93IGNsb3NlXTsKKyAgICAgICAgW05TQW5pbWF0aW9u
Q29udGV4dCBlbmRHcm91cGluZ107CisgICAgfSk7CisgICAgX3ZpZGVvRWxlbWVudC0+ZXhpdEZ1
bGxzY3JlZW4oKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0Nv
bnRyb2xsZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmYxODRhZDQxMDZmYzE3
OGI2NzI2NjU5MjVmYjdiZGZlYWJjNTJkNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZGVv
RnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDcxICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaWYgRU5BQkxFKFZJREVPKQotCi0jaW1wb3J0IDxBcHBLaXQv
TlNCdXR0b24uaD4KLSNpbXBvcnQgPEFwcEtpdC9OU0NvbnRyb2wuaD4KLSNpbXBvcnQgPEFwcEtp
dC9OU1RleHRGaWVsZC5oPgotI2ltcG9ydCA8QXBwS2l0L05TVHJhY2tpbmdBcmVhLmg+Ci0jaW1w
b3J0IDxBcHBLaXQvTlNXaW5kb3cuaD4KLSNpbXBvcnQgPEFwcEtpdC9OU1dpbmRvd0NvbnRyb2xs
ZXIuaD4KLSNpbXBvcnQgPHd0Zi9OYWtlZFB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1j
bGFzcyBIVE1MVmlkZW9FbGVtZW50OwotfQotCi1AcHJvdG9jb2wgV2ViVmlkZW9GdWxsc2NyZWVu
SFVEV2luZG93Q29udHJvbGxlckRlbGVnYXRlOwotCi1AaW50ZXJmYWNlIFdlYlZpZGVvRnVsbHNj
cmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIgOiBOU1dpbmRvd0NvbnRyb2xsZXIgewotICAgIGlkIDxX
ZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyRGVsZWdhdGU+IF9kZWxlZ2F0ZTsK
LSAgICBOU1RpbWVyICpfdGltZWxpbmVVcGRhdGVUaW1lcjsKLSAgICBOU1RyYWNraW5nQXJlYSAq
X2FyZWE7Ci0gICAgQk9PTCBfbW91c2VJc0luSFVEOwotICAgIEJPT0wgX2lzRW5kaW5nRnVsbHNj
cmVlbjsKLSAgICBCT09MIF9pc1NjcnViYmluZzsKLQotICAgIE5TQ29udHJvbCAqX3RpbWVsaW5l
OwotICAgIE5TVGV4dEZpZWxkICpfcmVtYWluaW5nVGltZVRleHQ7Ci0gICAgTlNUZXh0RmllbGQg
Kl9lbGFwc2VkVGltZVRleHQ7Ci0gICAgTlNDb250cm9sICpfdm9sdW1lU2xpZGVyOwotICAgIE5T
QnV0dG9uICpfcGxheUJ1dHRvbjsKLX0KLQotLSAoaWQgPFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdp
bmRvd0NvbnRyb2xsZXJEZWxlZ2F0ZT4pZGVsZWdhdGU7Ci0tICh2b2lkKXNldERlbGVnYXRlOihp
ZCA8V2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlckRlbGVnYXRlPilkZWxlZ2F0
ZTsKLS0gKHZvaWQpZmFkZVdpbmRvd0luOwotLSAodm9pZClmYWRlV2luZG93T3V0OwotLSAodm9p
ZCljbG9zZVdpbmRvdzsKLS0gKHZvaWQpdXBkYXRlUmF0ZTsKLQotQGVuZAotCi1AcHJvdG9jb2wg
V2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlckRlbGVnYXRlIDxOU09iamVjdD4K
LS0gKHZvaWQpcmVxdWVzdEV4aXRGdWxsc2NyZWVuOwotLSAoTmFrZWRQdHI8V2ViQ29yZTo6SFRN
TFZpZGVvRWxlbWVudD4pdmlkZW9FbGVtZW50OwotQGVuZAotCi0jZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2lu
ZG93Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlk
ZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYWU3ZTRhMjhhMDhiYTE5ODI5OGExZDg0ODI2MDJiZjdiNWYyYjE4ZS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW0K
KysrIC9kZXYvbnVsbApAQCAtMSw3MzcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
OS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWYgRU5BQkxF
KFZJREVPKSAmJiBQTEFURk9STShNQUMpCi0KLSNpbXBvcnQgIldlYlZpZGVvRnVsbHNjcmVlbkhV
RFdpbmRvd0NvbnRyb2xsZXIuaCIKLQotI2ltcG9ydCA8V2ViQ29yZS9GbG9hdENvbnZlcnNpb24u
aD4KLSNpbXBvcnQgPFdlYkNvcmUvSFRNTFZpZGVvRWxlbWVudC5oPgotI2ltcG9ydCA8cGFsL3Nw
aS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KLSNpbXBvcnQgPHBhbC9zcGkvbWFjL1FUS2l0U1BJLmg+
Ci0jaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KLQotU09GVF9MSU5LX0ZSQU1FV09SS19PUFRJ
T05BTChRVEtpdCkKLQotU09GVF9MSU5LX0NMQVNTX09QVElPTkFMKFFUS2l0LCBRVEhVREJhY2tn
cm91bmRWaWV3KQotU09GVF9MSU5LX0NMQVNTX09QVElPTkFMKFFUS2l0LCBRVEhVREJ1dHRvbikK
LVNPRlRfTElOS19DTEFTU19PUFRJT05BTChRVEtpdCwgUVRIVURTbGlkZXIpCi1TT0ZUX0xJTktf
Q0xBU1NfT1BUSU9OQUwoUVRLaXQsIFFUSFVEVGltZWxpbmUpCi0KLSNkZWZpbmUgUVRIVURCYWNr
Z3JvdW5kVmlldyBnZXRRVEhVREJhY2tncm91bmRWaWV3Q2xhc3MoKQotI2RlZmluZSBRVEhVREJ1
dHRvbiBnZXRRVEhVREJ1dHRvbkNsYXNzKCkKLSNkZWZpbmUgUVRIVURTbGlkZXIgZ2V0UVRIVURT
bGlkZXJDbGFzcygpCi0jZGVmaW5lIFFUSFVEVGltZWxpbmUgZ2V0UVRIVURUaW1lbGluZUNsYXNz
KCkKLQotZW51bSBjbGFzcyBNZWRpYVVJQ29udHJvbCB7Ci0gICAgVGltZWxpbmUsCi0gICAgU2xp
ZGVyLAotICAgIFBsYXlQYXVzZUJ1dHRvbiwKLSAgICBFeGl0RnVsbHNjcmVlbkJ1dHRvbiwKLSAg
ICBSZXdpbmRCdXR0b24sCi0gICAgRmFzdEZvcndhcmRCdXR0b24sCi0gICAgVm9sdW1lVXBCdXR0
b24sCi0gICAgVm9sdW1lRG93bkJ1dHRvbiwKLX07Ci0KLXVzaW5nIFdlYkNvcmU6OkhUTUxWaWRl
b0VsZW1lbnQ7Ci11c2luZyBXZWJDb3JlOjpuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0OwotCi1AaW50
ZXJmYWNlIFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIgKFByaXZhdGUpIDxO
U1dpbmRvd0RlbGVnYXRlPgotCi0tICh2b2lkKXVwZGF0ZVRpbWU7Ci0tICh2b2lkKXRpbWVsaW5l
UG9zaXRpb25DaGFuZ2VkOihpZClzZW5kZXI7Ci0tIChmbG9hdCljdXJyZW50VGltZTsKLS0gKHZv
aWQpc2V0Q3VycmVudFRpbWU6KGZsb2F0KWN1cnJlbnRUaW1lOwotLSAoZG91YmxlKWR1cmF0aW9u
OwotCi0tICh2b2lkKXZvbHVtZUNoYW5nZWQ6KGlkKXNlbmRlcjsKLS0gKGZsb2F0KW1heFZvbHVt
ZTsKLS0gKGZsb2F0KXZvbHVtZTsKLS0gKHZvaWQpc2V0Vm9sdW1lOihmbG9hdCl2b2x1bWU7Ci0t
ICh2b2lkKWRlY3JlbWVudFZvbHVtZTsKLS0gKHZvaWQpaW5jcmVtZW50Vm9sdW1lOwotCi0tICh2
b2lkKXVwZGF0ZVBsYXlCdXR0b247Ci0tICh2b2lkKXRvZ2dsZVBsYXlpbmc6KGlkKXNlbmRlcjsK
LS0gKEJPT0wpcGxheWluZzsKLS0gKHZvaWQpc2V0UGxheWluZzooQk9PTClwbGF5aW5nOwotCi0t
ICh2b2lkKXJld2luZDooaWQpc2VuZGVyOwotLSAodm9pZClmYXN0Rm9yd2FyZDooaWQpc2VuZGVy
OwotCi0tIChOU1N0cmluZyAqKXJlbWFpbmluZ1RpbWVUZXh0OwotLSAoTlNTdHJpbmcgKillbGFw
c2VkVGltZVRleHQ7Ci0KLS0gKHZvaWQpZXhpdEZ1bGxzY3JlZW46KGlkKXNlbmRlcjsKLUBlbmQK
LQotQGludGVyZmFjZSBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3cgOiBOU1dpbmRvdwotQGVu
ZAotCi1AaW1wbGVtZW50YXRpb24gV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Ci0KLS0gKGlk
KWluaXRXaXRoQ29udGVudFJlY3Q6KE5TUmVjdCljb250ZW50UmVjdCBzdHlsZU1hc2s6KE5TVUlu
dGVnZXIpYVN0eWxlIGJhY2tpbmc6KE5TQmFja2luZ1N0b3JlVHlwZSlidWZmZXJpbmdUeXBlIGRl
ZmVyOihCT09MKWZsYWcKLXsKLSAgICBVTlVTRURfUEFSQU0oYVN0eWxlKTsKLSAgICBzZWxmID0g
W3N1cGVyIGluaXRXaXRoQ29udGVudFJlY3Q6Y29udGVudFJlY3Qgc3R5bGVNYXNrOk5TV2luZG93
U3R5bGVNYXNrQm9yZGVybGVzcyBiYWNraW5nOmJ1ZmZlcmluZ1R5cGUgZGVmZXI6ZmxhZ107Ci0g
ICAgaWYgKCFzZWxmKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgW3NlbGYgc2V0T3BhcXVl
Ok5PXTsKLSAgICBbc2VsZiBzZXRCYWNrZ3JvdW5kQ29sb3I6W05TQ29sb3IgY2xlYXJDb2xvcl1d
OwotICAgIFtzZWxmIHNldExldmVsOk5TUG9wVXBNZW51V2luZG93TGV2ZWxdOwotICAgIFtzZWxm
IHNldEFjY2VwdHNNb3VzZU1vdmVkRXZlbnRzOllFU107Ci0gICAgW3NlbGYgc2V0SWdub3Jlc01v
dXNlRXZlbnRzOk5PXTsKLSAgICBbc2VsZiBzZXRNb3ZhYmxlQnlXaW5kb3dCYWNrZ3JvdW5kOllF
U107Ci0KLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAoQk9PTCljYW5CZWNvbWVLZXlXaW5kb3cK
LXsKLSAgICByZXR1cm4gWUVTOwotfQotCi0tICh2b2lkKWNhbmNlbE9wZXJhdGlvbjooaWQpc2Vu
ZGVyCi17Ci0gICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7Ci0gICAgW1tzZWxmIHdpbmRvd0NvbnRy
b2xsZXJdIGV4aXRGdWxsc2NyZWVuOnNlbGZdOwotfQotCi0tICh2b2lkKWNlbnRlcgotewotICAg
IE5TUmVjdCBodWRGcmFtZSA9IFtzZWxmIGZyYW1lXTsKLSAgICBOU1JlY3Qgc2NyZWVuRnJhbWUg
PSBbW05TU2NyZWVuIG1haW5TY3JlZW5dIGZyYW1lXTsKLSAgICBbc2VsZiBzZXRGcmFtZVRvcExl
ZnRQb2ludDpOU01ha2VQb2ludChzY3JlZW5GcmFtZS5vcmlnaW4ueCArIChzY3JlZW5GcmFtZS5z
aXplLndpZHRoIC0gaHVkRnJhbWUuc2l6ZS53aWR0aCkgLyAyLCBzY3JlZW5GcmFtZS5vcmlnaW4u
eSArIChzY3JlZW5GcmFtZS5zaXplLmhlaWdodCAtIGh1ZEZyYW1lLnNpemUuaGVpZ2h0KSAvIDYp
XTsKLX0KLQotLSAodm9pZClrZXlEb3duOihOU0V2ZW50ICopZXZlbnQKLXsKLSAgICBbc3VwZXIg
a2V5RG93bjpldmVudF07Ci0gICAgW1tzZWxmIHdpbmRvd0NvbnRyb2xsZXJdIGZhZGVXaW5kb3dJ
bl07Ci19Ci0KLS0gKEJPT0wpcmVzaWduRmlyc3RSZXNwb25kZXIKLXsKLSAgICByZXR1cm4gTk87
Ci19Ci0KLS0gKEJPT0wpcGVyZm9ybUtleUVxdWl2YWxlbnQ6KE5TRXZlbnQgKilldmVudAotewot
ICAgIC8vIEJsb2NrIGFsbCBjb21tYW5kIGtleSBldmVudHMgd2hpbGUgdGhlIGZ1bGxzY3JlZW4g
d2luZG93IGlzIHVwLgotICAgIGlmIChbZXZlbnQgdHlwZV0gIT0gTlNFdmVudFR5cGVLZXlEb3du
KQotICAgICAgICByZXR1cm4gTk87Ci0gICAgCi0gICAgaWYgKCEoW2V2ZW50IG1vZGlmaWVyRmxh
Z3NdICYgTlNFdmVudE1vZGlmaWVyRmxhZ0NvbW1hbmQpKQotICAgICAgICByZXR1cm4gTk87Ci0g
ICAgcmV0dXJuIFlFUzsKLX0KLQotQGVuZAotCi1zdGF0aWMgY29uc3QgQ0dGbG9hdCB3aW5kb3dI
ZWlnaHQgPSA1OTsKLXN0YXRpYyBjb25zdCBDR0Zsb2F0IHdpbmRvd1dpZHRoID0gNDM4OwotCi1z
dGF0aWMgY29uc3QgTlNUaW1lSW50ZXJ2YWwgSFVEV2luZG93RmFkZU91dERlbGF5ID0gMzsKLQot
QGltcGxlbWVudGF0aW9uIFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIKLQot
LSAoaWQpaW5pdAotewotICAgIE5TV2luZG93ICp3aW5kb3cgPSBbW1dlYlZpZGVvRnVsbHNjcmVl
bkhVRFdpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpOU01ha2VSZWN0KDAsIDAsIHdp
bmRvd1dpZHRoLCB3aW5kb3dIZWlnaHQpIHN0eWxlTWFzazpOU1dpbmRvd1N0eWxlTWFza0JvcmRl
cmxlc3MgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOk5PXTsKLSAgICBzZWxm
ID0gW3N1cGVyIGluaXRXaXRoV2luZG93OndpbmRvd107Ci0gICAgW3dpbmRvdyBzZXREZWxlZ2F0
ZTpzZWxmXTsKLSAgICBbd2luZG93IHJlbGVhc2VdOwotICAgIGlmICghc2VsZikKLSAgICAgICAg
cmV0dXJuIG5pbDsKLSAgICBbc2VsZiB3aW5kb3dEaWRMb2FkXTsKLSAgICByZXR1cm4gc2VsZjsK
LX0KLQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgQVNTRVJUKCFfdGltZWxpbmVVcGRhdGVUaW1l
cik7Ci0gICAgQVNTRVJUKCFfYXJlYSk7Ci0gICAgQVNTRVJUKCFfaXNTY3J1YmJpbmcpOwotICAg
IFtfdGltZWxpbmUgcmVsZWFzZV07Ci0gICAgW19yZW1haW5pbmdUaW1lVGV4dCByZWxlYXNlXTsK
LSAgICBbX2VsYXBzZWRUaW1lVGV4dCByZWxlYXNlXTsKLSAgICBbX3ZvbHVtZVNsaWRlciByZWxl
YXNlXTsKLSAgICBbX3BsYXlCdXR0b24gcmVsZWFzZV07Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwot
fQotCi0tICh2b2lkKXNldEFyZWE6KE5TVHJhY2tpbmdBcmVhICopYXJlYQotewotICAgIGlmIChh
cmVhID09IF9hcmVhKQotICAgICAgICByZXR1cm47Ci0gICAgW19hcmVhIHJlbGVhc2VdOwotICAg
IF9hcmVhID0gW2FyZWEgcmV0YWluXTsKLX0KLQotLSAodm9pZClrZXlEb3duOihOU0V2ZW50ICop
ZXZlbnQKLXsKLSAgICBOU1N0cmluZyAqY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzID0gW2V2
ZW50IGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyc107Ci0gICAgaWYgKFtjaGFyYWN0ZXJzSWdu
b3JpbmdNb2RpZmllcnMgbGVuZ3RoXSA9PSAxKSB7Ci0gICAgICAgIHN3aXRjaCAoW2NoYXJhY3Rl
cnNJZ25vcmluZ01vZGlmaWVycyBjaGFyYWN0ZXJBdEluZGV4OjBdKSB7Ci0gICAgICAgIGNhc2Ug
JyAnOgotICAgICAgICAgICAgW3NlbGYgdG9nZ2xlUGxheWluZzpuaWxdOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICBjYXNlIE5TVXBBcnJvd0Z1bmN0aW9uS2V5OgotICAgICAgICAgICAg
aWYgKFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TRXZlbnRNb2RpZmllckZsYWdPcHRpb24pCi0g
ICAgICAgICAgICAgICAgW3NlbGYgc2V0Vm9sdW1lOltzZWxmIG1heFZvbHVtZV1dOwotICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgIFtzZWxmIGluY3JlbWVudFZvbHVtZV07Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIGNhc2UgTlNEb3duQXJyb3dGdW5jdGlvbktleToKLSAg
ICAgICAgICAgIGlmIChbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0V2ZW50TW9kaWZpZXJGbGFn
T3B0aW9uKQotICAgICAgICAgICAgICAgIFtzZWxmIHNldFZvbHVtZTowXTsKLSAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICBbc2VsZiBkZWNyZW1lbnRWb2x1bWVdOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IH0KLSAgICB9Ci0KLSAgICBbc3VwZXIga2V5RG93bjpldmVudF07Ci19Ci0KLS0gKGlkIDxXZWJW
aWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyRGVsZWdhdGU+KWRlbGVnYXRlCi17Ci0g
ICAgcmV0dXJuIF9kZWxlZ2F0ZTsKLX0KLQotLSAodm9pZClzZXREZWxlZ2F0ZTooaWQgPFdlYlZp
ZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXJEZWxlZ2F0ZT4pZGVsZWdhdGUKLXsKLSAg
ICBfZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKLX0KLQotLSAodm9pZClzY2hlZHVsZVRpbWVVcGRhdGUK
LXsKLSAgICBbTlNPYmplY3QgY2FuY2VsUHJldmlvdXNQZXJmb3JtUmVxdWVzdHNXaXRoVGFyZ2V0
OnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKHVuc2NoZWR1bGVUaW1lVXBkYXRlKSBvYmplY3Q6c2Vs
Zl07Ci0KLSAgICAvLyBGaXJzdCwgdXBkYXRlIHJpZ2h0IGF3YXksIHRoZW4gc2NoZWR1bGUgZnV0
dXJlIHVwZGF0ZQotICAgIFtzZWxmIHVwZGF0ZVRpbWVdOwotICAgIFtzZWxmIHVwZGF0ZVBsYXlC
dXR0b25dOwotCi0gICAgW190aW1lbGluZVVwZGF0ZVRpbWVyIGludmFsaWRhdGVdOwotICAgIFtf
dGltZWxpbmVVcGRhdGVUaW1lciByZWxlYXNlXTsKLQotICAgIC8vIE5vdGUgdGhhdCB0aGlzIGNy
ZWF0ZXMgYSByZXRhaW4gY3ljbGUgYmV0d2VlbiB0aGUgd2luZG93IGFuZCB1cy4KLSAgICBfdGlt
ZWxpbmVVcGRhdGVUaW1lciA9IFtbTlNUaW1lciB0aW1lcldpdGhUaW1lSW50ZXJ2YWw6MC4yNSB0
YXJnZXQ6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IodXBkYXRlVGltZSkgdXNlckluZm86bmlsIHJl
cGVhdHM6WUVTXSByZXRhaW5dOwotICAgIFtbTlNSdW5Mb29wIGN1cnJlbnRSdW5Mb29wXSBhZGRU
aW1lcjpfdGltZWxpbmVVcGRhdGVUaW1lciBmb3JNb2RlOk5TUnVuTG9vcENvbW1vbk1vZGVzXTsK
LX0KLQotLSAodm9pZCl1bnNjaGVkdWxlVGltZVVwZGF0ZQotewotICAgIFtOU09iamVjdCBjYW5j
ZWxQcmV2aW91c1BlcmZvcm1SZXF1ZXN0c1dpdGhUYXJnZXQ6c2VsZiBzZWxlY3RvcjpAc2VsZWN0
b3IodW5zY2hlZHVsZVRpbWVVcGRhdGUpIG9iamVjdDpuaWxdOwotCi0gICAgW190aW1lbGluZVVw
ZGF0ZVRpbWVyIGludmFsaWRhdGVdOwotICAgIFtfdGltZWxpbmVVcGRhdGVUaW1lciByZWxlYXNl
XTsKLSAgICBfdGltZWxpbmVVcGRhdGVUaW1lciA9IG5pbDsKLX0KLQotLSAodm9pZClmYWRlV2lu
ZG93SW4KLXsKLSAgICBOU1dpbmRvdyAqd2luZG93ID0gW3NlbGYgd2luZG93XTsKLSAgICBpZiAo
IVt3aW5kb3cgaXNWaXNpYmxlXSkKLSAgICAgICAgW3dpbmRvdyBzZXRBbHBoYVZhbHVlOjBdOwot
Ci0gICAgW3dpbmRvdyBtYWtlS2V5QW5kT3JkZXJGcm9udDpzZWxmXTsKLSAgICBbW3dpbmRvdyBh
bmltYXRvcl0gc2V0QWxwaGFWYWx1ZToxXTsKLSAgICBbc2VsZiBzY2hlZHVsZVRpbWVVcGRhdGVd
OwotCi0gICAgW05TT2JqZWN0IGNhbmNlbFByZXZpb3VzUGVyZm9ybVJlcXVlc3RzV2l0aFRhcmdl
dDpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihmYWRlV2luZG93T3V0KSBvYmplY3Q6bmlsXTsKLSAg
ICBpZiAoIV9tb3VzZUlzSW5IVUQgJiYgW3NlbGYgcGxheWluZ10pIC8vIERvbid0IGZhZGUgb3V0
IHdoZW4gcGF1c2VkLgotICAgICAgICBbc2VsZiBwZXJmb3JtU2VsZWN0b3I6QHNlbGVjdG9yKGZh
ZGVXaW5kb3dPdXQpIHdpdGhPYmplY3Q6bmlsIGFmdGVyRGVsYXk6SFVEV2luZG93RmFkZU91dERl
bGF5XTsKLX0KLQotLSAodm9pZClmYWRlV2luZG93T3V0Ci17Ci0gICAgW05TQ3Vyc29yIHNldEhp
ZGRlblVudGlsTW91c2VNb3ZlczpZRVNdOwotICAgIFtbW3NlbGYgd2luZG93XSBhbmltYXRvcl0g
c2V0QWxwaGFWYWx1ZTowXTsKLSAgICBbc2VsZiBwZXJmb3JtU2VsZWN0b3I6QHNlbGVjdG9yKHVu
c2NoZWR1bGVUaW1lVXBkYXRlKSB3aXRoT2JqZWN0Om5pbCBhZnRlckRlbGF5OjFdOwotfQotCi0t
ICh2b2lkKWNsb3NlV2luZG93Ci17Ci0gICAgW05TT2JqZWN0IGNhbmNlbFByZXZpb3VzUGVyZm9y
bVJlcXVlc3RzV2l0aFRhcmdldDpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihmYWRlV2luZG93T3V0
KSBvYmplY3Q6bmlsXTsKLSAgICBbc2VsZiB1bnNjaGVkdWxlVGltZVVwZGF0ZV07Ci0gICAgTlNX
aW5kb3cgKndpbmRvdyA9IFtzZWxmIHdpbmRvd107Ci0gICAgW1t3aW5kb3cgY29udGVudFZpZXdd
IHJlbW92ZVRyYWNraW5nQXJlYTpfYXJlYV07Ci0gICAgW3NlbGYgc2V0QXJlYTpuaWxdOwotICAg
IFt3aW5kb3cgY2xvc2VdOwotICAgIFt3aW5kb3cgc2V0RGVsZWdhdGU6bmlsXTsKLSAgICBbc2Vs
ZiBzZXRXaW5kb3c6bmlsXTsKLX0KLQotc3RhdGljIE5TQ29udHJvbCAqY3JlYXRlTWVkaWFVSUNv
bnRyb2woTWVkaWFVSUNvbnRyb2wgY29udHJvbFR5cGUpCi17Ci0gICAgc3dpdGNoIChjb250cm9s
VHlwZSkgewotICAgIGNhc2UgTWVkaWFVSUNvbnRyb2w6OlRpbWVsaW5lOiB7Ci0gICAgICAgIE5T
U2xpZGVyICpzbGlkZXIgPSBbW1FUSFVEVGltZWxpbmUgYWxsb2NdIGluaXRdOwotICAgICAgICBb
W3NsaWRlciBjZWxsXSBzZXRDb250aW51b3VzOllFU107Ci0gICAgICAgIHJldHVybiBzbGlkZXI7
Ci0gICAgfQotICAgIGNhc2UgTWVkaWFVSUNvbnRyb2w6OlNsaWRlcjogewotICAgICAgICBOU0J1
dHRvbiAqc2xpZGVyID0gW1tRVEhVRFNsaWRlciBhbGxvY10gaW5pdF07Ci0gICAgICAgIFtbc2xp
ZGVyIGNlbGxdIHNldENvbnRpbnVvdXM6WUVTXTsKLSAgICAgICAgcmV0dXJuIHNsaWRlcjsKLSAg
ICB9Ci0gICAgY2FzZSBNZWRpYVVJQ29udHJvbDo6UGxheVBhdXNlQnV0dG9uOiB7Ci0gICAgICAg
IE5TQnV0dG9uICpidXR0b24gPSBbW1FUSFVEQnV0dG9uIGFsbG9jXSBpbml0XTsKLSAgICAgICAg
W2J1dHRvbiBzZXRJbWFnZTpbTlNJbWFnZSBpbWFnZU5hbWVkOkAiTlNQbGF5VGVtcGxhdGUiXV07
Ci0gICAgICAgIFtidXR0b24gc2V0QWx0ZXJuYXRlSW1hZ2U6W05TSW1hZ2UgaW1hZ2VOYW1lZDpA
Ik5TUGF1c2VRVFByaXZhdGVUZW1wbGF0ZSJdXTsKLQotICAgICAgICBbW2J1dHRvbiBjZWxsXSBz
ZXRTaG93c1N0YXRlQnk6TlNDb250ZW50c0NlbGxNYXNrXTsKLSAgICAgICAgW2J1dHRvbiBzZXRC
b3JkZXJlZDpOT107Ci0gICAgICAgIHJldHVybiBidXR0b247Ci0gICAgfQotICAgIGNhc2UgTWVk
aWFVSUNvbnRyb2w6OkV4aXRGdWxsc2NyZWVuQnV0dG9uOiB7Ci0gICAgICAgIE5TQnV0dG9uICpi
dXR0b24gPSBbW1FUSFVEQnV0dG9uIGFsbG9jXSBpbml0XTsKLSAgICAgICAgW2J1dHRvbiBzZXRJ
bWFnZTpbTlNJbWFnZSBpbWFnZU5hbWVkOkAiTlNFeGl0RnVsbFNjcmVlblRlbXBsYXRlIl1dOwot
ICAgICAgICBbYnV0dG9uIHNldEJvcmRlcmVkOk5PXTsKLSAgICAgICAgcmV0dXJuIGJ1dHRvbjsK
LSAgICB9Ci0gICAgY2FzZSBNZWRpYVVJQ29udHJvbDo6UmV3aW5kQnV0dG9uOiB7Ci0gICAgICAg
IE5TQnV0dG9uICpidXR0b24gPSBbW1FUSFVEQnV0dG9uIGFsbG9jXSBpbml0XTsKLSAgICAgICAg
W2J1dHRvbiBzZXRJbWFnZTpbTlNJbWFnZSBpbWFnZU5hbWVkOkAiTlNSZXdpbmRUZW1wbGF0ZSJd
XTsKLSAgICAgICAgW2J1dHRvbiBzZXRCb3JkZXJlZDpOT107Ci0gICAgICAgIHJldHVybiBidXR0
b247Ci0gICAgfQotICAgIGNhc2UgTWVkaWFVSUNvbnRyb2w6OkZhc3RGb3J3YXJkQnV0dG9uOiB7
Ci0gICAgICAgIE5TQnV0dG9uICpidXR0b24gPSBbW1FUSFVEQnV0dG9uIGFsbG9jXSBpbml0XTsK
LSAgICAgICAgW2J1dHRvbiBzZXRJbWFnZTpbTlNJbWFnZSBpbWFnZU5hbWVkOkAiTlNGYXN0Rm9y
d2FyZFRlbXBsYXRlIl1dOwotICAgICAgICBbYnV0dG9uIHNldEJvcmRlcmVkOk5PXTsKLSAgICAg
ICAgcmV0dXJuIGJ1dHRvbjsKLSAgICB9Ci0gICAgY2FzZSBNZWRpYVVJQ29udHJvbDo6Vm9sdW1l
VXBCdXR0b246IHsKLSAgICAgICAgTlNCdXR0b24gKmJ1dHRvbiA9IFtbUVRIVURCdXR0b24gYWxs
b2NdIGluaXRdOwotICAgICAgICBbYnV0dG9uIHNldEltYWdlOltOU0ltYWdlIGltYWdlTmFtZWQ6
QCJOU0F1ZGlvT3V0cHV0Vm9sdW1lSGlnaFRlbXBsYXRlIl1dOwotICAgICAgICBbYnV0dG9uIHNl
dEJvcmRlcmVkOk5PXTsKLSAgICAgICAgcmV0dXJuIGJ1dHRvbjsKLSAgICB9Ci0gICAgY2FzZSBN
ZWRpYVVJQ29udHJvbDo6Vm9sdW1lRG93bkJ1dHRvbjogewotICAgICAgICBOU0J1dHRvbiAqYnV0
dG9uID0gW1tRVEhVREJ1dHRvbiBhbGxvY10gaW5pdF07Ci0gICAgICAgIFtidXR0b24gc2V0SW1h
Z2U6W05TSW1hZ2UgaW1hZ2VOYW1lZDpAIk5TQXVkaW9PdXRwdXRWb2x1bWVMb3dUZW1wbGF0ZSJd
XTsKLSAgICAgICAgW2J1dHRvbiBzZXRCb3JkZXJlZDpOT107Ci0gICAgICAgIHJldHVybiBidXR0
b247Ci0gICAgfQotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVy
biBuaWw7Ci19Ci0KLXN0YXRpYyBOU0NvbnRyb2wgKmNyZWF0ZUNvbnRyb2xXaXRoTWVkaWFVSUNv
bnRyb2xUeXBlKE1lZGlhVUlDb250cm9sIGNvbnRyb2xUeXBlLCBOU1JlY3QgZnJhbWUpCi17Ci0g
ICAgTlNDb250cm9sICpjb250cm9sID0gY3JlYXRlTWVkaWFVSUNvbnRyb2woY29udHJvbFR5cGUp
OwotICAgIGNvbnRyb2wuZnJhbWUgPSBmcmFtZTsKLSAgICByZXR1cm4gY29udHJvbDsKLX0KLQot
c3RhdGljIE5TVGV4dEZpZWxkICpjcmVhdGVUaW1lVGV4dEZpZWxkKE5TUmVjdCBmcmFtZSkKLXsK
LSAgICBOU1RleHRGaWVsZCAqdGV4dEZpZWxkID0gW1tOU1RleHRGaWVsZCBhbGxvY10gaW5pdFdp
dGhGcmFtZTpmcmFtZV07Ci0gICAgW3RleHRGaWVsZCBzZXRUZXh0Q29sb3I6W05TQ29sb3Igd2hp
dGVDb2xvcl1dOwotICAgIFt0ZXh0RmllbGQgc2V0Qm9yZGVyZWQ6Tk9dOwotICAgIFt0ZXh0Rmll
bGQgc2V0Rm9udDpbTlNGb250IGJvbGRTeXN0ZW1Gb250T2ZTaXplOjEwXV07Ci0gICAgW3RleHRG
aWVsZCBzZXREcmF3c0JhY2tncm91bmQ6Tk9dOwotICAgIFt0ZXh0RmllbGQgc2V0QmV6ZWxlZDpO
T107Ci0gICAgW3RleHRGaWVsZCBzZXRFZGl0YWJsZTpOT107Ci0gICAgW3RleHRGaWVsZCBzZXRT
ZWxlY3RhYmxlOk5PXTsKLSAgICByZXR1cm4gdGV4dEZpZWxkOwotfQotCi1zdGF0aWMgTlNWaWV3
ICpjcmVhdGVNZWRpYVVJQmFja2dyb3VuZFZpZXcoKQotewotICAgIGlkIHZpZXcgPSBbW1FUSFVE
QmFja2dyb3VuZFZpZXcgYWxsb2NdIGluaXRdOwotCi0gICAgY29uc3QgQ0dGbG9hdCBxdWlja1Rp
bWVQbGF5ZXJIVURIZWlnaHQgPSA1OTsKLSAgICBjb25zdCBDR0Zsb2F0IHF1aWNrVGltZVBsYXll
ckhVRENvbnRlbnRCb3JkZXJQb3NpdGlvbiA9IDM4OwotCi0gICAgQUxMT1dfREVQUkVDQVRFRF9E
RUNMQVJBVElPTlNfQkVHSU4KLSAgICBbdmlldyBzZXRDb250ZW50Qm9yZGVyUG9zaXRpb246cXVp
Y2tUaW1lUGxheWVySFVEQ29udGVudEJvcmRlclBvc2l0aW9uIC8gcXVpY2tUaW1lUGxheWVySFVE
SGVpZ2h0XTsKLSAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKLQotICAgIHJl
dHVybiB2aWV3OwotfQotCi0tICh2b2lkKXdpbmRvd0RpZExvYWQKLXsKLSAgICBzdGF0aWMgY29u
c3QgQ0dGbG9hdCBob3Jpem9udGFsTWFyZ2luID0gMTA7Ci0gICAgc3RhdGljIGNvbnN0IENHRmxv
YXQgcGxheUJ1dHRvbldpZHRoID0gNDE7Ci0gICAgc3RhdGljIGNvbnN0IENHRmxvYXQgcGxheUJ1
dHRvbkhlaWdodCA9IDM1OwotICAgIHN0YXRpYyBjb25zdCBDR0Zsb2F0IHBsYXlCdXR0b25Ub3BN
YXJnaW4gPSA0OwotICAgIHN0YXRpYyBjb25zdCBDR0Zsb2F0IHZvbHVtZVNsaWRlcldpZHRoID0g
NTA7Ci0gICAgc3RhdGljIGNvbnN0IENHRmxvYXQgdm9sdW1lU2xpZGVySGVpZ2h0ID0gMTM7Ci0g
ICAgc3RhdGljIGNvbnN0IENHRmxvYXQgdm9sdW1lQnV0dG9uV2lkdGggPSAxODsKLSAgICBzdGF0
aWMgY29uc3QgQ0dGbG9hdCB2b2x1bWVCdXR0b25IZWlnaHQgPSAxNjsKLSAgICBzdGF0aWMgY29u
c3QgQ0dGbG9hdCB2b2x1bWVVcEJ1dHRvbkxlZnRNYXJnaW4gPSA0OwotICAgIHN0YXRpYyBjb25z
dCBDR0Zsb2F0IHZvbHVtZUNvbnRyb2xzVG9wTWFyZ2luID0gMTM7Ci0gICAgc3RhdGljIGNvbnN0
IENHRmxvYXQgZXhpdEZ1bGxzY3JlZW5CdXR0b25XaWR0aCA9IDI1OwotICAgIHN0YXRpYyBjb25z
dCBDR0Zsb2F0IGV4aXRGdWxsc2NyZWVuQnV0dG9uSGVpZ2h0ID0gMjE7Ci0gICAgc3RhdGljIGNv
bnN0IENHRmxvYXQgZXhpdEZ1bGxzY3JlZW5CdXR0b25Ub3BNYXJnaW4gPSAxMTsKLSAgICBzdGF0
aWMgY29uc3QgQ0dGbG9hdCB0aW1lbGluZVdpZHRoID0gMzE1OwotICAgIHN0YXRpYyBjb25zdCBD
R0Zsb2F0IHRpbWVsaW5lSGVpZ2h0ID0gMTQ7Ci0gICAgc3RhdGljIGNvbnN0IENHRmxvYXQgdGlt
ZWxpbmVCb3R0b21NYXJnaW4gPSA3OwotICAgIHN0YXRpYyBjb25zdCBDR0Zsb2F0IHRpbWVUZXh0
RmllbGRXaWR0aCA9IDU0OwotICAgIHN0YXRpYyBjb25zdCBDR0Zsb2F0IHRpbWVUZXh0RmllbGRI
ZWlnaHQgPSAxMzsKLSAgICBzdGF0aWMgY29uc3QgQ0dGbG9hdCB0aW1lVGV4dEZpZWxkSG9yaXpv
bnRhbE1hcmdpbiA9IDc7Ci0KLSAgICBpZiAoIVFUS2l0TGlicmFyeSgpCi0gICAgICAgIHx8ICFn
ZXRRVEhVREJhY2tncm91bmRWaWV3Q2xhc3MoKQotICAgICAgICB8fCAhZ2V0UVRIVURCdXR0b25D
bGFzcygpCi0gICAgICAgIHx8ICFnZXRRVEhVRFNsaWRlckNsYXNzKCkKLSAgICAgICAgfHwgIWdl
dFFUSFVEVGltZWxpbmVDbGFzcygpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBOU1dpbmRvdyAq
d2luZG93ID0gW3NlbGYgd2luZG93XTsKLSAgICBBU1NFUlQod2luZG93KTsKLQotICAgIE5TVmll
dyAqYmFja2dyb3VuZCA9IGNyZWF0ZU1lZGlhVUlCYWNrZ3JvdW5kVmlldygpOwotCi0gICAgW3dp
bmRvdyBzZXRDb250ZW50VmlldzpiYWNrZ3JvdW5kXTsKLSAgICBfYXJlYSA9IFtbTlNUcmFja2lu
Z0FyZWEgYWxsb2NdIGluaXRXaXRoUmVjdDpbYmFja2dyb3VuZCBib3VuZHNdIG9wdGlvbnM6TlNU
cmFja2luZ01vdXNlRW50ZXJlZEFuZEV4aXRlZCB8IE5TVHJhY2tpbmdBY3RpdmVBbHdheXMgb3du
ZXI6c2VsZiB1c2VySW5mbzpuaWxdOwotICAgIFtiYWNrZ3JvdW5kIGFkZFRyYWNraW5nQXJlYTpf
YXJlYV07Ci0gICAgW2JhY2tncm91bmQgcmVsZWFzZV07ICAgIAotCi0gICAgTlNWaWV3ICpjb250
ZW50VmlldyA9IFt3aW5kb3cgY29udGVudFZpZXddOwotCi0gICAgQ0dGbG9hdCBjZW50ZXIgPSBD
R0Zsb29yKCh3aW5kb3dXaWR0aCAtIHBsYXlCdXR0b25XaWR0aCkgLyAyKTsKLSAgICBfcGxheUJ1
dHRvbiA9IChOU0J1dHRvbiAqKWNyZWF0ZUNvbnRyb2xXaXRoTWVkaWFVSUNvbnRyb2xUeXBlKE1l
ZGlhVUlDb250cm9sOjpQbGF5UGF1c2VCdXR0b24sIE5TTWFrZVJlY3QoY2VudGVyLCB3aW5kb3dI
ZWlnaHQgLSBwbGF5QnV0dG9uVG9wTWFyZ2luIC0gcGxheUJ1dHRvbkhlaWdodCwgcGxheUJ1dHRv
bldpZHRoLCBwbGF5QnV0dG9uSGVpZ2h0KSk7Ci0gICAgQVNTRVJUKFtfcGxheUJ1dHRvbiBpc0tp
bmRPZkNsYXNzOltOU0J1dHRvbiBjbGFzc11dKTsKLSAgICBbX3BsYXlCdXR0b24gc2V0VGFyZ2V0
OnNlbGZdOwotICAgIFtfcGxheUJ1dHRvbiBzZXRBY3Rpb246QHNlbGVjdG9yKHRvZ2dsZVBsYXlp
bmc6KV07Ci0gICAgW2NvbnRlbnRWaWV3IGFkZFN1YnZpZXc6X3BsYXlCdXR0b25dOwotCi0gICAg
Q0dGbG9hdCBjbG9zZVRvUmlnaHQgPSB3aW5kb3dXaWR0aCAtIGhvcml6b250YWxNYXJnaW4gLSBl
eGl0RnVsbHNjcmVlbkJ1dHRvbldpZHRoOwotICAgIE5TQ29udHJvbCAqZXhpdEZ1bGxzY3JlZW5C
dXR0b24gPSBjcmVhdGVDb250cm9sV2l0aE1lZGlhVUlDb250cm9sVHlwZShNZWRpYVVJQ29udHJv
bDo6RXhpdEZ1bGxzY3JlZW5CdXR0b24sIE5TTWFrZVJlY3QoY2xvc2VUb1JpZ2h0LCB3aW5kb3dI
ZWlnaHQgLSBleGl0RnVsbHNjcmVlbkJ1dHRvblRvcE1hcmdpbiAtIGV4aXRGdWxsc2NyZWVuQnV0
dG9uSGVpZ2h0LCBleGl0RnVsbHNjcmVlbkJ1dHRvbldpZHRoLCBleGl0RnVsbHNjcmVlbkJ1dHRv
bkhlaWdodCkpOwotICAgIFtleGl0RnVsbHNjcmVlbkJ1dHRvbiBzZXRBY3Rpb246QHNlbGVjdG9y
KGV4aXRGdWxsc2NyZWVuOildOwotICAgIFtleGl0RnVsbHNjcmVlbkJ1dHRvbiBzZXRUYXJnZXQ6
c2VsZl07Ci0gICAgW2NvbnRlbnRWaWV3IGFkZFN1YnZpZXc6ZXhpdEZ1bGxzY3JlZW5CdXR0b25d
OwotICAgIFtleGl0RnVsbHNjcmVlbkJ1dHRvbiByZWxlYXNlXTsKLSAgICAKLSAgICBDR0Zsb2F0
IHZvbHVtZUNvbnRyb2xzQm90dG9tID0gd2luZG93SGVpZ2h0IC0gdm9sdW1lQ29udHJvbHNUb3BN
YXJnaW4gLSB2b2x1bWVCdXR0b25IZWlnaHQ7Ci0gICAgQ0dGbG9hdCBsZWZ0ID0gaG9yaXpvbnRh
bE1hcmdpbjsKLSAgICBOU0NvbnRyb2wgKnZvbHVtZURvd25CdXR0b24gPSBjcmVhdGVDb250cm9s
V2l0aE1lZGlhVUlDb250cm9sVHlwZShNZWRpYVVJQ29udHJvbDo6Vm9sdW1lRG93bkJ1dHRvbiwg
TlNNYWtlUmVjdChsZWZ0LCB2b2x1bWVDb250cm9sc0JvdHRvbSwgdm9sdW1lQnV0dG9uV2lkdGgs
IHZvbHVtZUJ1dHRvbkhlaWdodCkpOwotICAgIFtjb250ZW50VmlldyBhZGRTdWJ2aWV3OnZvbHVt
ZURvd25CdXR0b25dOwotICAgIFt2b2x1bWVEb3duQnV0dG9uIHNldFRhcmdldDpzZWxmXTsKLSAg
ICBbdm9sdW1lRG93bkJ1dHRvbiBzZXRBY3Rpb246QHNlbGVjdG9yKHNldFZvbHVtZVRvWmVybzop
XTsKLSAgICBbdm9sdW1lRG93bkJ1dHRvbiByZWxlYXNlXTsKLQotICAgIGxlZnQgKz0gdm9sdW1l
QnV0dG9uV2lkdGg7Ci0gICAgX3ZvbHVtZVNsaWRlciA9IGNyZWF0ZUNvbnRyb2xXaXRoTWVkaWFV
SUNvbnRyb2xUeXBlKE1lZGlhVUlDb250cm9sOjpTbGlkZXIsIE5TTWFrZVJlY3QobGVmdCwgdm9s
dW1lQ29udHJvbHNCb3R0b20gKyBDR0Zsb29yKCh2b2x1bWVCdXR0b25IZWlnaHQgLSB2b2x1bWVT
bGlkZXJIZWlnaHQpIC8gMiksIHZvbHVtZVNsaWRlcldpZHRoLCB2b2x1bWVTbGlkZXJIZWlnaHQp
KTsKLSAgICBbX3ZvbHVtZVNsaWRlciBzZXRWYWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJs
ZTpbc2VsZiBtYXhWb2x1bWVdXSBmb3JLZXk6QCJtYXhWYWx1ZSJdOwotICAgIFtfdm9sdW1lU2xp
ZGVyIHNldFRhcmdldDpzZWxmXTsKLSAgICBbX3ZvbHVtZVNsaWRlciBzZXRBY3Rpb246QHNlbGVj
dG9yKHZvbHVtZUNoYW5nZWQ6KV07Ci0gICAgW2NvbnRlbnRWaWV3IGFkZFN1YnZpZXc6X3ZvbHVt
ZVNsaWRlcl07Ci0KLSAgICBsZWZ0ICs9IHZvbHVtZVNsaWRlcldpZHRoICsgdm9sdW1lVXBCdXR0
b25MZWZ0TWFyZ2luOwotICAgIE5TQ29udHJvbCAqdm9sdW1lVXBCdXR0b24gPSBjcmVhdGVDb250
cm9sV2l0aE1lZGlhVUlDb250cm9sVHlwZShNZWRpYVVJQ29udHJvbDo6Vm9sdW1lVXBCdXR0b24s
IE5TTWFrZVJlY3QobGVmdCwgdm9sdW1lQ29udHJvbHNCb3R0b20sIHZvbHVtZUJ1dHRvbldpZHRo
LCB2b2x1bWVCdXR0b25IZWlnaHQpKTsKLSAgICBbdm9sdW1lVXBCdXR0b24gc2V0VGFyZ2V0OnNl
bGZdOwotICAgIFt2b2x1bWVVcEJ1dHRvbiBzZXRBY3Rpb246QHNlbGVjdG9yKHNldFZvbHVtZVRv
TWF4aW11bTopXTsKLSAgICBbY29udGVudFZpZXcgYWRkU3Vidmlldzp2b2x1bWVVcEJ1dHRvbl07
Ci0gICAgW3ZvbHVtZVVwQnV0dG9uIHJlbGVhc2VdOwotCi0gICAgX3RpbWVsaW5lID0gY3JlYXRl
TWVkaWFVSUNvbnRyb2woTWVkaWFVSUNvbnRyb2w6OlRpbWVsaW5lKTsKLQotICAgIFtfdGltZWxp
bmUgc2V0VGFyZ2V0OnNlbGZdOwotICAgIFtfdGltZWxpbmUgc2V0QWN0aW9uOkBzZWxlY3Rvcih0
aW1lbGluZVBvc2l0aW9uQ2hhbmdlZDopXTsKLSAgICBbX3RpbWVsaW5lIHNldEZyYW1lOk5TTWFr
ZVJlY3QoQ0dGbG9vcigod2luZG93V2lkdGggLSB0aW1lbGluZVdpZHRoKSAvIDIpLCB0aW1lbGlu
ZUJvdHRvbU1hcmdpbiwgdGltZWxpbmVXaWR0aCwgdGltZWxpbmVIZWlnaHQpXTsKLSAgICBbY29u
dGVudFZpZXcgYWRkU3VidmlldzpfdGltZWxpbmVdOwotCi0gICAgX2VsYXBzZWRUaW1lVGV4dCA9
IGNyZWF0ZVRpbWVUZXh0RmllbGQoTlNNYWtlUmVjdCh0aW1lVGV4dEZpZWxkSG9yaXpvbnRhbE1h
cmdpbiwgdGltZWxpbmVCb3R0b21NYXJnaW4sIHRpbWVUZXh0RmllbGRXaWR0aCwgdGltZVRleHRG
aWVsZEhlaWdodCkpOwotICAgIFtfZWxhcHNlZFRpbWVUZXh0IHNldEFsaWdubWVudDpOU1RleHRB
bGlnbm1lbnRMZWZ0XTsKLSAgICBbY29udGVudFZpZXcgYWRkU3VidmlldzpfZWxhcHNlZFRpbWVU
ZXh0XTsKLQotICAgIF9yZW1haW5pbmdUaW1lVGV4dCA9IGNyZWF0ZVRpbWVUZXh0RmllbGQoTlNN
YWtlUmVjdCh3aW5kb3dXaWR0aCAtIHRpbWVUZXh0RmllbGRIb3Jpem9udGFsTWFyZ2luIC0gdGlt
ZVRleHRGaWVsZFdpZHRoLCB0aW1lbGluZUJvdHRvbU1hcmdpbiwgdGltZVRleHRGaWVsZFdpZHRo
LCB0aW1lVGV4dEZpZWxkSGVpZ2h0KSk7Ci0gICAgW19yZW1haW5pbmdUaW1lVGV4dCBzZXRBbGln
bm1lbnQ6TlNUZXh0QWxpZ25tZW50UmlnaHRdOwotICAgIFtjb250ZW50VmlldyBhZGRTdWJ2aWV3
Ol9yZW1haW5pbmdUaW1lVGV4dF07Ci0KLSAgICBbd2luZG93IHJlY2FsY3VsYXRlS2V5Vmlld0xv
b3BdOwotICAgIFt3aW5kb3cgc2V0SW5pdGlhbEZpcnN0UmVzcG9uZGVyOl9wbGF5QnV0dG9uXTsK
LSAgICBbd2luZG93IGNlbnRlcl07Ci19Ci0KLS0gKHZvaWQpdXBkYXRlVm9sdW1lCi17Ci0gICAg
W192b2x1bWVTbGlkZXIgc2V0RmxvYXRWYWx1ZTpbc2VsZiB2b2x1bWVdXTsKLX0KLQotLSAodm9p
ZCl1cGRhdGVUaW1lCi17Ci0gICAgW3NlbGYgdXBkYXRlVm9sdW1lXTsKLQotICAgIFtfdGltZWxp
bmUgc2V0RmxvYXRWYWx1ZTpbc2VsZiBjdXJyZW50VGltZV1dOwotICAgIFtfdGltZWxpbmUgc2V0
VmFsdWU6W05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6W3NlbGYgZHVyYXRpb25dXSBmb3JLZXk6
QCJtYXhWYWx1ZSJdOwotCi0gICAgW19yZW1haW5pbmdUaW1lVGV4dCBzZXRTdHJpbmdWYWx1ZTpb
c2VsZiByZW1haW5pbmdUaW1lVGV4dF1dOwotICAgIFtfZWxhcHNlZFRpbWVUZXh0IHNldFN0cmlu
Z1ZhbHVlOltzZWxmIGVsYXBzZWRUaW1lVGV4dF1dOwotfQotCi0tICh2b2lkKWVuZFNjcnViYmlu
ZwotewotICAgIEFTU0VSVChfaXNTY3J1YmJpbmcpOwotICAgIF9pc1NjcnViYmluZyA9IE5POwot
ICAgIGlmIChIVE1MVmlkZW9FbGVtZW50KiB2aWRlb0VsZW1lbnQgPSBbX2RlbGVnYXRlIHZpZGVv
RWxlbWVudF0pCi0gICAgICAgIHZpZGVvRWxlbWVudC0+ZW5kU2NydWJiaW5nKCk7Ci19Ci0KLS0g
KHZvaWQpdGltZWxpbmVQb3NpdGlvbkNoYW5nZWQ6KGlkKXNlbmRlcgotewotICAgIFVOVVNFRF9Q
QVJBTShzZW5kZXIpOwotICAgIFtzZWxmIHNldEN1cnJlbnRUaW1lOltfdGltZWxpbmUgZmxvYXRW
YWx1ZV1dOwotICAgIGlmICghX2lzU2NydWJiaW5nKSB7Ci0gICAgICAgIF9pc1NjcnViYmluZyA9
IFlFUzsKLSAgICAgICAgaWYgKEhUTUxWaWRlb0VsZW1lbnQqIHZpZGVvRWxlbWVudCA9IFtfZGVs
ZWdhdGUgdmlkZW9FbGVtZW50XSkKLSAgICAgICAgICAgIHZpZGVvRWxlbWVudC0+YmVnaW5TY3J1
YmJpbmcoKTsKLSAgICAgICAgc3RhdGljIE5TQXJyYXkgKmVuZFNjcnViYmluZ01vZGVzID0gW1tO
U0FycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6TlNEZWZhdWx0UnVuTG9vcE1vZGUsIE5TTW9k
YWxQYW5lbFJ1bkxvb3BNb2RlLCBuaWxdOwotICAgICAgICAvLyBTY2hlZHVsZSAtZW5kU2NydWJi
aW5nIGZvciB3aGVuIGxlYXZpbmcgbW91c2UgdHJhY2tpbmcgbW9kZS4KLSAgICAgICAgW1tOU1J1
bkxvb3AgY3VycmVudFJ1bkxvb3BdIHBlcmZvcm1TZWxlY3RvcjpAc2VsZWN0b3IoZW5kU2NydWJi
aW5nKSB0YXJnZXQ6c2VsZiBhcmd1bWVudDpuaWwgb3JkZXI6MCBtb2RlczplbmRTY3J1YmJpbmdN
b2Rlc107Ci0gICAgfQotfQotCi0tIChmbG9hdCljdXJyZW50VGltZQotewotICAgIHJldHVybiBb
X2RlbGVnYXRlIHZpZGVvRWxlbWVudF0gPyBbX2RlbGVnYXRlIHZpZGVvRWxlbWVudF0tPmN1cnJl
bnRUaW1lKCkgOiAwOwotfQotCi0tICh2b2lkKXNldEN1cnJlbnRUaW1lOihmbG9hdCljdXJyZW50
VGltZQotewotICAgIGlmICghW19kZWxlZ2F0ZSB2aWRlb0VsZW1lbnRdKQotICAgICAgICByZXR1
cm47Ci0gICAgW19kZWxlZ2F0ZSB2aWRlb0VsZW1lbnRdLT5zZXRDdXJyZW50VGltZShjdXJyZW50
VGltZSk7Ci0gICAgW3NlbGYgdXBkYXRlVGltZV07Ci19Ci0KLS0gKGRvdWJsZSlkdXJhdGlvbgot
ewotICAgIHJldHVybiBbX2RlbGVnYXRlIHZpZGVvRWxlbWVudF0gPyBbX2RlbGVnYXRlIHZpZGVv
RWxlbWVudF0tPmR1cmF0aW9uKCkgOiAwOwotfQotCi0tIChmbG9hdCltYXhWb2x1bWUKLXsKLSAg
ICAvLyBTZXQgdGhlIHZvbHVtZSBzbGlkZXIgcmVzb2x1dGlvbgotICAgIHJldHVybiAxMDA7Ci19
Ci0KLS0gKHZvaWQpdm9sdW1lQ2hhbmdlZDooaWQpc2VuZGVyCi17Ci0gICAgVU5VU0VEX1BBUkFN
KHNlbmRlcik7Ci0gICAgW3NlbGYgc2V0Vm9sdW1lOltfdm9sdW1lU2xpZGVyIGZsb2F0VmFsdWVd
XTsKLX0KLQotLSAodm9pZClzZXRWb2x1bWVUb1plcm86KGlkKXNlbmRlcgotewotICAgIFVOVVNF
RF9QQVJBTShzZW5kZXIpOwotICAgIFtzZWxmIHNldFZvbHVtZTowXTsKLX0KLQotLSAodm9pZClz
ZXRWb2x1bWVUb01heGltdW06KGlkKXNlbmRlcgotewotICAgIFVOVVNFRF9QQVJBTShzZW5kZXIp
OwotICAgIFtzZWxmIHNldFZvbHVtZTpbc2VsZiBtYXhWb2x1bWVdXTsKLX0KLQotLSAodm9pZClk
ZWNyZW1lbnRWb2x1bWUKLXsKLSAgICBpZiAoIVtfZGVsZWdhdGUgdmlkZW9FbGVtZW50XSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgZmxvYXQgdm9sdW1lID0gW3NlbGYgdm9sdW1lXSAtIDEwOwot
ICAgIFtzZWxmIHNldFZvbHVtZTpzdGQ6Om1heCh2b2x1bWUsIDAuMGYpXTsKLX0KLQotLSAodm9p
ZClpbmNyZW1lbnRWb2x1bWUKLXsKLSAgICBpZiAoIVtfZGVsZWdhdGUgdmlkZW9FbGVtZW50XSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgZmxvYXQgdm9sdW1lID0gW3NlbGYgdm9sdW1lXSArIDEw
OwotICAgIFtzZWxmIHNldFZvbHVtZTpzdGQ6Om1pbih2b2x1bWUsIFtzZWxmIG1heFZvbHVtZV0p
XTsKLX0KLQotLSAoZmxvYXQpdm9sdW1lCi17Ci0gICAgcmV0dXJuIFtfZGVsZWdhdGUgdmlkZW9F
bGVtZW50XSA/IFtfZGVsZWdhdGUgdmlkZW9FbGVtZW50XS0+dm9sdW1lKCkgKiBbc2VsZiBtYXhW
b2x1bWVdIDogMDsKLX0KLQotLSAodm9pZClzZXRWb2x1bWU6KGZsb2F0KXZvbHVtZQotewotICAg
IGlmICghW19kZWxlZ2F0ZSB2aWRlb0VsZW1lbnRdKQotICAgICAgICByZXR1cm47Ci0gICAgaWYg
KFtfZGVsZWdhdGUgdmlkZW9FbGVtZW50XS0+bXV0ZWQoKSkKLSAgICAgICAgW19kZWxlZ2F0ZSB2
aWRlb0VsZW1lbnRdLT5zZXRNdXRlZChmYWxzZSk7Ci0gICAgW19kZWxlZ2F0ZSB2aWRlb0VsZW1l
bnRdLT5zZXRWb2x1bWUodm9sdW1lIC8gW3NlbGYgbWF4Vm9sdW1lXSk7Ci0gICAgW3NlbGYgdXBk
YXRlVm9sdW1lXTsKLX0KLQotLSAodm9pZCl1cGRhdGVQbGF5QnV0dG9uCi17Ci0gICAgW19wbGF5
QnV0dG9uIHNldEludFZhbHVlOltzZWxmIHBsYXlpbmddXTsKLX0KLQotLSAodm9pZCl1cGRhdGVS
YXRlCi17Ci0gICAgQk9PTCBwbGF5aW5nID0gW3NlbGYgcGxheWluZ107Ci0KLSAgICAvLyBLZWVw
IHRoZSBIVUQgdmlzaWJsZSB3aGVuIHBhdXNlZC4KLSAgICBpZiAoIXBsYXlpbmcpCi0gICAgICAg
IFtzZWxmIGZhZGVXaW5kb3dJbl07Ci0gICAgZWxzZSBpZiAoIV9tb3VzZUlzSW5IVUQpIHsKLSAg
ICAgICAgW05TT2JqZWN0IGNhbmNlbFByZXZpb3VzUGVyZm9ybVJlcXVlc3RzV2l0aFRhcmdldDpz
ZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihmYWRlV2luZG93T3V0KSBvYmplY3Q6bmlsXTsKLSAgICAg
ICAgW3NlbGYgcGVyZm9ybVNlbGVjdG9yOkBzZWxlY3RvcihmYWRlV2luZG93T3V0KSB3aXRoT2Jq
ZWN0Om5pbCBhZnRlckRlbGF5OkhVRFdpbmRvd0ZhZGVPdXREZWxheV07Ci0gICAgfQotICAgIFtz
ZWxmIHVwZGF0ZVBsYXlCdXR0b25dOwotfQotCi0tICh2b2lkKXRvZ2dsZVBsYXlpbmc6KGlkKXNl
bmRlcgotewotICAgIFVOVVNFRF9QQVJBTShzZW5kZXIpOwotICAgIFtzZWxmIHNldFBsYXlpbmc6
IVtzZWxmIHBsYXlpbmddXTsKLX0KLQotLSAoQk9PTClwbGF5aW5nCi17Ci0gICAgSFRNTFZpZGVv
RWxlbWVudCogdmlkZW9FbGVtZW50ID0gW19kZWxlZ2F0ZSB2aWRlb0VsZW1lbnRdOwotICAgIGlm
ICghdmlkZW9FbGVtZW50KQotICAgICAgICByZXR1cm4gTk87Ci0KLSAgICByZXR1cm4gIXZpZGVv
RWxlbWVudC0+Y2FuUGxheSgpOwotfQotCi0tICh2b2lkKXNldFBsYXlpbmc6KEJPT0wpcGxheWlu
ZwotewotICAgIEhUTUxWaWRlb0VsZW1lbnQqIHZpZGVvRWxlbWVudCA9IFtfZGVsZWdhdGUgdmlk
ZW9FbGVtZW50XTsKLQotICAgIGlmICghdmlkZW9FbGVtZW50KQotICAgICAgICByZXR1cm47Ci0K
LSAgICBpZiAocGxheWluZykKLSAgICAgICAgdmlkZW9FbGVtZW50LT5wbGF5KCk7Ci0gICAgZWxz
ZQotICAgICAgICB2aWRlb0VsZW1lbnQtPnBhdXNlKCk7Ci19Ci0KLXN0YXRpYyBOU1N0cmluZyAq
dGltZVRvU3RyaW5nKGRvdWJsZSB0aW1lKQotewotICAgIEFTU0VSVF9BUkcodGltZSwgdGltZSA+
PSAwKTsKLQotICAgIGlmICghc3RkOjppc2Zpbml0ZSh0aW1lKSkKLSAgICAgICAgdGltZSA9IDA7
Ci0KLSAgICBpbnQgc2Vjb25kcyA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoc3RkOjphYnModGlt
ZSkpOwotICAgIGludCBob3VycyA9IHNlY29uZHMgLyAoNjAgKiA2MCk7Ci0gICAgaW50IG1pbnV0
ZXMgPSAoc2Vjb25kcyAvIDYwKSAlIDYwOwotICAgIHNlY29uZHMgJT0gNjA7Ci0KLSAgICBpZiAo
aG91cnMpCi0gICAgICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVkOiUw
MmQ6JTAyZCIsIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzXTsKLQotICAgIHJldHVybiBbTlNTdHJp
bmcgc3RyaW5nV2l0aEZvcm1hdDpAIiUwMmQ6JTAyZCIsIG1pbnV0ZXMsIHNlY29uZHNdOyAgICAK
LX0KLQotLSAoTlNTdHJpbmcgKilyZW1haW5pbmdUaW1lVGV4dAotewotICAgIEhUTUxWaWRlb0Vs
ZW1lbnQqIHZpZGVvRWxlbWVudCA9IFtfZGVsZWdhdGUgdmlkZW9FbGVtZW50XTsKLSAgICBpZiAo
IXZpZGVvRWxlbWVudCkKLSAgICAgICAgcmV0dXJuIEAiIjsKLQotICAgIGRvdWJsZSByZW1haW5p
bmdUaW1lID0gMDsKLQotICAgIGlmIChzdGQ6OmlzZmluaXRlKHZpZGVvRWxlbWVudC0+ZHVyYXRp
b24oKSkgJiYgc3RkOjppc2Zpbml0ZSh2aWRlb0VsZW1lbnQtPmN1cnJlbnRUaW1lKCkpKQotICAg
ICAgICByZW1haW5pbmdUaW1lID0gdmlkZW9FbGVtZW50LT5kdXJhdGlvbigpIC0gdmlkZW9FbGVt
ZW50LT5jdXJyZW50VGltZSgpOwotCi0gICAgcmV0dXJuIFtAIi0iIHN0cmluZ0J5QXBwZW5kaW5n
U3RyaW5nOnRpbWVUb1N0cmluZyhyZW1haW5pbmdUaW1lKV07Ci19Ci0KLS0gKE5TU3RyaW5nICop
ZWxhcHNlZFRpbWVUZXh0Ci17Ci0gICAgaWYgKCFbX2RlbGVnYXRlIHZpZGVvRWxlbWVudF0pCi0g
ICAgICAgIHJldHVybiBAIiI7Ci0KLSAgICByZXR1cm4gdGltZVRvU3RyaW5nKFtfZGVsZWdhdGUg
dmlkZW9FbGVtZW50XS0+Y3VycmVudFRpbWUoKSk7Ci19Ci0KLS8vIE1BUks6IE5TUmVzcG9uZGVy
Ci0KLS0gKHZvaWQpbW91c2VFbnRlcmVkOihOU0V2ZW50ICopdGhlRXZlbnQKLXsKLSAgICBVTlVT
RURfUEFSQU0odGhlRXZlbnQpOwotICAgIC8vIE1ha2Ugc3VyZSB0aGUgSFVEIHdvbid0IGJlIGhp
ZGRlbiBmcm9tIG5vdwotICAgIF9tb3VzZUlzSW5IVUQgPSBZRVM7Ci0gICAgW3NlbGYgZmFkZVdp
bmRvd0luXTsKLX0KLQotLSAodm9pZCltb3VzZUV4aXRlZDooTlNFdmVudCAqKXRoZUV2ZW50Ci17
Ci0gICAgVU5VU0VEX1BBUkFNKHRoZUV2ZW50KTsKLSAgICBfbW91c2VJc0luSFVEID0gTk87Ci0g
ICAgW3NlbGYgZmFkZVdpbmRvd0luXTsKLX0KLQotLSAodm9pZClyZXdpbmQ6KGlkKXNlbmRlcgot
ewotICAgIFVOVVNFRF9QQVJBTShzZW5kZXIpOwotICAgIGlmICghW19kZWxlZ2F0ZSB2aWRlb0Vs
ZW1lbnRdKQotICAgICAgICByZXR1cm47Ci0gICAgW19kZWxlZ2F0ZSB2aWRlb0VsZW1lbnRdLT5y
ZXdpbmQoMzApOwotfQotCi0tICh2b2lkKWZhc3RGb3J3YXJkOihpZClzZW5kZXIKLXsKLSAgICBV
TlVTRURfUEFSQU0oc2VuZGVyKTsKLSAgICBpZiAoIVtfZGVsZWdhdGUgdmlkZW9FbGVtZW50XSkK
LSAgICAgICAgcmV0dXJuOwotfQotCi0tICh2b2lkKWV4aXRGdWxsc2NyZWVuOihpZClzZW5kZXIK
LXsKLSAgICBVTlVTRURfUEFSQU0oc2VuZGVyKTsKLSAgICBpZiAoX2lzRW5kaW5nRnVsbHNjcmVl
bikKLSAgICAgICAgcmV0dXJuOwotICAgIF9pc0VuZGluZ0Z1bGxzY3JlZW4gPSBZRVM7Ci0gICAg
W19kZWxlZ2F0ZSByZXF1ZXN0RXhpdEZ1bGxzY3JlZW5dOyAKLX0KLQotLy8gTUFSSzogTlNXaW5k
b3dEZWxlZ2F0ZQotCi0tICh2b2lkKXdpbmRvd0RpZEV4cG9zZTooTlNOb3RpZmljYXRpb24gKilu
b3RpZmljYXRpb24KLXsKLSAgICBVTlVTRURfUEFSQU0obm90aWZpY2F0aW9uKTsKLSAgICBbc2Vs
ZiBzY2hlZHVsZVRpbWVVcGRhdGVdOwotfQotCi0tICh2b2lkKXdpbmRvd0RpZENsb3NlOihOU05v
dGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgotewotICAgIFVOVVNFRF9QQVJBTShub3RpZmljYXRp
b24pOwotICAgIFtzZWxmIHVuc2NoZWR1bGVUaW1lVXBkYXRlXTsKLX0KLQotQGVuZAotCi0jZW5k
aWYK
</data>
<flag name="review"
          id="406550"
          type_id="1"
          status="+"
          setter="jonlee"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391468</attachid>
            <date>2020-02-22 14:34:50 -0800</date>
            <delta_ts>2020-02-22 21:46:02 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-207795-20200222143449.patch</filename>
            <type>text/plain</type>
            <size>87552</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3MTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzZiYTUzOGU0MmViN2Qw
NWExZTBjYWM1NWQ5ZTI3ZTA4MzAwYWZmNi4uZGQ5OTU0ODNlZGFmNmRlODIyNjcwN2ZlYTBlMTc4
MDU2NDI2MTFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIwLTAyLTE0ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFN0b3AgdXNpbmcgUVRLaXQg
Zm9yIHJlbmRlcmluZyBXSzEgdmlkZW8gZnVsbHNjcmVlbiBjb250cm9scworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3Nzk1CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS80ODg5NDkxNT4KKworICAgICAgICBSZXZpZXdlZCBieSBKb24gTGVlLgorCisg
ICAgICAgIERyaXZlLWJ5IGZpeGVzOgorCisgICAgICAgIC0gRG9uJ3Qgc2V0IHRoZSB2aWRlbyBs
YXllciB0byBub3QtdmlzaWJsZSB3aGVuIGluIHZpZGVvIGZ1bGxzY3JlZW4gbW9kZS4KKyAgICAg
ICAgLSBFeHBvcnQgcHJldmlvdXNseSB1bi1leHBvcnRlZCBtZXRob2RzLgorICAgICAgICAtIE1h
a2Ugc29tZSBpb3Mtb25seSBjbGFzc2VzIGF2YWlsYWJsZSBvbiBtYWMuCisgICAgICAgIC0gQWRk
IGEgY291cGxlIHByZXZpb3VzbHkgdW5pbXBsZW1lbnRlZCBwcm9wZXJ0aWVzIHRvIFdlYkFWUGxh
eWVyQ29udHJvbGxlciBuZWVkZWQgYnkgQVZLaXQuCisgICAgICAgIC0gV2ViQ29yZUZ1bGxzY3Jl
ZW5XaW5kb3cgZG9lc24ndCBkZXBlbmQgb24gRlVMTFNDUkVFTl9BUEkuCisKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnZpc2li
aWxpdHlTdGF0ZUNoYW5nZWQpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktp
dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktp
dC5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Ojpl
eHRlcm5hbFBsYXliYWNrQ2hhbmdlZCk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYkFWUGxh
eWVyQ29udHJvbGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJBVlBsYXllckNvbnRy
b2xsZXIubW06CisgICAgICAgICgtW1dlYkFWUGxheWVyQ29udHJvbGxlciBjYW5TZWVrRnJhbWVC
YWNrd2FyZF0pOgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIgY2FuU2Vla0ZyYW1l
Rm9yd2FyZF0pOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJDb3JlRnVsbFNjcmVlbldpbmRv
dy5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5tbToK
KwogMjAyMC0wMi0xMyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAg
ICBNZWRpYVRvb2xib3ggbWF5IG5vdCBiZSBhdmFpbGFibGU7IGNoZWNrIGJlZm9yZSBjYWxsaW5n
IE1UT3ZlcnJpZGVTaG91bGRQbGF5SERSVmlkZW8oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggOTE2
YzE5YTlkOTk4YTE1YzQ4ZjliZTAwNGU5MjIzMjgxZGFiMWM3Yi4uYzhhOGFjYzQyOTZjYTIwM2M0
NTU3MWRmYTk4YjA1Y2JiNGVhNjYxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMjAtMDItMTQgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAg
ICAgU3RvcCB1c2luZyBRVEtpdCBmb3IgcmVuZGVyaW5nIFdLMSB2aWRlbyBmdWxsc2NyZWVuIGNv
bnRyb2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDc3OTUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ4ODk0OTE1PgorCisgICAgICAgIFJldmll
d2VkIGJ5IEpvbiBMZWUuCisKKyAgICAgICAgKiBQQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBwYWwvc3BpL2NvY29hL0FWS2l0U1BJLmg6CisgICAgICAgICogcGFsL3Nw
aS9tYWMvTlNXaW5kb3dTUEkuaDoKKyAgICAgICAgKiBwYWwvc3BpL21hYy9RVEtpdFNQSS5oOiBS
ZW1vdmVkLgorCiAyMDIwLTAyLTIxICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUu
Y29tPgogCiAgICAgICAgIFttYWNPU10gTGFyZ2UgZm9ybSBjb250cm9scyBhcmUgcmVuZGVyZWQg
YXQgdGhlIHdyb25nIE5TQ29udHJvbFNpemUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNTYxMDJiY2M4OGNhYjdiMDY4
YjRmNGUyYjU5OTJmMDc3ZGQ0YmUzMC4uOWM3MjdiZjkzMzdkMGNhMjVlYzFjY2Y5ZDhlNGZlMDY3
NWI0Mzk3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMC0wMi0yMiAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBTdG9wIHVzaW5nIFFUS2l0IGZvciBy
ZW5kZXJpbmcgV0sxIHZpZGVvIGZ1bGxzY3JlZW4gY29udHJvbHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzc5NQorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNDg4OTQ5MTU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSm9uIExlZS4KKworICAgICAg
ICBVc2UgTlNXaW5kb3dTUEkuaCByYXRoZXIgdGhhbiBkZWNsYXJpbmcgU1BJIGluIHRoZSBzb3Vy
Y2UgZmlsZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29u
dHJvbGxlci5tbToKKwogMjAyMC0wMi0yMSAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5
QGFwcGxlLmNvbT4KIAogICAgICAgICBBcHAtYm91bmQgZG9tYWlucyBzaG91bGQgaGF2ZSBzZXBh
cmF0ZSBOZXR3b3JrIFNlc3Npb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggM2Q3
YjQ3NjlkYzBjYjE2OWQ4OWEzZTVhODc2ODZmM2E3NzNlYzNlOC4uNzBlYjRlOTFlOGQ4NDAzYmIx
OGM3YTVjNzM5MjJkMTY0ZTUxYjg4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDc2IEBACisyMDIwLTAyLTE0ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29t
PgorCisgICAgICAgIFN0b3AgdXNpbmcgUVRLaXQgZm9yIHJlbmRlcmluZyBXSzEgdmlkZW8gZnVs
bHNjcmVlbiBjb250cm9scworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA3Nzk1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80ODg5NDkxNT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBKb24gTGVlLgorCisgICAgICAgIFN3aXRjaCB0byB1c2luZyBBVlBs
YXllclZpZXcgaW5zdGVhZCBvZiBRVEhVRCB0byByZW5kZXIgb3VyIGZ1bGxzY3JlZW4gY29udHJv
bHMuCisKKyAgICAgICAgSW4gYWRkaXRpb24sIHN3aXRjaCB0byBhIG1vZGVybiBOU1dpbmRvdyBm
dWxsc2NyZWVuIEFQSSwgd2l0aCBjdXN0b20sIHNtb290aCBhbmltYXRpb25zIHdoaWNoIAorICAg
ICAgICBtb3ZlIHRoZSBmdWxsc2NyZWVuIHdpbmRvdyB0byBhIHNlcGFyYXRlIHNwYWNlLiBUaGlz
IHJlcXVpcmVzIHN1YmNsYXNzaW5nIEFWUGxheWVyVmlldyBzbyB0aGF0CisgICAgICAgIGZ1bGxz
Y3JlZW4gdG9nZ2xpbmcgd2lsbCBzaWduYWwgdG8gdGhlIGNvbnRyb2xsZXIsIHNvIHRoYXQgb3Vy
IGZ1bGxzY3JlZW4gYnV0dG9uIGFuZCB0aGUgaW5saW5lCisgICAgICAgIHZlcnNpb24gb2Ygc2Ft
ZSBkb24ndCBnZXQgb3V0IG9mIHN5bmMuIEJlY2F1c2UgQVZQbGF5ZXJWaWV3IHJlcXVpcmVzIGFu
IEFWUGxheWVyIGluIG9yZGVyIHRvCisgICAgICAgIGRpc3BsYXkgdGhlIHZpZGVvIGxheWVyLCBh
bmQgd2Ugd29uJ3QgbmVjZXNzYXJpbHkgaGF2ZSBhbiBBVlBsYXllciBmb3IgTVNFLWJhY2tlZCB2
aWRlb3MsIGluc3RlYWQKKyAgICAgICAgaW5zdGFsbCBhIGN1c3RvbSBvdmVybGF5IHZpZXcgaW5z
aWRlIHRoZSBBVlBsYXllclZpZXcgaW4gd2hpY2ggdG8gaG9zdCB0aGUgZnVsbHNjcmVlbiB2aWRl
byBsYXllci4KKworICAgICAgICAqIFdlYlZpZXcvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ci5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbToK
KyAgICAgICAgKC1bV2ViT3ZlcmxheUxheWVyIGxheW91dFN1YmxheWVyc10pOgorICAgICAgICAo
V2ViQVZQbGF5ZXJWaWV3X2RlbGVnYXRlKToKKyAgICAgICAgKFdlYkFWUGxheWVyVmlld19zZXRE
ZWxlZ2F0ZSk6CisgICAgICAgIChXZWJBVlBsYXllclZpZXdfaXNGdWxsU2NyZWVuKToKKyAgICAg
ICAgKFdlYkFWUGxheWVyVmlld19lbnRlckZ1bGxTY3JlZW4pOgorICAgICAgICAoV2ViQVZQbGF5
ZXJWaWV3X2V4aXRGdWxsU2NyZWVuKToKKyAgICAgICAgKGFsbG9jV2ViQVZQbGF5ZXJWaWV3SW5z
dGFuY2UpOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIGluaXRdKToK
KyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciBkZWFsbG9jXSk6CisgICAg
ICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgZnVsbHNjcmVlbldpbmRvd10pOgor
ICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIHdpbmRvd0RpZExvYWRdKToK
KyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciBzZXRWaWRlb0VsZW1lbnQ6
XSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgZW50ZXJGdWxsc2Ny
ZWVuOl0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIGV4aXRGdWxs
c2NyZWVuXSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgYXBwbGlj
YXRpb25EaWRSZXNpZ25BY3RpdmU6XSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXIgX3JlcXVlc3RFeGl0XSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXIgX3JlcXVlc3RFbnRlcl0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyIGNhbmNlbE9wZXJhdGlvbjpdKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlciBwbGF5ZXJWaWV3SXNGdWxsU2NyZWVuOl0pOgorICAgICAgICAoLVtXZWJW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIHBsYXllclZpZXdSZXF1ZXN0RW50ZXJGdWxsc2NyZWVu
Ol0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIHBsYXllclZpZXdS
ZXF1ZXN0RXhpdEZ1bGxzY3JlZW46XSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXIgY3VzdG9tV2luZG93c1RvRW50ZXJGdWxsU2NyZWVuRm9yV2luZG93Ol0pOgorICAg
ICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIHdpbmRvdzpzdGFydEN1c3RvbUFu
aW1hdGlvblRvRW50ZXJGdWxsU2NyZWVuV2l0aER1cmF0aW9uOl0pOgorICAgICAgICAoLVtXZWJW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIGN1c3RvbVdpbmRvd3NUb0V4aXRGdWxsU2NyZWVuRm9y
V2luZG93Ol0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIHdpbmRv
dzpzdGFydEN1c3RvbUFuaW1hdGlvblRvRXhpdEZ1bGxTY3JlZW5XaXRoRHVyYXRpb246XSk6Cisg
ICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgd2luZG93RGlkRW50ZXJGdWxs
U2NyZWVuOl0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIHdpbmRv
d1dpbGxFeGl0RnVsbFNjcmVlbjpdKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlciB3aW5kb3dEaWRFeGl0RnVsbFNjcmVlbjpdKToKKyAgICAgICAgKC1bV2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlciBjbGVhckZhZGVBbmltYXRpb25dKTogRGVsZXRlZC4KKyAgICAg
ICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciB3aW5kb3dEaWRFeGl0RnVsbHNjcmVl
bl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIHdp
bmRvd0RpZEVudGVyRnVsbHNjcmVlbl0pOiBEZWxldGVkLgorICAgICAgICAoZnJhbWVFeHBhbmRl
ZFRvUmF0aW9PZkZyYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKGNyZWF0ZUJhY2tncm91bmRGdWxs
c2NyZWVuV2luZG93KTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlciBzZXR1cEZhZGVBbmltYXRpb25JZk5lZWRlZEFuZEZhZGVJbjpdKTogRGVsZXRlZC4K
KyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciBhcHBsaWNhdGlvbkRpZENo
YW5nZVNjcmVlblBhcmFtZXRlcnM6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlZpZGVvRnVs
bHNjcmVlbkNvbnRyb2xsZXIgdXBkYXRlTWVudUFuZERvY2tGb3JGdWxsc2NyZWVuXSk6IERlbGV0
ZWQuCisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgcmVxdWVzdEV4aXRG
dWxsc2NyZWVuV2l0aEFuaW1hdGlvbjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlciByZXF1ZXN0RXhpdEZ1bGxzY3JlZW5dKTogRGVsZXRlZC4KKyAg
ICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciBmYWRlSFVESW5dKTogRGVsZXRl
ZC4KKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciBvYnNlcnZlVmFsdWVG
b3JLZXlQYXRoOm9mT2JqZWN0OmNoYW5nZTpjb250ZXh0Ol0pOiBEZWxldGVkLgorICAgICAgICAo
LVtXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyIHJhdGVDaGFuZ2VkOl0pOiBEZWxldGVkLgor
ICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5XaW5kb3cgaW5pdFdpdGhDb250ZW50UmVjdDpz
dHlsZU1hc2s6YmFja2luZzpkZWZlcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViVmlkZW9G
dWxsc2NyZWVuV2luZG93IGRlYWxsb2NdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViVmlkZW9G
dWxsc2NyZWVuV2luZG93IHJlc2lnbkZpcnN0UmVzcG9uZGVyXSk6IERlbGV0ZWQuCisgICAgICAg
ICgtW1dlYlZpZGVvRnVsbHNjcmVlbldpbmRvdyBjYW5CZWNvbWVLZXlXaW5kb3ddKTogRGVsZXRl
ZC4KKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuV2luZG93IG1vdXNlRG93bjpdKTogRGVs
ZXRlZC4KKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuV2luZG93IGNhbmNlbE9wZXJhdGlv
bjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuV2luZG93IGFuaW1h
dGVkUmVzaXplRGlkRW5kXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVl
bldpbmRvdyBhbmltYXRlRnJvbVJlY3Q6dG9SZWN0OndpdGhTdWJBbmltYXRpb246Y29udHJvbGxl
ckFjdGlvbjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuV2luZG93
IGFuaW1hdGlvbkRpZEVuZDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2Ny
ZWVuV2luZG93IG1vdXNlTW92ZWQ6XSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViVmlldy9XZWJW
aWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLmg6IFJlbW92ZWQuCisgICAgICAgICog
V2ViVmlldy9XZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1tOiBSZW1vdmVk
LgorCiAyMDIwLTAyLTIxICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgog
CiAgICAgICAgIFttYWNPU10gTGFyZ2UgZm9ybSBjb250cm9scyBhcmUgcmVuZGVyZWQgYXQgdGhl
IHdyb25nIE5TQ29udHJvbFNpemUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhNjg3OGRhMGRkMzAwYjlhNzFkNjAwOTExN2MzMGMy
NDZjYWRmNTE3Li5kZjJmNGQyNGNkYmQ1MDYyMDhiNTE4ZmE2MmI0NzBiNDczZjI4ODRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC05NSw3ICs5NSw2IEBACiAJCTBDNzc4NTlDMUY0NTEzMEYwMEY0RUJCNiAvKiBOU1ZpZXdTUEku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBDNzc4NTgz
MUY0NTEzMEYwMEY0RUJCNiAvKiBOU1ZpZXdTUEkuaCAqLzsgfTsKIAkJMEM3Nzg1OUQxRjQ1MTMw
RjAwRjRFQkI2IC8qIE5TV2luZG93U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwQzc3ODU4NDFGNDUxMzBGMDBGNEVCQjYgLyogTlNXaW5kb3dTUEku
aCAqLzsgfTsKIAkJMEM3Nzg1OUUxRjQ1MTMwRjAwRjRFQkI2IC8qIFBJUFNQSS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEM3Nzg1ODUxRjQ1MTMwRjAw
RjRFQkI2IC8qIFBJUFNQSS5oICovOyB9OwotCQkwQzc3ODU5RjFGNDUxMzBGMDBGNEVCQjYgLyog
UVRLaXRTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBDNzc4NTg2MUY0NTEzMEYwMEY0RUJCNiAvKiBRVEtpdFNQSS5oICovOyB9OwogCQkwQzc3ODVB
MDFGNDUxMzBGMDBGNEVCQjYgLyogUXVpY2tMb29rTWFjU1BJLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQzc3ODU4NzFGNDUxMzBGMDBGNEVCQjYgLyog
UXVpY2tMb29rTWFjU1BJLmggKi87IH07CiAJCTBDNzc4NUExMUY0NTEzMEYwMEY0RUJCNiAvKiBU
ZWxlcGhvbnlVdGlsaXRpZXNTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBDNzc4NTg4MUY0NTEzMEYwMEY0RUJCNiAvKiBUZWxlcGhvbnlVdGlsaXRp
ZXNTUEkuaCAqLzsgfTsKIAkJMENGOTlDQTQxRjczNjM3NTAwN0VFNzkzIC8qIE1lZGlhVGltZUFW
Rm91bmRhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwQzAwQ0ZEMTFGNjhDRTQ2MDBBQUMyNkQgLyogTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmNw
cCAqLzsgfTsKQEAgLTI2NCw3ICsyNjMsNiBAQAogCQkwQzc3ODU4MzFGNDUxMzBGMDBGNEVCQjYg
LyogTlNWaWV3U1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5TVmlld1NQ
SS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQzc3ODU4NDFGNDUxMzBGMDBGNEVC
QjYgLyogTlNXaW5kb3dTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTlNX
aW5kb3dTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEM3Nzg1ODUxRjQ1MTMw
RjAwRjRFQkI2IC8qIFBJUFNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQ
SVBTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEM3Nzg1ODYxRjQ1MTMwRjAw
RjRFQkI2IC8qIFFUS2l0U1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFFU
S2l0U1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBDNzc4NTg3MUY0NTEzMEYw
MEY0RUJCNiAvKiBRdWlja0xvb2tNYWNTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUXVpY2tMb29rTWFjU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBD
Nzc4NTg4MUY0NTEzMEYwMEY0RUJCNiAvKiBUZWxlcGhvbnlVdGlsaXRpZXNTUEkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVsZXBob255VXRpbGl0aWVzU1BJLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBDRjk5Q0E2MUY3Mzg0MzYwMDdFRTc5MyAvKiBDb3Jl
TWVkaWFTb2Z0TGluay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBD
b3JlTWVkaWFTb2Z0TGluay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MTMs
NyArNTExLDYgQEAKIAkJCQkwQzc3ODU4MzFGNDUxMzBGMDBGNEVCQjYgLyogTlNWaWV3U1BJLmgg
Ki8sCiAJCQkJMEM3Nzg1ODQxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TV2luZG93U1BJLmggKi8sCiAJ
CQkJMEM3Nzg1ODUxRjQ1MTMwRjAwRjRFQkI2IC8qIFBJUFNQSS5oICovLAotCQkJCTBDNzc4NTg2
MUY0NTEzMEYwMEY0RUJCNiAvKiBRVEtpdFNQSS5oICovLAogCQkJCTBDNzc4NTg3MUY0NTEzMEYw
MEY0RUJCNiAvKiBRdWlja0xvb2tNYWNTUEkuaCAqLywKIAkJCQlBMTE3NUI0ODFGNkFGRjhFMDBD
NEI5RjAgLyogU3BlZWNoU3ludGhlc2lzU1BJLmggKi8sCiAJCQkJMEM3Nzg1ODgxRjQ1MTMwRjAw
RjRFQkI2IC8qIFRlbGVwaG9ueVV0aWxpdGllc1NQSS5oICovLApAQCAtODE3LDcgKzgxNCw2IEBA
CiAJCQkJMEM3Nzg1OUUxRjQ1MTMwRjAwRjRFQkI2IC8qIFBJUFNQSS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTExNzVCNEUxRjZCMzM3MzAwQzRCOUYwIC8qIFBvcHVwTWVudS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEMyREExNTYxRjNCRUI0OTAwREJDMzE3IC8qIHB0aHJlYWRTUEkuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTBDNzc4NTlGMUY0NTEzMEYwMEY0RUJCNiAvKiBRVEtpdFNQSS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEMyREExNTcxRjNCRUI0OTAwREJDMzE3IC8qIFF1YXJ0ekNvcmVTUEku
aCBpbiBIZWFkZXJzICovLAogCQkJCTBDNzc4NUEwMUY0NTEzMEYwMEY0RUJCNiAvKiBRdWlja0xv
b2tNYWNTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ0NTBGQ0EwMjFGNUY2MDIwMDRERkE1NiAv
KiBRdWlja0xvb2tTb2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9BVktpdFNQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9zcGkvY29jb2EvQVZLaXRTUEkuaAppbmRleCAwOTQ2OThhMWJlZjMzMmFjMDBhMzlhMjIx
M2M3Mzg3MTA0OGY1ZDdjLi4xNWJhMTM4NTI5NzFjMTVlZTQzNDhkOTQzNzlmNDRmMTE3YTYwODJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9BVktpdFNQSS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0FWS2l0U1BJLmgKQEAgLTI2
LDYgKzI2LDM0IEBACiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0
TGlua2luZy5oPgogCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKyNpbXBvcnQgPEFWS2l0
L0FWUGxheWVyQ29udHJvbGxlci5oPgorI2Vsc2UKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQor
I2ltcG9ydCA8VUlLaXQvVUlSZXNwb25kZXIuaD4KK0BpbnRlcmZhY2UgQVZQbGF5ZXJDb250cm9s
bGVyIDogVUlSZXNwb25kZXIKKyNlbHNlCisjaW1wb3J0IDxBcHBLaXQvTlNSZXNwb25kZXIuaD4K
K0BpbnRlcmZhY2UgQVZQbGF5ZXJDb250cm9sbGVyIDogTlNSZXNwb25kZXIgPE5TVXNlckludGVy
ZmFjZVZhbGlkYXRpb25zPgorI2VuZGlmCitAZW5kCisKK0BpbnRlcmZhY2UgQVZQbGF5ZXJDb250
cm9sbGVyICgpCit0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBBVlBsYXllckNvbnRyb2xsZXJT
dGF0dXMpIHsKKyAgICBBVlBsYXllckNvbnRyb2xsZXJTdGF0dXNVbmtub3duID0gMCwKKyAgICBB
VlBsYXllckNvbnRyb2xsZXJTdGF0dXNSZWFkeVRvUGxheSA9IDIsCit9OworCit0eXBlZGVmIE5T
X0VOVU0oTlNJbnRlZ2VyLCBBVlBsYXllckNvbnRyb2xsZXJFeHRlcm5hbFBsYXliYWNrVHlwZSkg
eworICAgIEFWUGxheWVyQ29udHJvbGxlckV4dGVybmFsUGxheWJhY2tUeXBlTm9uZSA9IDAsCisg
ICAgQVZQbGF5ZXJDb250cm9sbGVyRXh0ZXJuYWxQbGF5YmFja1R5cGVBaXJQbGF5ID0gMSwKKyAg
ICBBVlBsYXllckNvbnRyb2xsZXJFeHRlcm5hbFBsYXliYWNrVHlwZVRWT3V0ID0gMiwKK307CisK
K0Bwcm9wZXJ0eSAoTlNfTk9OQVRPTUlDX0lPU09OTFksIHJlYWRvbmx5KSBBVlBsYXllckNvbnRy
b2xsZXJTdGF0dXMgc3RhdHVzOworQGVuZAorI2VuZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5BTF9T
REspCisKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCA8QVZLaXQvQVZLaXQuaD4K
ICNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgpAQCAtMzcsNyArNjUsNiBAQAogI2lt
cG9ydCA8QVZLaXQvQVZCYWNrZ3JvdW5kVmlldy5oPgogI2VuZGlmCiAKLSNpbXBvcnQgPEFWS2l0
L0FWUGxheWVyQ29udHJvbGxlci5oPgogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJvYmpjLXByb3Bl
cnR5LW5vLWF0dHJpYnV0ZSIpCiAjaW1wb3J0IDxBVktpdC9BVlBsYXllckxheWVyVmlldy5oPgog
SUdOT1JFX1dBUk5JTkdTX0VORApAQCAtMTE1LDI0ICsxNDIsNiBAQCB0eXBlZGVmIE5TX0VOVU0o
TlNJbnRlZ2VyLCBBVkJhY2tncm91bmRWaWV3VGludEVmZmVjdFN0eWxlKSB7CiAtICh2b2lkKWFk
ZFN1YnZpZXc6KFVJVmlldyAqKXN1YnZpZXcgYXBwbHlpbmdNYXRlcmlhbFN0eWxlOihBVkJhY2tn
cm91bmRWaWV3TWF0ZXJpYWxTdHlsZSltYXRlcmlhbFN0eWxlIHRpbnRFZmZlY3RTdHlsZTooQVZC
YWNrZ3JvdW5kVmlld1RpbnRFZmZlY3RTdHlsZSl0aW50RWZmZWN0U3R5bGU7CiBAZW5kCiAKLUBp
bnRlcmZhY2UgQVZQbGF5ZXJDb250cm9sbGVyIDogVUlSZXNwb25kZXIKLUBlbmQKLQotQGludGVy
ZmFjZSBBVlBsYXllckNvbnRyb2xsZXIgKCkKLXR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIEFW
UGxheWVyQ29udHJvbGxlclN0YXR1cykgewotICAgIEFWUGxheWVyQ29udHJvbGxlclN0YXR1c1Vu
a25vd24gPSAwLAotICAgIEFWUGxheWVyQ29udHJvbGxlclN0YXR1c1JlYWR5VG9QbGF5ID0gMiwK
LX07Ci0KLXR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIEFWUGxheWVyQ29udHJvbGxlckV4dGVy
bmFsUGxheWJhY2tUeXBlKSB7Ci0gICAgQVZQbGF5ZXJDb250cm9sbGVyRXh0ZXJuYWxQbGF5YmFj
a1R5cGVOb25lID0gMCwKLSAgICBBVlBsYXllckNvbnRyb2xsZXJFeHRlcm5hbFBsYXliYWNrVHlw
ZUFpclBsYXkgPSAxLAotICAgIEFWUGxheWVyQ29udHJvbGxlckV4dGVybmFsUGxheWJhY2tUeXBl
VFZPdXQgPSAyLAotfTsKLQotQHByb3BlcnR5IChOU19OT05BVE9NSUNfSU9TT05MWSwgcmVhZG9u
bHkpIEFWUGxheWVyQ29udHJvbGxlclN0YXR1cyBzdGF0dXM7Ci1AZW5kCi0KIEBjbGFzcyBBVlBs
YXllckxheWVyOwogCiBAaW50ZXJmYWNlIEFWUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmll
dyA6IFVJVmlldwpAQCAtMTc4LDYgKzE4NywyNiBAQCBOU19BU1NVTUVfTk9OTlVMTF9FTkQKICNl
bmRpZiAvLyBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAKKyNpZiBQTEFURk9STShNQUMpCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykK
KyNpbXBvcnQgPEFWS2l0L0FWUGxheWVyVmlld19Qcml2YXRlLmg+CisjZWxzZQorI2ltcG9ydCA8
QVZLaXQvQVZQbGF5ZXJWaWV3Lmg+CisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKK0BpbnRl
cmZhY2UgQVZQbGF5ZXJWaWV3IChXZWJLaXRGdWxsc2NyZWVuU1BJKQorQHByb3BlcnR5IEFWUGxh
eWVyQ29udHJvbGxlciAqcGxheWVyQ29udHJvbGxlcjsKK0Bwcm9wZXJ0eSAocmVhZG9ubHkpIEJP
T0wgaXNGdWxsU2NyZWVuOworLSAodm9pZCllbnRlckZ1bGxTY3JlZW46KGlkKXNlbmRlcjsKKy0g
KHZvaWQpZXhpdEZ1bGxTY3JlZW46KGlkKXNlbmRlcjsKK0BlbmQKKworTlNfQVNTVU1FX05PTk5V
TExfRU5ECisKKyNlbmRpZiAvLyBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorI2VuZGlmIC8vIFBM
QVRGT1JNKE1BQykKKwogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQ
TEFURk9STShJT1NfRkFNSUxZKQogCiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9OU1dpbmRvd1NQSS5oIGIvU291
cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL05TV2luZG93U1BJLmgKaW5kZXggMDhhZjk1YTA0
NGFkNjk5MDQyMDYyMTdhNGM0YTc1MDAzMDlhNGExMy4uYzU2OTQyNGFjOWZiZDRmNGJhMWRhZTI5
NzY2ZjFkMGI2NDBhMGU3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkv
bWFjL05TV2luZG93U1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL05T
V2luZG93U1BJLmgKQEAgLTQwLDcgKzQwLDggQEAKIC0gKGlkKV9vbGRGaXJzdFJlc3BvbmRlckJl
Zm9yZUJlY29taW5nOwogLSAoaWQpX25ld0ZpcnN0UmVzcG9uZGVyQWZ0ZXJSZXNpZ25pbmc7CiAt
ICh2b2lkKV9zZXRDdXJzb3JGb3JNb3VzZUxvY2F0aW9uOihOU1BvaW50KXBvaW50OwotCistICh2
b2lkKWV4aXRGdWxsU2NyZWVuTW9kZTooaWQpc2VuZGVyOworLSAodm9pZCllbnRlckZ1bGxTY3Jl
ZW5Nb2RlOihpZClzZW5kZXI7CiBAZW5kCiAKIGVudW0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9zcGkvbWFjL1FUS2l0U1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L3NwaS9tYWMvUVRLaXRTUEkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDRiYjI0
OTYyNzA4NTcyOWYxNWJhMTRiNDI4YTRlNzBmMmY2YmJjNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMv
UVRLaXRTUEkuaAorKysgL2Rldi9udWxsCkBAIC0xLDE1MCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0KLSNpbXBv
cnQgPFFUS2l0L1FUSFVEQmFja2dyb3VuZFZpZXdfUHJpdmF0ZS5oPgotI2ltcG9ydCA8UVRLaXQv
UVRLaXRfUHJpdmF0ZS5oPgotI2ltcG9ydCA8UVRLaXQvUVRVdGlsaXRpZXNfUHJpdmF0ZS5oPgot
Ci0jZWxzZQotCi1lbnVtIHsKLSAgICBrUVRUaW1lSXNJbmRlZmluaXRlID0gMSA8PCAwCi19Owot
Ci10eXBlZGVmIHN0cnVjdCB7Ci0gICAgbG9uZyBsb25nIHRpbWVWYWx1ZTsKLSAgICBsb25nIHRp
bWVTY2FsZTsKLSAgICBsb25nIGZsYWdzOwotfSBRVFRpbWU7Ci0KLXR5cGVkZWYgc3RydWN0IHsK
LSAgICBRVFRpbWUgdGltZTsKLSAgICBRVFRpbWUgZHVyYXRpb247Ci19IFFUVGltZVJhbmdlOwot
Ci10eXBlZGVmIGVudW0gewotICAgIFFUSW5jbHVkZUNvbW1vblR5cGVzID0gMCwKLSAgICBRVElu
Y2x1ZGVPbmx5RmlnTWVkaWFGaWxlVHlwZXMgPSAxIDw8IDgsCi19IFFUTW92aWVGaWxlVHlwZU9w
dGlvbnM7Ci0KLWVudW0gewotICAgIFFUTW92aWVUeXBlVW5rbm93biA9IDAsCi0gICAgUVRNb3Zp
ZVR5cGVMb2NhbCwKLSAgICBRVE1vdmllVHlwZUZhc3RTdGFydCwKLSAgICBRVE1vdmllVHlwZUxp
dmVTdHJlYW0sCi0gICAgUVRNb3ZpZVR5cGVTdG9yZWRTdHJlYW0KLX07Ci0KLUBjbGFzcyBRVFRy
YWNrOwotCi1AaW50ZXJmYWNlIFFUTWVkaWEgOiBOU09iamVjdAotCi0tIChpZClhdHRyaWJ1dGVG
b3JLZXk6KE5TU3RyaW5nICopYXR0cmlidXRlS2V5OwotCi1AZW5kCi0KLUBpbnRlcmZhY2UgUVRN
b3ZpZSA6IE5TT2JqZWN0IDxOU0NvZGluZywgTlNDb3B5aW5nPgotCi0rIChOU0FycmF5ICopbW92
aWVGaWxlVHlwZXM6KFFUTW92aWVGaWxlVHlwZU9wdGlvbnMpdHlwZXM7Ci0KLSsgKHZvaWQpZGlz
YWJsZUNvbXBvbmVudDooQ29tcG9uZW50RGVzY3JpcHRpb24pY29tcG9uZW50OwotCi0tIChpZClp
bml0V2l0aEF0dHJpYnV0ZXM6KE5TRGljdGlvbmFyeSAqKWF0dHJpYnV0ZXMgZXJyb3I6KE5TRXJy
b3IgKiopZXJyb3JQdHI7Ci0KLS0gKHZvaWQpcGxheTsKLS0gKHZvaWQpc3RvcDsKLQotLSAoUVRU
aW1lKWR1cmF0aW9uOwotCi0tIChRVFRpbWUpY3VycmVudFRpbWU7Ci0tICh2b2lkKXNldEN1cnJl
bnRUaW1lOihRVFRpbWUpdGltZTsKLQotLSAoZmxvYXQpcmF0ZTsKLS0gKHZvaWQpc2V0UmF0ZToo
ZmxvYXQpcmF0ZTsKLQotLSAoZmxvYXQpdm9sdW1lOwotLSAodm9pZClzZXRWb2x1bWU6KGZsb2F0
KXZvbHVtZTsKLQotLSAoTlNEaWN0aW9uYXJ5ICopbW92aWVBdHRyaWJ1dGVzOwotCi0tIChpZClh
dHRyaWJ1dGVGb3JLZXk6KE5TU3RyaW5nICopYXR0cmlidXRlS2V5OwotLSAodm9pZClzZXRBdHRy
aWJ1dGU6KGlkKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilhdHRyaWJ1dGVLZXk7Ci0KLS0gKE5T
QXJyYXkgKil0cmFja3M7Ci0KLS0gKE5TQXJyYXkgKilhbHRlcm5hdGVHcm91cFR5cGVzOwotLSAo
TlNBcnJheSAqKWFsdGVybmF0ZXNGb3JNZWRpYVR5cGU6KE5TU3RyaW5nICopdHlwZTsKLS0gKHZv
aWQpZGVzZWxlY3RBbHRlcm5hdGVHcm91cFRyYWNrOihRVFRyYWNrICopYWx0ZXJuYXRlVHJhY2s7
Ci0tICh2b2lkKXNlbGVjdEFsdGVybmF0ZUdyb3VwVHJhY2s6KFFUVHJhY2sgKilhbHRlcm5hdGVU
cmFjazsKLQotLSAoTlNVUkwgKilVUkw7Ci0tIChVSW50MzIpbW92aWVUeXBlOwotCi1AZW5kCi0K
LUBpbnRlcmZhY2UgUVRNb3ZpZUxheWVyIDogQ0FMYXllcgotCi0tICh2b2lkKXNldE1vdmllOihR
VE1vdmllICopbW92aWU7Ci0tIChRVE1vdmllICopbW92aWU7Ci0KLUBlbmQKLQotQGludGVyZmFj
ZSBOU1ZhbHVlIChOU1ZhbHVlUVRUaW1lUmFuZ2VFeHRlbnNpb25zKQotKyAoTlNWYWx1ZSAqKXZh
bHVlV2l0aFFUVGltZVJhbmdlOihRVFRpbWVSYW5nZSlyYW5nZTsKLS0gKFFUVGltZVJhbmdlKVFU
VGltZVJhbmdlVmFsdWU7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgUVRUcmFjayA6IE5TT2JqZWN0Ci0K
LS0gKFFUTWVkaWEgKiltZWRpYTsKLQotLSAoQk9PTClpc0VuYWJsZWQ7Ci0tICh2b2lkKXNldEVu
YWJsZWQ6KEJPT0wpZW5hYmxlZDsKLQotLSAoaWQpYXR0cmlidXRlRm9yS2V5OihOU1N0cmluZyAq
KWF0dHJpYnV0ZUtleTsKLQotQGVuZAotCi1AaW50ZXJmYWNlIFFUSFVEQmFja2dyb3VuZFZpZXcg
OiBOU1ZpZXcKLQotLSAodm9pZClzZXRDb250ZW50Qm9yZGVyUG9zaXRpb246KENHRmxvYXQpY29u
dGVudEJvcmRlclBvc2l0aW9uOwotCi1AZW5kCi0KLUBpbnRlcmZhY2UgUVRVdGlsaXRpZXMgOiBO
U09iamVjdAotCi0rIChpZClxdFV0aWxpdGllczsKLQotLSAoTlNBcnJheSAqKXNpdGVzSW5Eb3du
bG9hZENhY2hlOwotLSAodm9pZCljbGVhckRvd25sb2FkQ2FjaGU7Ci0tICh2b2lkKWNsZWFyRG93
bmxvYWRDYWNoZUZvclNpdGU6KE5TU3RyaW5nICopc2l0ZTsKLQotQGVuZAotCi0jZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA3YjE4YTUwYTQ0ZjZhOGU2M2QxNGMzMjg4NDMzNTY3OTAxZDExMjBiLi45MGIwMTFlMzU1YmRj
YjdhMzQ3Y2UwMjk3ZGIxYzQyZDg4Zjk0NjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00MTMxLDYgKzQxMzEsNyBAQAogCQlD
REFCNkQyOTE3QzdERTZDMDBDNjBCMzQgLyogTWVkaWFDb250cm9sc0hvc3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUI2RDI3MTdDN0RFNkMwMEM2
MEIzNCAvKiBNZWRpYUNvbnRyb2xzSG9zdC5oICovOyB9OwogCQlDREFCNkQyRTE3QzgxNEVFMDBD
NjBCMzQgLyogSlNNZWRpYUNvbnRyb2xzSG9zdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQjZEMkMxN0M4MTRFRTAwQzYwQjM0IC8qIEpTTWVkaWFD
b250cm9sc0hvc3QuaCAqLzsgfTsKIAkJQ0RBQjZEMzExN0M5MjU5NTAwQzYwQjM0IC8qIFVzZXJB
Z2VudFNjcmlwdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENEQUI2RDJGMTdDOTI1OTUwMEM2MEIzNCAvKiBVc2VyQWdlbnRTY3JpcHRzLmggKi87IH07
CisJCUNEQjYzNTQ5MjNGNjAyM0EwMEMwRjlERSAvKiBXZWJBVlBsYXllckNvbnRyb2xsZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTI5QTJDMUNC
RjczRkMwMDkwMUNDRiAvKiBXZWJBVlBsYXllckNvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDREI3MDQ1QTFGNzQ2NUExMDAzOTIz
REYgLyogQ0RNRmFpclBsYXlTdHJlYW1pbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENEQjcwNDU4MUY3NDY1QTEwMDM5MjNERiAvKiBDRE1GYWlyUGxh
eVN0cmVhbWluZy5oICovOyB9OwogCQlDREI3MDQ1QjFGNzQ2NUExMDAzOTIzREYgLyogQ0RNRmFp
clBsYXlTdHJlYW1pbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0RCNzA0NTkxRjc0NjVBMTAwMzkyM0RGIC8qIENETUZhaXJQbGF5U3RyZWFtaW5n
LmNwcCAqLzsgfTsKIAkJQ0RCRUFFQUMxOUQ5MkI2QzAwQkVCQTg4IC8qIE1lZGlhU2VsZWN0aW9u
R3JvdXBBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0RCRUFFQUExOUQ5MkI2QzAwQkVCQTg4IC8qIE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZP
YmpDLm1tICovOyB9OwpAQCAtMzI5MTEsNiArMzI5MTIsNyBAQAogCQkJCTA3RDYzNzQwMUJCMEIx
MTMwMDI1NkNFOSAvKiBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTc0RjU1RTEyMDRGM0IyMzAwMjk0OEM2IC8qIFdlYkF1dGhlbnRpY2F0aW9uQ29u
c3RhbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzE1MkI4MDIxRERBNTgxMDAwQzM3Q0EgLyog
V2ViQXV0aGVudGljYXRpb25VdGlscy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RCNjM1NDkyM0Y2
MDIzQTAwQzBGOURFIC8qIFdlYkFWUGxheWVyQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUYzNkVBOUMxRTIxQkExNzAwNjIxRTI1IC8qIFdlYkJhY2tncm91bmRUYXNrQ29udHJvbGxl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVCODFDQjUxRkFBNDQ2MjAwMzdEMUU2IC8qIFdlYkNv
bnNvbGVBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUJCQTJDQUIxRjY3OUUwQzAwRkQxQzFF
IC8qIFdlYkNvbnRlbnRSZWFkZXIuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNGU5ZjhlYTIwNWM4MGNmYTI5ODVmZWYxODViZmVm
ZTBjMTIyODJiOC4uOWU3YTk2NDg0NDQ5OTBlNzFiNDNkNmY3NDQ3NzEzZDMyZmQwYjIwMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC01NzkzLDcgKzU3OTMs
NyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhVm9sdW1lRGlkQ2hhbmdlKCkKIAogdm9p
ZCBIVE1MTWVkaWFFbGVtZW50Ojp2aXNpYmlsaXR5U3RhdGVDaGFuZ2VkKCkKIHsKLSAgICBib29s
IGVsZW1lbnRJc0hpZGRlbiA9IGRvY3VtZW50KCkuaGlkZGVuKCkgJiYgbV92aWRlb0Z1bGxzY3Jl
ZW5Nb2RlICE9IFZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJlOworICAgIGJvb2wg
ZWxlbWVudElzSGlkZGVuID0gZG9jdW1lbnQoKS5oaWRkZW4oKSAmJiBtX3ZpZGVvRnVsbHNjcmVl
bk1vZGUgPT0gVmlkZW9GdWxsc2NyZWVuTW9kZU5vbmU7CiAgICAgaWYgKGVsZW1lbnRJc0hpZGRl
biA9PSBtX2VsZW1lbnRJc0hpZGRlbikKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IGYwNWUyMjNiOTMyZjcxN2MxYWNjMzAwYjVmODEx
ZDY5MTRiMjk2YTYuLmU3MTU2M2NmZjYxYTUxNDU1NjcyNGRmZDNjYTcwYjAxMDlmZmY1NjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC0xODEsNyArMTgxLDcgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0UHJlcGFyZWRUb1JldHVyblZpZGVvTGF5ZXJUb0lubGluZShi
b29sKTsKICAgICB2b2lkIHdhaXRGb3JQcmVwYXJlZEZvcklubGluZVRoZW4oV1RGOjpGdW5jdGlv
bjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIgPSBbXSB7IH0pOwogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05f
TU9ERSkpCi0gICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiwg
V1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIgPSBbXSB7IH0pOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXll
ciosIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyID0gW10geyB9KTsK
ICNpZmRlZiBfX09CSkNfXwogICAgIFBsYXRmb3JtTGF5ZXIqIHZpZGVvRnVsbHNjcmVlbkxheWVy
KCkgY29uc3QgeyByZXR1cm4gbV92aWRlb0Z1bGxzY3JlZW5MYXllci5nZXQoKTsgfQogI2VuZGlm
CkBAIC00NDYsNyArNDQ2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBmdWxsc2NyZWVu
TW9kZUNoYW5nZWQoVmlkZW9GdWxsc2NyZWVuTW9kZSk7CiAKICAgICB2b2lkIGVudGVyRnVsbHNj
cmVlbihWaWRlb0Z1bGxzY3JlZW5Nb2RlKTsKLSAgICB2b2lkIGVudGVyRnVsbHNjcmVlbigpIG92
ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZW50ZXJGdWxsc2NyZWVuKCkgb3ZlcnJp
ZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBleGl0RnVsbHNjcmVlbigpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuU3RhbmRieShib29sKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZUFWS2l0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlQVZLaXQuaAppbmRleCA3ZGVlMTUyN2VmMjM5NWY5ZTZiY2UwY2NjYmViYmRlNzRkNmRl
NzRkLi4wZjlkMTIzYjcxYTBiODlmMDM1ZWMyYzAzOTU3OThmNGMwN2I0OGI4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZL
aXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlQVZLaXQuaApAQCAtMjYsNyArMjYsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCisjaWYgSEFWRShBVktJVCkKIAogI2luY2x1ZGUgIkV2ZW50TGlz
dGVuZXIuaCIKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50RW51bXMuaCIKQEAgLTQxLDEwICs0
MSw2IEBACiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiBPQkpDX0NMQVNTIFdlYkFWUGxh
eWVyQ29udHJvbGxlcjsKLU9CSkNfQ0xBU1MgQVZQbGF5ZXJWaWV3Q29udHJvbGxlcjsKLU9CSkNf
Q0xBU1MgVUlWaWV3Q29udHJvbGxlcjsKLU9CSkNfQ0xBU1MgVUlXaW5kb3c7Ci1PQkpDX0NMQVNT
IFVJVmlldzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSW50UmVjdDsKQEAgLTkyLDUg
Kzg4LDQgQEAgcHJvdGVjdGVkOgogCiB9CiAKLSNlbmRpZgotCisjZW5kaWYgLy8gSEFWRShBVktJ
VCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2VBVktpdC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2VBVktpdC5tbQppbmRleCBmY2FiMjZmYmI3MmRlYjk4OTNkMjVlMmZj
ZGJiOWExZDE1OTczY2JlLi45ZjI3NmVhOWJjYjhhNDdmODAwMTYzNTE5Y2UwNzFiOWY0OTAwMmRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlQVZLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXli
YWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Lm1tCkBAIC0yNyw3ICsyNyw2IEBACiAjaW1wb3J0ICJj
b25maWcuaCIKICNpbXBvcnQgIlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0LmgiCiAKLSNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2lmIEhBVkUoQVZLSVQpCiAKICNpbXBvcnQgIkxvZ2dp
bmcuaCIKQEAgLTE4NSw5ICsxODQsOSBAQCB2b2lkIFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFW
S2l0OjpsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb25zdCBWZQogdm9pZCBQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6ZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQoYm9v
bCBlbmFibGVkLCBQbGF5YmFja1Nlc3Npb25Nb2RlbDo6RXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5
cGUgdGFyZ2V0VHlwZSwgY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWREZXZpY2VOYW1lKQogewogICAg
IEFWUGxheWVyQ29udHJvbGxlckV4dGVybmFsUGxheWJhY2tUeXBlIGV4dGVybmFsUGxheWJhY2tU
eXBlID0gQVZQbGF5ZXJDb250cm9sbGVyRXh0ZXJuYWxQbGF5YmFja1R5cGVOb25lOwotICAgIGlm
ICh0YXJnZXRUeXBlID09IFBsYXliYWNrU2Vzc2lvbk1vZGVsOjpUYXJnZXRUeXBlQWlyUGxheSkK
KyAgICBpZiAoZW5hYmxlZCAmJiB0YXJnZXRUeXBlID09IFBsYXliYWNrU2Vzc2lvbk1vZGVsOjpU
YXJnZXRUeXBlQWlyUGxheSkKICAgICAgICAgZXh0ZXJuYWxQbGF5YmFja1R5cGUgPSBBVlBsYXll
ckNvbnRyb2xsZXJFeHRlcm5hbFBsYXliYWNrVHlwZUFpclBsYXk7Ci0gICAgZWxzZSBpZiAodGFy
Z2V0VHlwZSA9PSBQbGF5YmFja1Nlc3Npb25Nb2RlbDo6VGFyZ2V0VHlwZVRWT3V0KQorICAgIGVs
c2UgaWYgKGVuYWJsZWQgJiYgdGFyZ2V0VHlwZSA9PSBQbGF5YmFja1Nlc3Npb25Nb2RlbDo6VGFy
Z2V0VHlwZVRWT3V0KQogICAgICAgICBleHRlcm5hbFBsYXliYWNrVHlwZSA9IEFWUGxheWVyQ29u
dHJvbGxlckV4dGVybmFsUGxheWJhY2tUeXBlVFZPdXQ7CiAKICAgICBXZWJBVlBsYXllckNvbnRy
b2xsZXIqIHBsYXllckNvbnRyb2xsZXIgPSBtX3BsYXllckNvbnRyb2xsZXIuZ2V0KCk7CkBAIC0y
MzEsNCArMjMwLDMgQEAgdm9pZCBQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6bW9kZWxE
ZXN0cm95ZWQoKQogfQogCiAjZW5kaWYgLy8gSEFWRShBVktJVCkKLSNlbmRpZiAvLyBQTEFURk9S
TShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dl
YkFWUGxheWVyQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkFW
UGxheWVyQ29udHJvbGxlci5oCmluZGV4IGE2MzlhOTgxZmZjMGIwNjJkYTYzMGM4MWJlYTRiZGRi
ZjJmNjM2YTEuLjg5NDBkMDJjMzkwMzZhMzMwNDk2NjdkZWQzMThlYjk2Zjc1ZDEyMGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJBVlBsYXllckNvbnRyb2xsZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQVZQbGF5ZXJDb250cm9sbGVy
LmgKQEAgLTIzLDcgKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpICYmIEhBVkUoQVZLSVQpCisjaWYgSEFWRShBVktJVCkKIAogI2ltcG9ydCA8
cGFsL3NwaS9jb2NvYS9BVktpdFNQSS5oPgogCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIFBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OwogQHByb3BlcnR5IChyZXRhaW4pIE5TU3RyaW5nICps
b2NhbGl6ZWREaXNwbGF5TmFtZTsKIEBlbmQKIAotQGludGVyZmFjZSBXZWJBVlBsYXllckNvbnRy
b2xsZXIgOiBOU09iamVjdCB7CitXRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNlIFdlYkFWUGxheWVy
Q29udHJvbGxlciA6IE5TT2JqZWN0IHsKICAgICBXZWJBVk1lZGlhU2VsZWN0aW9uT3B0aW9uICpf
Y3VycmVudEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb247CiAgICAgV2ViQVZNZWRpYVNlbGVjdGlv
bk9wdGlvbiAqX2N1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb247CiAgICAgQk9PTCBf
cGljdHVyZUluUGljdHVyZUludGVycnVwdGVkOwpAQCAtNTIsNiArNTIsOSBAQCBjbGFzcyBQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDsKIEBwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgY2Fu
U2Vla1RvQmVnaW5uaW5nOwogQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBjYW5TZWVrVG9FbmQ7
CiBAcHJvcGVydHkgKHJlYWRvbmx5KSBCT09MIGlzU2NydWJiaW5nOworQHByb3BlcnR5IChyZWFk
b25seSkgQk9PTCBjYW5TZWVrRnJhbWVCYWNrd2FyZDsKK0Bwcm9wZXJ0eSAocmVhZG9ubHkpIEJP
T0wgY2FuU2Vla0ZyYW1lRm9yd2FyZDsKK0Bwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgaGFzQ29u
dGVudENoYXB0ZXJzOwogCiBAcHJvcGVydHkgQk9PTCBjYW5QbGF5OwogQHByb3BlcnR5IChnZXR0
ZXI9aXNQbGF5aW5nKSBCT09MIHBsYXlpbmc7CkBAIC0xMDAsNCArMTAzLDMgQEAgY2xhc3MgUGxh
eWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ7CiBAZW5kCiAKICNlbmRpZgotCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQVZQbGF5ZXJDb250cm9sbGVyLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkFWUGxheWVyQ29udHJvbGxlci5tbQppbmRl
eCBkNTliYTg3ODc3ZWM0YzhhOGM2NmMxODBiMWU3NWNhYjE5ZDQ0NGRhLi4yMjk3NzVjNmNiNTA1
M2I5YTU0ZTNjMDljNGJjY2Y1M2NhOTc4ZGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvV2ViQVZQbGF5ZXJDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9XZWJBVlBsYXllckNvbnRyb2xsZXIubW0KQEAgLTI3LDcgKzI3LDcgQEAK
ICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV2ViQVZQbGF5ZXJDb250cm9sbGVyLmgiCiAK
LSNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBIQVZFKEFWS0lUKQorI2lmIEhBVkUoQVZLSVQp
CiAKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZUFWS2l0LmgiCkBAIC0zOTcsNiArMzk3LDE2IEBAIC0gKHZvaWQpc2Vla0NoYXB0ZXJGb3J3YXJk
OihpZClzZW5kZXIKICAgICBbc2VsZiBzZWVrVG9FbmQ6c2VuZGVyXTsKIH0KIAorLSAoQk9PTClj
YW5TZWVrRnJhbWVCYWNrd2FyZAoreworICAgIHJldHVybiBZRVM7Cit9CisKKy0gKEJPT0wpY2Fu
U2Vla0ZyYW1lRm9yd2FyZAoreworICAgIHJldHVybiBZRVM7Cit9CisKIC0gKEJPT0wpaGFzTWVk
aWFTZWxlY3Rpb25PcHRpb25zCiB7CiAgICAgcmV0dXJuIFtzZWxmIGhhc0F1ZGlvTWVkaWFTZWxl
Y3Rpb25PcHRpb25zXSB8fCBbc2VsZiBoYXNMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zXTsK
QEAgLTY1MCw1ICs2NjAsNSBAQCAtICh2b2lkKWRlYWxsb2MKIAogQGVuZAogCi0jZW5kaWYgLy8g
UExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNlbmRpZiAvLyBIQVZFKEFWS0lUKQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5oCmlu
ZGV4IDIxMWNjZWExZTRkNDM1NmE1OTA3MDE2N2FlZGRmOTBjMmM1MDA4NTAuLjYyOTdiMGRiZjc4
ZDZiYjIxYTQ0YjUyMjNhY2I1Njc4MzRkOGQ1ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9XZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5oCkBAIC0yMywxNCArMjMs
MTEgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVm
IFdlYkNvcmVGdWxsU2NyZWVuV2luZG93X2gKLSNkZWZpbmUgV2ViQ29yZUZ1bGxTY3JlZW5XaW5k
b3dfaAorI3ByYWdtYSBvbmNlCiAKLSNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpICYmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogCiBXRUJDT1JFX0VY
UE9SVCBAaW50ZXJmYWNlIFdlYkNvcmVGdWxsU2NyZWVuV2luZG93IDogTlNXaW5kb3cKIEBlbmQK
IAotI2VuZGlmIC8vIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLQotI2VuZGlmIC8vIFdlYkNvcmVG
dWxsU2NyZWVuV2luZG93X2gKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVGdWxsU2NyZWVuV2luZG93
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVGdWxsU2NyZWVuV2luZG93
Lm1tCmluZGV4IGFhNjhlMDEzZmI0YzgyMDIxMmI3MGI0ZDBhMGRiMDgyNjkyMzk4ODIuLjM1MzI1
NTlkOTIyNzAzZWY3ZTMyMTA5M2I0NzVhOTk0NGIwMDljMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cubW0KQEAgLTI1
LDcgKzI1LDcgQEAKIAogI2ltcG9ydCAiY29uZmlnLmgiCiAKLSNpZiBFTkFCTEUoRlVMTFNDUkVF
Tl9BUEkpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
KQogCiAjaW1wb3J0ICJXZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5oIgogCkBAIC0xMDEsNCArMTAx
LDQgQEAgLSAodm9pZClzZXRTdHlsZU1hc2s6KE5TVUludGVnZXIpc3R5bGVNYXNrCiB9CiBAZW5k
CiAKLSNlbmRpZiAvLyBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisjZW5kaWYgLy8gIVBMQVRGT1JN
KElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tG
dWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tCmluZGV4IDZkZGYwZDZjYWY4ODlmOWNh
MGUxOWI1MTY2NGNjMDk0YTk3MDdlYjIuLjJlNzkxMGUwNTI1NGQwNDU3MDJiM2VjYzc3ZTM2NDA3
YzQzZjU2Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS0Z1bGxT
Y3JlZW5XaW5kb3dDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW1w
b3J0IDxXZWJDb3JlL1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3Lmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1dlYkNvcmVGdWxsU2NyZWVuV2luZG93Lmg+CiAjaW1wb3J0IDxwYWwvc3BpL2Nn
L0NvcmVHcmFwaGljc1NQSS5oPgorI2ltcG9ydCA8cGFsL3NwaS9tYWMvTlNXaW5kb3dTUEkuaD4K
ICNpbXBvcnQgPHBhbC9zeXN0ZW0vU2xlZXBEaXNhYmxlci5oPgogI2ltcG9ydCA8d3RmL0Jsb2Nr
T2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9OYWtlZFJlZi5oPgpAQCAtOTUsMTEgKzk2
LDYgQEAgZW51bSBGdWxsU2NyZWVuU3RhdGUgOiBOU0ludGVnZXIgewogICAgIEV4aXRpbmdGdWxs
U2NyZWVuLAogfTsKIAotQGludGVyZmFjZSBOU1dpbmRvdyAoV2ViTlNXaW5kb3dGdWxsU2NyZWVu
RGV0YWlscykKLS0gKHZvaWQpZXhpdEZ1bGxTY3JlZW5Nb2RlOihpZClzZW5kZXI7Ci0tICh2b2lk
KWVudGVyRnVsbFNjcmVlbk1vZGU6KGlkKXNlbmRlcjsKLUBlbmQKLQogQGludGVyZmFjZSBXS0Z1
bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIChQcml2YXRlKSA8TlNBbmltYXRpb25EZWxlZ2F0ZT4K
IC0gKHZvaWQpX3JlcGxhY2VWaWV3OihOU1ZpZXcgKil2aWV3IHdpdGg6KE5TVmlldyAqKW90aGVy
VmlldzsKIC0gKFdlYktpdDo6V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eSAqKV9tYW5hZ2VyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJLaXRMZWdhY3kueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViS2l0TGVnYWN5Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDM5ZTczNmE3N2Q2NjkyYjgyMzEzMWM0ZmU1ZTNlMzky
NjE1YWIzMy4uYzg0NzU1M2MxNGMyYTAyYWYxOGI3NjEzOWZiM2U4OTQxNzQ4ZDhkOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJLaXRMZWdhY3kueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYktpdExlZ2FjeS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC02NjQsNyArNjY0LDYgQEAKIAkJQzExRUJGNDEyMTQxOUNDRTAw
RDY1OUU3IC8qIFdlYlN3aXRjaGluZ0dQVUNsaWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTFFQkYzRjIxNDE5Q0NFMDBENjU5RTcgLyogV2Vi
U3dpdGNoaW5nR1BVQ2xpZW50LmNwcCAqLzsgfTsKIAkJQzExRUJGNDIyMTQxOUNDRTAwRDY1OUU3
IC8qIFdlYlN3aXRjaGluZ0dQVUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQzExRUJGNDAyMTQxOUNDRTAwRDY1OUU3IC8qIFdlYlN3aXRjaGlu
Z0dQVUNsaWVudC5oICovOyB9OwogCQlDMUQ4MTEyODIwMkNEODAwMDBFRTc0RjkgLyogV2ViVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEMxRDgxMTI3MjAyQ0Q4MDAwMEVFNzRGOSAvKiBXZWJWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyLm1tICovOyB9OwotCQlDMUQ4MTEyQjIwMkNEQ0M0MDBFRTc0RjkgLyog
V2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxRDgxMTI5MjAyQ0RDQzIwMEVFNzRGOSAv
KiBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1tICovOyB9OwogCQlDMUQ4
MTEyRTIwMkNFRDA4MDBFRTc0RjkgLyogV2ViV2luZG93QW5pbWF0aW9uLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzFEODExMkQyMDJDRUQwNzAwRUU3
NEY5IC8qIFdlYldpbmRvd0FuaW1hdGlvbi5tbSAqLzsgfTsKIAkJQ0Q4QkZDRTcxNTUzMTIyNDAw
NUFGQjI1IC8qIFdlYktpdEZ1bGxTY3JlZW5MaXN0ZW5lci5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOEJGQ0U1MTU1MzEyMjQwMDVBRkIyNSAvKiBX
ZWJLaXRGdWxsU2NyZWVuTGlzdGVuZXIubW0gKi87IH07CiAJCUNEOEJGQ0U4MTU1MzEyMjQwMDVB
RkIyNSAvKiBXZWJLaXRGdWxsU2NyZWVuTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOEJGQ0U2MTU1MzEyMjQwMDVBRkIyNSAvKiBXZWJL
aXRGdWxsU2NyZWVuTGlzdGVuZXIuaCAqLzsgfTsKQEAgLTE0OTUsOCArMTQ5NCw2IEBACiAJCUMx
MUVCRjQwMjE0MTlDQ0UwMEQ2NTlFNyAvKiBXZWJTd2l0Y2hpbmdHUFVDbGllbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViU3dpdGNoaW5nR1BVQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUMxRDgxMTI2MjAyQ0Q3RkUwMEVFNzRGOSAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzFEODExMjcy
MDJDRDgwMDAwRUU3NEY5IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMUQ4MTEyOTIwMkNEQ0My
MDBFRTc0RjkgLyogV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlZpZGVvRnVsbHNjcmVlbkhV
RFdpbmRvd0NvbnRyb2xsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMxRDgx
MTJBMjAyQ0RDQzMwMEVFNzRGOSAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9s
bGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlZpZGVvRnVsbHNjcmVl
bkhVRFdpbmRvd0NvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzFE
ODExMkMyMDJDRUQwNjAwRUU3NEY5IC8qIFdlYldpbmRvd0FuaW1hdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJXaW5kb3dBbmltYXRpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQzFEODExMkQyMDJDRUQwNzAwRUU3NEY5IC8qIFdlYldpbmRvd0Fu
aW1hdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYldp
bmRvd0FuaW1hdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q4QkZDRTUx
NTUzMTIyNDAwNUFGQjI1IC8qIFdlYktpdEZ1bGxTY3JlZW5MaXN0ZW5lci5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYktpdEZ1bGxTY3JlZW5MaXN0ZW5lci5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwODMsOCArMjA4MCw2IEBACiAJCQkJ
NjVBN0Q0NEEwNTY4QUIyNjAwRTcwRUY2IC8qIFdlYlVJRGVsZWdhdGVQcml2YXRlLmggKi8sCiAJ
CQkJQzFEODExMjYyMDJDRDdGRTAwRUU3NEY5IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xs
ZXIuaCAqLywKIAkJCQlDMUQ4MTEyNzIwMkNEODAwMDBFRTc0RjkgLyogV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlci5tbSAqLywKLQkJCQlDMUQ4MTEyQTIwMkNEQ0MzMDBFRTc0RjkgLyogV2Vi
VmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5oICovLAotCQkJCUMxRDgxMTI5MjAy
Q0RDQzIwMEVFNzRGOSAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1t
ICovLAogCQkJCTUxQThCNTc5MDQyODM0RjcwMENBMkQzQSAvKiBXZWJWaWV3LmggKi8sCiAJCQkJ
NTFBOEI1N0EwNDI4MzRGNzAwQ0EyRDNBIC8qIFdlYlZpZXcubW0gKi8sCiAJCQkJQkMyRTQ2NEIw
RkQ4QTk2ODAwQTlEOURFIC8qIFdlYlZpZXdEYXRhLmggKi8sCkBAIC0zNTc0LDcgKzM1NjksNiBA
QAogCQkJCUMwQzVCM0VGMTE3N0E0QTAwMDJCMEFFRiAvKiBXZWJVc2VyQ29udGVudFVSTFBhdHRl
cm4ubW0gaW4gU291cmNlcyAqLywKIAkJCQk0NjE4REZGOTFERUY3NjBBMDAzM0MzQUEgLyogV2Vi
VmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQlDMUQ4MTEyODIw
MkNEODAwMDBFRTc0RjkgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbSBpbiBTb3Vy
Y2VzICovLAotCQkJCUMxRDgxMTJCMjAyQ0RDQzQwMEVFNzRGOSAvKiBXZWJWaWRlb0Z1bGxzY3Jl
ZW5IVURXaW5kb3dDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMyRTQ2NEUwRkQ4
QTk2ODAwQTlEOURFIC8qIFdlYlZpZXdEYXRhLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQzMEMx
MkMxQjJDNURGNzAwREVBMDFEIC8qIFdlYlZpZXdHcm91cC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBMTBDMUQ3NzE4MjAzMDBFMDAzNjg4M0EgLyogV2ViVmlzaWJsZVBvc2l0aW9uLm1tIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5oCmluZGV4IGU4ZmI1NjI5NTA5NWJm
MzdhNGQyODgwNzUwNDZmMzViZGQyZTA4NWEuLjlhNjRhNjBjYzNiNWJlYjE4NzIyMjFhNTI2MTlm
YTJmMjJjMjMyMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5oCkBAIC0zMywxNCArMzMs
MTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSFRNTFZpZGVvRWxlbWVudDsKIH0KIAot
QGNsYXNzIFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXI7CiBAY2xhc3MgV2Vi
V2luZG93RmFkZUFuaW1hdGlvbjsKIAogQGludGVyZmFjZSBXZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyIDogTlNXaW5kb3dDb250cm9sbGVyIHsKICAgICBSZWZQdHI8V2ViQ29yZTo6SFRNTFZp
ZGVvRWxlbWVudD4gX3ZpZGVvRWxlbWVudDsKIAogICAgIE5TV2luZG93ICpfYmFja2dyb3VuZEZ1
bGxzY3JlZW5XaW5kb3c7IC8vIChyZXRhaW4pCi0gICAgV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2lu
ZG93Q29udHJvbGxlciAqX2h1ZENvbnRyb2xsZXI7IC8vIChyZXRhaW4pCiAKICAgICBXZWJXaW5k
b3dGYWRlQW5pbWF0aW9uICpfZmFkZUFuaW1hdGlvbjsgLy8gKHJldGFpbikKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyLm1tCmluZGV4IDc2YmI0NzZhYjA0NDAxZDgzODRlMGE3YzdmMmMxMGU2
ZjBjZGI2ZmIuLjNiN2U2ODliY2VhYWJiMTgwMjM3YzE0Y2QyYmI5ZjE1MzBlNzFjYTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW0KQEAgLTI3LDI4ICsyNywxMTMgQEAKIAogI2lmIEVO
QUJMRShWSURFTykgJiYgUExBVEZPUk0oTUFDKQogCi0jaW1wb3J0ICJXZWJWaWRlb0Z1bGxzY3Jl
ZW5IVURXaW5kb3dDb250cm9sbGVyLmgiCi0jaW1wb3J0ICJXZWJXaW5kb3dBbmltYXRpb24uaCIK
ICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBsYXllci5oPgotI2ltcG9ydCA8QVZGb3VuZGF0aW9u
L0FWUGxheWVyTGF5ZXIuaD4KLSNpbXBvcnQgPENhcmJvbi9DYXJib24uaD4KICNpbXBvcnQgPFdl
YkNvcmUvSFRNTFZpZGVvRWxlbWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9QbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2VBVktpdC5oPgorI2ltcG9ydCA8V2ViQ29yZS9QbGF5YmFja1Nlc3Npb25Nb2Rl
bE1lZGlhRWxlbWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9XZWJBVlBsYXllckNvbnRyb2xsZXIu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cuaD4KKyNpbXBvcnQg
PG9iamMvbWVzc2FnZS5oPgogI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+Ci0jaW1wb3J0IDxwYWwv
c3lzdGVtL1NsZWVwRGlzYWJsZXIuaD4KKyNpbXBvcnQgPHBhbC9zcGkvY29jb2EvQVZLaXRTUEku
aD4KKyNpbXBvcnQgPHBhbC9zcGkvbWFjL05TV2luZG93U1BJLmg+CiAjaW1wb3J0IDx3dGYvUmV0
YWluUHRyLmg+CiAKKyNpbXBvcnQgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgogI2ltcG9y
dCA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmg+CiAKK1NPRlRMSU5LX0FWS0lUX0ZS
QU1FV09SSygpCitTT0ZUX0xJTktfQ0xBU1MoQVZLaXQsIEFWUGxheWVyVmlldykKKwogQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KIAotQGludGVyZmFjZSBXZWJWaWRlb0Z1bGxz
Y3JlZW5XaW5kb3cgOiBOU1dpbmRvdzxOU0FuaW1hdGlvbkRlbGVnYXRlPiB7Ci0gICAgU0VMIF9j
b250cm9sbGVyQWN0aW9uT25BbmltYXRpb25FbmQ7Ci0gICAgV2ViV2luZG93U2NhbGVBbmltYXRp
b24gKl9mdWxsc2NyZWVuQW5pbWF0aW9uOyAvLyAocmV0YWluKQorQGludGVyZmFjZSBBVlBsYXll
clZpZXcgKFNlY3JldFN0dWZmKQorQHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbikgQk9PTCBz
aG93c0F1ZGlvT25seUluZGljYXRvclZpZXc7CitAZW5kCisKK0BpbnRlcmZhY2UgV2ViT3Zlcmxh
eUxheWVyIDogQ0FMYXllcgorQGVuZAorCitAaW1wbGVtZW50YXRpb24gV2ViT3ZlcmxheUxheWVy
CistICh2b2lkKWxheW91dFN1YmxheWVycworeworICAgIGZvciAoQ0FMYXllciogbGF5ZXIgaW4g
c2VsZi5zdWJsYXllcnMpCisgICAgICAgIGxheWVyLmZyYW1lID0gc2VsZi5ib3VuZHM7CiB9Ci0t
ICh2b2lkKWFuaW1hdGVGcm9tUmVjdDooTlNSZWN0KXN0YXJ0UmVjdCB0b1JlY3Q6KE5TUmVjdCll
bmRSZWN0IHdpdGhTdWJBbmltYXRpb246KE5TQW5pbWF0aW9uICopc3ViQW5pbWF0aW9uIGNvbnRy
b2xsZXJBY3Rpb246KFNFTCljb250cm9sbGVyQWN0aW9uOwogQGVuZAogCi1AaW50ZXJmYWNlIFdl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIgKCkgPFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRv
d0NvbnRyb2xsZXJEZWxlZ2F0ZT4KK0BjbGFzcyBXZWJBVlBsYXllclZpZXc7CisKK0Bwcm90b2Nv
bCBXZWJBVlBsYXllclZpZXdEZWxlZ2F0ZQorLSAoQk9PTClwbGF5ZXJWaWV3SXNGdWxsU2NyZWVu
OihXZWJBVlBsYXllclZpZXcqKXBsYXllclZpZXc7CistICh2b2lkKXBsYXllclZpZXdSZXF1ZXN0
RW50ZXJGdWxsc2NyZWVuOihXZWJBVlBsYXllclZpZXcqKXBsYXllclZpZXc7CistICh2b2lkKXBs
YXllclZpZXdSZXF1ZXN0RXhpdEZ1bGxzY3JlZW46KFdlYkFWUGxheWVyVmlldyopcGxheWVyVmll
dzsKK0BlbmQKKworQGludGVyZmFjZSBXZWJBVlBsYXllclZpZXcgOiBBVlBsYXllclZpZXcKK0Bw
cm9wZXJ0eSAod2VhaykgaWQ8V2ViQVZQbGF5ZXJWaWV3RGVsZWdhdGU+IGRlbGVnYXRlOworQGVu
ZAorCitzdGF0aWMgaWQ8V2ViQVZQbGF5ZXJWaWV3RGVsZWdhdGU+IFdlYkFWUGxheWVyVmlld19k
ZWxlZ2F0ZShpZCBhU2VsZiwgU0VMKQoreworICAgIHZvaWQqIGRlbGVnYXRlID0gbmlsOworICAg
IG9iamVjdF9nZXRJbnN0YW5jZVZhcmlhYmxlKGFTZWxmLCAiX3dlYkRlbGVnYXRlIiwgJmRlbGVn
YXRlKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aWQ8V2ViQVZQbGF5ZXJWaWV3RGVsZWdhdGU+
PihkZWxlZ2F0ZSk7Cit9CisKK3N0YXRpYyB2b2lkIFdlYkFWUGxheWVyVmlld19zZXREZWxlZ2F0
ZShpZCBhU2VsZiwgU0VMLCBpZDxXZWJBVlBsYXllclZpZXdEZWxlZ2F0ZT4gZGVsZWdhdGUpCit7
CisgICAgb2JqZWN0X3NldEluc3RhbmNlVmFyaWFibGUoYVNlbGYsICJfd2ViRGVsZWdhdGUiLCBk
ZWxlZ2F0ZSk7Cit9CisKK3N0YXRpYyBCT09MIFdlYkFWUGxheWVyVmlld19pc0Z1bGxTY3JlZW4o
aWQgYVNlbGYsIFNFTCkKK3sKKyAgICBXZWJBVlBsYXllclZpZXcgKnBsYXllclZpZXcgPSBhU2Vs
ZjsKKyAgICByZXR1cm4gW3BsYXllclZpZXcuZGVsZWdhdGUgcGxheWVyVmlld0lzRnVsbFNjcmVl
bjpwbGF5ZXJWaWV3XTsKK30KKworc3RhdGljIHZvaWQgV2ViQVZQbGF5ZXJWaWV3X2VudGVyRnVs
bFNjcmVlbihpZCBhU2VsZiwgU0VMLCBpZCBzZW5kZXIpCit7CisgICAgV2ViQVZQbGF5ZXJWaWV3
ICpwbGF5ZXJWaWV3ID0gYVNlbGY7CisgICAgW3BsYXllclZpZXcuZGVsZWdhdGUgcGxheWVyVmll
d1JlcXVlc3RFbnRlckZ1bGxzY3JlZW46cGxheWVyVmlld107Cit9CisKK3N0YXRpYyB2b2lkIFdl
YkFWUGxheWVyVmlld19leGl0RnVsbFNjcmVlbihpZCBhU2VsZiwgU0VMLCBpZCBzZW5kZXIpCit7
CisgICAgV2ViQVZQbGF5ZXJWaWV3ICpwbGF5ZXJWaWV3ID0gYVNlbGY7CisgICAgW3BsYXllclZp
ZXcuZGVsZWdhdGUgcGxheWVyVmlld1JlcXVlc3RFeGl0RnVsbHNjcmVlbjpwbGF5ZXJWaWV3XTsK
K30KKworc3RhdGljIFdlYkFWUGxheWVyVmlldyAqYWxsb2NXZWJBVlBsYXllclZpZXdJbnN0YW5j
ZSgpCit7CisgICAgc3RhdGljIENsYXNzIHRoZUNsYXNzID0gbmlsOworICAgIHN0YXRpYyBkaXNw
YXRjaF9vbmNlX3Qgb25jZVRva2VuOworICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsK
KyAgICAgICAgQVNTRVJUKGdldEFWUGxheWVyVmlld0NsYXNzKCkpOworICAgICAgICBDbGFzcyBh
Q2xhc3MgPSBvYmpjX2FsbG9jYXRlQ2xhc3NQYWlyKGdldEFWUGxheWVyVmlld0NsYXNzKCksICJX
ZWJBVlBsYXllclZpZXciLCAwKTsKKyAgICAgICAgdGhlQ2xhc3MgPSBhQ2xhc3M7CisgICAgICAg
IGNsYXNzX2FkZE1ldGhvZCh0aGVDbGFzcywgQHNlbGVjdG9yKHNldERlbGVnYXRlOiksIChJTVAp
V2ViQVZQbGF5ZXJWaWV3X3NldERlbGVnYXRlLCAidkA6QCIpOworICAgICAgICBjbGFzc19hZGRN
ZXRob2QodGhlQ2xhc3MsIEBzZWxlY3RvcihkZWxlZ2F0ZSksIChJTVApV2ViQVZQbGF5ZXJWaWV3
X2RlbGVnYXRlLCAiQEA6Iik7CisgICAgICAgIGNsYXNzX2FkZE1ldGhvZCh0aGVDbGFzcywgQHNl
bGVjdG9yKGlzRnVsbFNjcmVlbiksIChJTVApV2ViQVZQbGF5ZXJWaWV3X2lzRnVsbFNjcmVlbiwg
IkJAOiIpOworICAgICAgICBjbGFzc19hZGRNZXRob2QodGhlQ2xhc3MsIEBzZWxlY3RvcihlbnRl
ckZ1bGxTY3JlZW46KSwgKElNUClXZWJBVlBsYXllclZpZXdfZW50ZXJGdWxsU2NyZWVuLCAidkA6
QCIpOworICAgICAgICBjbGFzc19hZGRNZXRob2QodGhlQ2xhc3MsIEBzZWxlY3RvcihleGl0RnVs
bFNjcmVlbjopLCAoSU1QKVdlYkFWUGxheWVyVmlld19leGl0RnVsbFNjcmVlbiwgInZAOkAiKTsK
KworICAgICAgICBjbGFzc19hZGRJdmFyKHRoZUNsYXNzLCAiX3dlYkRlbGVnYXRlIiwgc2l6ZW9m
KGlkKSwgbG9nMihzaXplb2YoaWQpKSwgIkAiKTsKKyAgICAgICAgY2xhc3NfYWRkSXZhcih0aGVD
bGFzcywgIl93ZWJJc0Z1bGxTY3JlZW4iLCBzaXplb2YoQk9PTCksIGxvZzIoc2l6ZW9mKEJPT0wp
KSwgIkIiKTsKKworICAgICAgICBvYmpjX3JlZ2lzdGVyQ2xhc3NQYWlyKHRoZUNsYXNzKTsKKyAg
ICB9KTsKKyAgICByZXR1cm4gKFdlYkFWUGxheWVyVmlldyAqKVt0aGVDbGFzcyBhbGxvY107Cit9
CisKK0BpbnRlcmZhY2UgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciAoKSA8V2ViQVZQbGF5
ZXJWaWV3RGVsZWdhdGUsIE5TV2luZG93RGVsZWdhdGU+IHsKKyAgICBSZWZQdHI8V2ViQ29yZTo6
UGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ+IF9wbGF5YmFja01vZGVsOworICAgIFJl
ZlB0cjxXZWJDb3JlOjpQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdD4gX3BsYXliYWNrSW50
ZXJmYWNlOworICAgIFJldGFpblB0cjxOU1ZpZXc+IF9jb250ZW50T3ZlcmxheTsKKyAgICBCT09M
IF9pc0Z1bGxTY3JlZW47Cit9CitAcHJvcGVydHkgKHJlYWRvbmx5KSBXZWJDb3JlRnVsbFNjcmVl
bldpbmRvdyogZnVsbHNjcmVlbldpbmRvdzsKK0Bwcm9wZXJ0eSAocmVhZG9ubHkpIFdlYkFWUGxh
eWVyVmlldyogcGxheWVyVmlldzsKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdlYlZpZGVvRnVs
bHNjcmVlbkNvbnRyb2xsZXIKQEAgLTU2LDQxICsxNDEsNTUgQEAgQGltcGxlbWVudGF0aW9uIFdl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIKIC0gKGlkKWluaXQKIHsKICAgICAvLyBEbyBub3Qg
ZGVmZXIgd2luZG93IGNyZWF0aW9uLCB0byBtYWtlIHN1cmUgLXdpbmRvd051bWJlciBpcyBjcmVh
dGVkIChuZWVkZWQgYnkgV2ViV2luZG93U2NhbGVBbmltYXRpb24pLgotICAgIE5TV2luZG93ICp3
aW5kb3cgPSBbW1dlYlZpZGVvRnVsbHNjcmVlbldpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50
UmVjdDpOU1plcm9SZWN0IHN0eWxlTWFzazpOU0JvcmRlcmxlc3NXaW5kb3dNYXNrIGJhY2tpbmc6
TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpOT107CisgICAgTlNXaW5kb3cgKndpbmRvdyA9
IFtbV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6TlNa
ZXJvUmVjdCBzdHlsZU1hc2s6KE5TV2luZG93U3R5bGVNYXNrRnVsbFNpemVDb250ZW50VmlldyB8
IE5TV2luZG93U3R5bGVNYXNrUmVzaXphYmxlKSBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVy
ZWQgZGVmZXI6Tk9dOworICAgIFt3aW5kb3cgc2V0Q29sbGVjdGlvbkJlaGF2aW9yOihbd2luZG93
IGNvbGxlY3Rpb25CZWhhdmlvcl0gfCBOU1dpbmRvd0NvbGxlY3Rpb25CZWhhdmlvckZ1bGxTY3Jl
ZW5QcmltYXJ5KV07CisgICAgd2luZG93LmRlbGVnYXRlID0gc2VsZjsKICAgICBzZWxmID0gW3N1
cGVyIGluaXRXaXRoV2luZG93OndpbmRvd107CiAgICAgW3dpbmRvdyByZWxlYXNlXTsKICAgICBp
ZiAoIXNlbGYpCiAgICAgICAgIHJldHVybiBuaWw7CisgICAgX3BsYXliYWNrTW9kZWwgPSBXZWJD
b3JlOjpQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6Y3JlYXRlKCk7CisgICAgX3Bs
YXliYWNrSW50ZXJmYWNlID0gV2ViQ29yZTo6UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6
OmNyZWF0ZSgqX3BsYXliYWNrTW9kZWwpOworICAgIF9jb250ZW50T3ZlcmxheSA9IGFkb3B0TlMo
W1tOU1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdF0pOworICAgIF9jb250ZW50
T3ZlcmxheS5nZXQoKS5sYXllckNvbnRlbnRzUmVkcmF3UG9saWN5ID0gTlNWaWV3TGF5ZXJDb250
ZW50c1JlZHJhd05ldmVyOworICAgIF9jb250ZW50T3ZlcmxheS5nZXQoKS5sYXllciA9IFtbW1dl
Yk92ZXJsYXlMYXllciBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIFtfY29udGVudE92
ZXJsYXkgc2V0V2FudHNMYXllcjpZRVNdOworICAgIFtfY29udGVudE92ZXJsYXkgc2V0QXV0b3Jl
c2l6aW5nTWFzazooTlNWaWV3V2lkdGhTaXphYmxlIHwgTlNWaWV3SGVpZ2h0U2l6YWJsZSldOwog
ICAgIFtzZWxmIHdpbmRvd0RpZExvYWRdOworCiAgICAgcmV0dXJuIHNlbGY7Ci0gICAgCiB9CiAt
ICh2b2lkKWRlYWxsb2MKIHsKICAgICBBU1NFUlQoIV9iYWNrZ3JvdW5kRnVsbHNjcmVlbldpbmRv
dyk7CiAgICAgQVNTRVJUKCFfZmFkZUFuaW1hdGlvbik7Ci0gICAgW1tOU05vdGlmaWNhdGlvbkNl
bnRlciBkZWZhdWx0Q2VudGVyXSByZW1vdmVPYnNlcnZlcjpzZWxmXTsKKyAgICBfcGxheWVyVmll
dy5kZWxlZ2F0ZSA9IG5pbDsKKyAgICBfcGxheWJhY2tNb2RlbCA9IG5pbDsKICAgICBbc3VwZXIg
ZGVhbGxvY107CiB9CiAKLS0gKFdlYlZpZGVvRnVsbHNjcmVlbldpbmRvdyAqKWZ1bGxzY3JlZW5X
aW5kb3cKKy0gKFdlYkNvcmVGdWxsU2NyZWVuV2luZG93ICopZnVsbHNjcmVlbldpbmRvdwogewot
ICAgIHJldHVybiAoV2ViVmlkZW9GdWxsc2NyZWVuV2luZG93ICopW3N1cGVyIHdpbmRvd107Cisg
ICAgcmV0dXJuIChXZWJDb3JlRnVsbFNjcmVlbldpbmRvdyAqKVtzdXBlciB3aW5kb3ddOwogfQog
CiAtICh2b2lkKXdpbmRvd0RpZExvYWQKIHsKICAgICBhdXRvIHdpbmRvdyA9IFtzZWxmIGZ1bGxz
Y3JlZW5XaW5kb3ddOwotICAgIGF1dG8gY29udGVudFZpZXcgPSBbd2luZG93IGNvbnRlbnRWaWV3
XTsKIAogICAgIFt3aW5kb3cgc2V0SGFzU2hhZG93OllFU107IC8vIFRoaXMgaXMgbmljZXIgd2l0
aCBhIHNoYWRvdy4KICAgICBbd2luZG93IHNldExldmVsOk5TUG9wVXBNZW51V2luZG93TGV2ZWwt
MV07CiAKLSAgICBbY29udGVudFZpZXcgc2V0TGF5ZXI6W0NBTGF5ZXIgbGF5ZXJdXTsKLSAgICBb
Y29udGVudFZpZXcgc2V0V2FudHNMYXllcjpZRVNdOworICAgIF9wbGF5ZXJWaWV3ID0gW2FsbG9j
V2ViQVZQbGF5ZXJWaWV3SW5zdGFuY2UoKSBpbml0V2l0aEZyYW1lOndpbmRvdy5jb250ZW50TGF5
b3V0UmVjdF07CisgICAgX3BsYXllclZpZXcuY29udHJvbHNTdHlsZSA9IEFWUGxheWVyVmlld0Nv
bnRyb2xzU3R5bGVOb25lOworICAgIF9wbGF5ZXJWaWV3LnNob3dzRnVsbFNjcmVlblRvZ2dsZUJ1
dHRvbiA9IFlFUzsKKyAgICBfcGxheWVyVmlldy5zaG93c0F1ZGlvT25seUluZGljYXRvclZpZXcg
PSBOTzsKKyAgICBfcGxheWVyVmlldy5kZWxlZ2F0ZSA9IHNlbGY7CisgICAgd2luZG93LmNvbnRl
bnRWaWV3ID0gX3BsYXllclZpZXc7CisgICAgW19jb250ZW50T3ZlcmxheSBzZXRGcmFtZTpfcGxh
eWVyVmlldy5jb250ZW50T3ZlcmxheVZpZXcuYm91bmRzXTsKKyAgICBbX3BsYXllclZpZXcuY29u
dGVudE92ZXJsYXlWaWV3IGFkZFN1YnZpZXc6X2NvbnRlbnRPdmVybGF5LmdldCgpXTsKIAogICAg
IFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6c2VsZiBz
ZWxlY3RvcjpAc2VsZWN0b3IoYXBwbGljYXRpb25EaWRSZXNpZ25BY3RpdmU6KSBuYW1lOk5TQXBw
bGljYXRpb25EaWRSZXNpZ25BY3RpdmVOb3RpZmljYXRpb24gb2JqZWN0Ok5TQXBwXTsKLSAgICBb
W05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOnNlbGYgc2Vs
ZWN0b3I6QHNlbGVjdG9yKGFwcGxpY2F0aW9uRGlkQ2hhbmdlU2NyZWVuUGFyYW1ldGVyczopIG5h
bWU6TlNBcHBsaWNhdGlvbkRpZENoYW5nZVNjcmVlblBhcmFtZXRlcnNOb3RpZmljYXRpb24gb2Jq
ZWN0Ok5TQXBwXTsKIH0KIAogLSAoTmFrZWRQdHI8V2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudD4p
dmlkZW9FbGVtZW50CkBAIC0xMDcsNzUgKzIwNiwyNyBAQCAtICh2b2lkKXNldFZpZGVvRWxlbWVu
dDooTmFrZWRQdHI8V2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudD4pdmlkZW9FbGVtZW50CiAKICAg
ICBpZiAoIVtzZWxmIGlzV2luZG93TG9hZGVkXSkKICAgICAgICAgcmV0dXJuOwotICAgIGF1dG8g
Y29yZVBsYXllciA9IHZpZGVvRWxlbWVudC0+cGxheWVyKCk7Ci0gICAgaWYgKCFjb3JlUGxheWVy
KQotICAgICAgICByZXR1cm47Ci0gICAgYXV0byBwbGF5ZXIgPSBjb3JlUGxheWVyLT5vYmpDQVZG
b3VuZGF0aW9uQVZQbGF5ZXIoKTsKLSAgICBpZiAoIXBsYXllcikKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgYXV0byBjb250ZW50VmlldyA9IFtbc2VsZiBmdWxsc2NyZWVuV2luZG93XSBjb250ZW50
Vmlld107Ci0KLSAgICBhdXRvIGxheWVyID0gYWRvcHROUyhbUEFMOjphbGxvY0FWUGxheWVyTGF5
ZXJJbnN0YW5jZSgpIGluaXRdKTsKLSAgICBbbGF5ZXIgc2V0UGxheWVyOnBsYXllcl07Ci0KLSAg
ICBbY29udGVudFZpZXcgc2V0TGF5ZXI6bGF5ZXIuZ2V0KCldOwotCi0gICAgLy8gRklYTUU6IFRo
ZSB3aW5kb3dEaWRMb2FkIG1ldGhvZCBhbHJlYWR5IGNhbGxlZCB0aGlzLCBzbyBpdCBzaG91bGQK
LSAgICAvLyBub3QgYmUgbmVjZXNzYXJ5IHRvIGRvIGl0IGFnYWluIGhlcmUuCi0gICAgW2NvbnRl
bnRWaWV3IHNldFdhbnRzTGF5ZXI6WUVTXTsKIAotICAgIC8vIEZJWE1FOiBUaGlzIGNhbiBiZSBj
YWxsZWQgbXVsdGlwbGUgdGltZXMsIGFuZCB3b24ndCBuZWNlc3NhcmlseSBiZQotICAgIC8vIGJh
bGFuY2VkIGJ5IGNhbGxzIHRvIHdpbmRvd0RpZEV4aXRGdWxsc2NyZWVuIGluIHNvbWUgY2FzZXMs
IHNvIGl0Ci0gICAgLy8gd291bGQgYmUgYmV0dGVyIHRvIGNoYW5nZSB0aGluZ3Mgc28gdGhlIG9i
c2VydmVyIGlzIHJlbGlhYmx5IGFkZGVkCi0gICAgLy8gb25seSBvbmNlIGFuZCBndWFyYW50ZWVk
IHJlbW92ZWQgZXZlbiBpbiB1bnVzdWFsIGVkZ2UgY2FzZXMuCi0gICAgW3BsYXllciBhZGRPYnNl
cnZlcjpzZWxmIGZvcktleVBhdGg6QCJyYXRlIiBvcHRpb25zOjAgY29udGV4dDpudWxscHRyXTsK
KyAgICBfcGxheWJhY2tNb2RlbC0+c2V0TWVkaWFFbGVtZW50KHZpZGVvRWxlbWVudCk7CisgICAg
c2VsZi5wbGF5ZXJWaWV3LnBsYXllckNvbnRyb2xsZXIgPSAoQVZQbGF5ZXJDb250cm9sbGVyKilf
cGxheWJhY2tJbnRlcmZhY2UtPnBsYXllckNvbnRyb2xsZXIoKTsKIH0KIAotLSAoQ0dGbG9hdClj
bGVhckZhZGVBbmltYXRpb24KLXsKLSAgICBbX2ZhZGVBbmltYXRpb24gc3RvcEFuaW1hdGlvbl07
Ci0gICAgQ0dGbG9hdCBwcmV2aW91c0FscGhhID0gW19mYWRlQW5pbWF0aW9uIGN1cnJlbnRBbHBo
YV07Ci0gICAgW19mYWRlQW5pbWF0aW9uIHNldFdpbmRvdzpuaWxdOwotICAgIFtfZmFkZUFuaW1h
dGlvbiByZWxlYXNlXTsKLSAgICBfZmFkZUFuaW1hdGlvbiA9IG5pbDsKLSAgICByZXR1cm4gcHJl
dmlvdXNBbHBoYTsKLX0KLQotLSAodm9pZCl3aW5kb3dEaWRFeGl0RnVsbHNjcmVlbgorLSAodm9p
ZCllbnRlckZ1bGxzY3JlZW46KE5TU2NyZWVuICopc2NyZWVuCiB7Ci0gICAgQ0FMYXllciAqbGF5
ZXIgPSBbW1tzZWxmIHdpbmRvd10gY29udGVudFZpZXddIGxheWVyXTsKLSAgICBpZiAoW2xheWVy
IGlzS2luZE9mQ2xhc3M6UEFMOjpnZXRBVlBsYXllckxheWVyQ2xhc3MoKV0pCi0gICAgICAgIFtb
KEFWUGxheWVyTGF5ZXIgKilsYXllciBwbGF5ZXJdIHJlbW92ZU9ic2VydmVyOnNlbGYgZm9yS2V5
UGF0aDpAInJhdGUiXTsKLQotICAgIFtzZWxmIGNsZWFyRmFkZUFuaW1hdGlvbl07Ci0gICAgW1tz
ZWxmIHdpbmRvd10gY2xvc2VdOwotICAgIFtzZWxmIHNldFdpbmRvdzpuaWxdOwotICAgIFtzZWxm
IHVwZGF0ZU1lbnVBbmREb2NrRm9yRnVsbHNjcmVlbl07ICAgCi0gICAgW19odWRDb250cm9sbGVy
IHNldERlbGVnYXRlOm5pbF07Ci0gICAgW19odWRDb250cm9sbGVyIHJlbGVhc2VdOwotICAgIF9o
dWRDb250cm9sbGVyID0gbmlsOwotICAgIFtfYmFja2dyb3VuZEZ1bGxzY3JlZW5XaW5kb3cgY2xv
c2VdOwotICAgIFtfYmFja2dyb3VuZEZ1bGxzY3JlZW5XaW5kb3cgcmVsZWFzZV07Ci0gICAgX2Jh
Y2tncm91bmRGdWxsc2NyZWVuV2luZG93ID0gbmlsOwotICAgIAotICAgIFtzZWxmIGF1dG9yZWxl
YXNlXTsgLy8gQXNzb2NpYXRlZCAtcmV0YWluIGlzIGluIC1leGl0RnVsbHNjcmVlbi4KLSAgICBf
aXNFbmRpbmdGdWxsc2NyZWVuID0gTk87CisgICAgaWYgKCFfdmlkZW9FbGVtZW50KQorICAgICAg
ICByZXR1cm47CisgICAgW05TQW5pbWF0aW9uQ29udGV4dCBiZWdpbkdyb3VwaW5nXTsKKyAgICBf
dmlkZW9FbGVtZW50LT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihfY29udGVudE92ZXJsYXkuZ2V0
KCkubGF5ZXIsIFtzZWxmLCBwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpXSB7CisgICAg
ICAgIFtzZWxmLmZ1bGxzY3JlZW5XaW5kb3cgc2V0RnJhbWU6c2VsZi52aWRlb0VsZW1lbnRSZWN0
IGRpc3BsYXk6WUVTXTsKKyAgICAgICAgW3NlbGYuZnVsbHNjcmVlbldpbmRvdyBtYWtlS2V5QW5k
T3JkZXJGcm9udDpzZWxmXTsKKyAgICAgICAgW3NlbGYuZnVsbHNjcmVlbldpbmRvdyBlbnRlckZ1
bGxTY3JlZW5Nb2RlOnNlbGZdOworICAgICAgICBbTlNBbmltYXRpb25Db250ZXh0IGVuZEdyb3Vw
aW5nXTsKKyAgICB9KTsKIH0KIAotLSAodm9pZCl3aW5kb3dEaWRFbnRlckZ1bGxzY3JlZW4KKy0g
KHZvaWQpZXhpdEZ1bGxzY3JlZW4KIHsKLSAgICBbc2VsZiBjbGVhckZhZGVBbmltYXRpb25dOwot
Ci0gICAgQVNTRVJUKCFfaHVkQ29udHJvbGxlcik7Ci0gICAgX2h1ZENvbnRyb2xsZXIgPSBbW1dl
YlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIgYWxsb2NdIGluaXRdOwotICAgIFtf
aHVkQ29udHJvbGxlciBzZXREZWxlZ2F0ZTpzZWxmXTsKLQotICAgIFtzZWxmIHVwZGF0ZU1lbnVB
bmREb2NrRm9yRnVsbHNjcmVlbl07Ci0gICAgW05TQ3Vyc29yIHNldEhpZGRlblVudGlsTW91c2VN
b3ZlczpZRVNdOwotICAgIAotICAgIC8vIEdpdmUgdGhlIEhVRCBrZXlib2FyZCBmb2N1cyBpbml0
aWFsbHkKLSAgICBbX2h1ZENvbnRyb2xsZXIgZmFkZVdpbmRvd0luXTsKKyAgICBbc2VsZi5mdWxs
c2NyZWVuV2luZG93IGV4aXRGdWxsU2NyZWVuTW9kZTpzZWxmXTsKIH0KIAogLSAoTlNSZWN0KXZp
ZGVvRWxlbWVudFJlY3QKQEAgLTE4NCwzMjQgKzIzNSwxMDcgQEAgLSAoTlNSZWN0KXZpZGVvRWxl
bWVudFJlY3QKIH0KIAogLSAodm9pZClhcHBsaWNhdGlvbkRpZFJlc2lnbkFjdGl2ZTooTlNOb3Rp
ZmljYXRpb24qKW5vdGlmaWNhdGlvbgoteyAgIAorewogICAgIFVOVVNFRF9QQVJBTShub3RpZmlj
YXRpb24pOwogICAgIE5TV2luZG93KiBmdWxsc2NyZWVuV2luZG93ID0gW3NlbGYgZnVsbHNjcmVl
bldpbmRvd107CiAKICAgICAvLyBSZXBsaWNhdGUgdGhlIFF1aWNrVGltZSBQbGF5ZXIgKFgpIGJl
aGF2aW9yIHdoZW4gbG9zaW5nIGFjdGl2ZSBhcHBsaWNhdGlvbiBzdGF0dXM6Ci0gICAgLy8gSXMg
dGhlIGZ1bGxzY3JlZW4gc2NyZWVuIHRoZSBtYWluIHNjcmVlbj8gKE5vdGU6IHRoaXMgY292ZXJz
IHRoZSBjYXNlIHdoZXJlIG9ubHkgYSAKLSAgICAvLyBzaW5nbGUgc2NyZWVuIGlzIGF2YWlsYWJs
ZS4pICBJcyB0aGUgZnVsbHNjcmVlbiBzY3JlZW4gb24gdGhlIGN1cnJlbnQgc3BhY2U/IElGRiBz
bywgCi0gICAgLy8gdGhlbiBleGl0IGZ1bGxzY3JlZW4gbW9kZS4gICAgCisgICAgLy8gSXMgdGhl
IGZ1bGxzY3JlZW4gc2NyZWVuIHRoZSBtYWluIHNjcmVlbj8gKE5vdGU6IHRoaXMgY292ZXJzIHRo
ZSBjYXNlIHdoZXJlIG9ubHkgYQorICAgIC8vIHNpbmdsZSBzY3JlZW4gaXMgYXZhaWxhYmxlLikg
IElzIHRoZSBmdWxsc2NyZWVuIHNjcmVlbiBvbiB0aGUgY3VycmVudCBzcGFjZT8gSUZGIHNvLAor
ICAgIC8vIHRoZW4gZXhpdCBmdWxsc2NyZWVuIG1vZGUuCiAgICAgaWYgKGZ1bGxzY3JlZW5XaW5k
b3cuc2NyZWVuID09IFtOU1NjcmVlbiBzY3JlZW5zXVswXSAmJiBmdWxsc2NyZWVuV2luZG93Lm9u
QWN0aXZlU3BhY2UpCi0gICAgICAgIFtzZWxmIHJlcXVlc3RFeGl0RnVsbHNjcmVlbldpdGhBbmlt
YXRpb246Tk9dOwotfQotCi0KLS8vIE1BUks6IC0KLS8vIE1BUks6IEV4cG9zZWQgSW50ZXJmYWNl
Ci0KLXN0YXRpYyBOU1JlY3QgZnJhbWVFeHBhbmRlZFRvUmF0aW9PZkZyYW1lKE5TUmVjdCBmcmFt
ZVRvRXhwYW5kLCBOU1JlY3QgZnJhbWUpCi17Ci0gICAgLy8gS2VlcCBhIGNvbnN0cmFpbmVkIGFz
cGVjdCByYXRpbyBmb3IgdGhlIGRlc3RpbmF0aW9uIHdpbmRvdwotICAgIE5TUmVjdCByZXN1bHQg
PSBmcmFtZVRvRXhwYW5kOwotICAgIENHRmxvYXQgbmV3UmF0aW8gPSBmcmFtZS5zaXplLndpZHRo
IC8gZnJhbWUuc2l6ZS5oZWlnaHQ7Ci0gICAgQ0dGbG9hdCBvcmlnaW5hbFJhdGlvID0gZnJhbWVU
b0V4cGFuZC5zaXplLndpZHRoIC8gZnJhbWVUb0V4cGFuZC5zaXplLmhlaWdodDsKLSAgICBpZiAo
bmV3UmF0aW8gPiBvcmlnaW5hbFJhdGlvKSB7Ci0gICAgICAgIENHRmxvYXQgbmV3V2lkdGggPSBu
ZXdSYXRpbyAqIGZyYW1lVG9FeHBhbmQuc2l6ZS5oZWlnaHQ7Ci0gICAgICAgIENHRmxvYXQgZGlm
ZiA9IG5ld1dpZHRoIC0gZnJhbWVUb0V4cGFuZC5zaXplLndpZHRoOwotICAgICAgICByZXN1bHQu
c2l6ZS53aWR0aCA9IG5ld1dpZHRoOwotICAgICAgICByZXN1bHQub3JpZ2luLnggLT0gZGlmZiAv
IDI7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgQ0dGbG9hdCBuZXdIZWlnaHQgPSBmcmFtZVRvRXhw
YW5kLnNpemUud2lkdGggLyBuZXdSYXRpbzsKLSAgICAgICAgQ0dGbG9hdCBkaWZmID0gbmV3SGVp
Z2h0IC0gZnJhbWVUb0V4cGFuZC5zaXplLmhlaWdodDsKLSAgICAgICAgcmVzdWx0LnNpemUuaGVp
Z2h0ID0gbmV3SGVpZ2h0OwotICAgICAgICByZXN1bHQub3JpZ2luLnkgLT0gZGlmZiAvIDI7Ci0g
ICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXN0YXRpYyBOU1dpbmRvdyAqY3JlYXRlQmFj
a2dyb3VuZEZ1bGxzY3JlZW5XaW5kb3coTlNSZWN0IGZyYW1lLCBpbnQgbGV2ZWwpCi17Ci0gICAg
TlNXaW5kb3cgKndpbmRvdyA9IFtbTlNXaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6
ZnJhbWUgc3R5bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01hc2sgYmFja2luZzpOU0JhY2tpbmdT
dG9yZUJ1ZmZlcmVkIGRlZmVyOk5PXTsKLSAgICBbd2luZG93IHNldE9wYXF1ZTpZRVNdOwotICAg
IFt3aW5kb3cgc2V0QmFja2dyb3VuZENvbG9yOltOU0NvbG9yIGJsYWNrQ29sb3JdXTsKLSAgICBb
d2luZG93IHNldExldmVsOmxldmVsXTsKLSAgICBbd2luZG93IHNldFJlbGVhc2VkV2hlbkNsb3Nl
ZDpOT107Ci0gICAgcmV0dXJuIHdpbmRvdzsKLX0KLQotLSAodm9pZClzZXR1cEZhZGVBbmltYXRp
b25JZk5lZWRlZEFuZEZhZGVJbjooQk9PTClmYWRlSW4KLXsKLSAgICBDR0Zsb2F0IGluaXRpYWxB
bHBoYSA9IGZhZGVJbiA/IDAgOiAxOwotICAgIGlmIChfZmFkZUFuaW1hdGlvbikgewotICAgICAg
ICAvLyBNYWtlIHN1cmUgd2Ugc3VwcG9ydCBxdWV1aW5nIGFuaW1hdGlvbiBpZiB0aGUgcHJldmlv
dXMgb25lIGlzbid0IG92ZXIgeWV0Ci0gICAgICAgIGluaXRpYWxBbHBoYSA9IFtzZWxmIGNsZWFy
RmFkZUFuaW1hdGlvbl07Ci0gICAgfQotICAgIGlmICghX2ZvcmNlRGlzYWJsZUFuaW1hdGlvbikK
LSAgICAgICAgX2ZhZGVBbmltYXRpb24gPSBbW1dlYldpbmRvd0ZhZGVBbmltYXRpb24gYWxsb2Nd
IGluaXRXaXRoRHVyYXRpb246MC4yIHdpbmRvdzpfYmFja2dyb3VuZEZ1bGxzY3JlZW5XaW5kb3cg
aW5pdGlhbEFscGhhOmluaXRpYWxBbHBoYSBmaW5hbEFscGhhOmZhZGVJbiA/IDEgOiAwXTsKLX0K
LQotLSAodm9pZCllbnRlckZ1bGxzY3JlZW46KE5TU2NyZWVuICopc2NyZWVuCi17Ci0gICAgaWYg
KCFzY3JlZW4pCi0gICAgICAgIHNjcmVlbiA9IFtOU1NjcmVlbiBtYWluU2NyZWVuXTsKLQotICAg
IE5TUmVjdCBlbmRGcmFtZSA9IFtzY3JlZW4gZnJhbWVdOwotICAgIE5TUmVjdCBmcmFtZSA9IGZy
YW1lRXhwYW5kZWRUb1JhdGlvT2ZGcmFtZShbc2VsZiB2aWRlb0VsZW1lbnRSZWN0XSwgZW5kRnJh
bWUpOwotCi0gICAgLy8gQ3JlYXRlIGEgYmxhY2sgd2luZG93IGlmIG5lZWRlZAotICAgIGlmICgh
X2JhY2tncm91bmRGdWxsc2NyZWVuV2luZG93KQotICAgICAgICBfYmFja2dyb3VuZEZ1bGxzY3Jl
ZW5XaW5kb3cgPSBjcmVhdGVCYWNrZ3JvdW5kRnVsbHNjcmVlbldpbmRvdyhbc2NyZWVuIGZyYW1l
XSwgW1tzZWxmIHdpbmRvd10gbGV2ZWxdLTEpOwotICAgIGVsc2UKLSAgICAgICAgW19iYWNrZ3Jv
dW5kRnVsbHNjcmVlbldpbmRvdyBzZXRGcmFtZTpbc2NyZWVuIGZyYW1lXSBkaXNwbGF5Ok5PXTsK
LQotICAgIFtzZWxmIHNldHVwRmFkZUFuaW1hdGlvbklmTmVlZGVkQW5kRmFkZUluOllFU107Ci0g
ICAgaWYgKF9mb3JjZURpc2FibGVBbmltYXRpb24pIHsKLSAgICAgICAgLy8gVGhpcyB3aWxsIGRp
c2FibGUgc2NhbGUgYW5pbWF0aW9uCi0gICAgICAgIGZyYW1lID0gTlNaZXJvUmVjdDsKLSAgICB9
Ci0gICAgW1tzZWxmIGZ1bGxzY3JlZW5XaW5kb3ddIGFuaW1hdGVGcm9tUmVjdDpmcmFtZSB0b1Jl
Y3Q6ZW5kRnJhbWUgd2l0aFN1YkFuaW1hdGlvbjpfZmFkZUFuaW1hdGlvbiBjb250cm9sbGVyQWN0
aW9uOkBzZWxlY3Rvcih3aW5kb3dEaWRFbnRlckZ1bGxzY3JlZW4pXTsKLQotICAgIFtfYmFja2dy
b3VuZEZ1bGxzY3JlZW5XaW5kb3cgb3JkZXJXaW5kb3c6TlNXaW5kb3dCZWxvdyByZWxhdGl2ZVRv
Oltbc2VsZiBmdWxsc2NyZWVuV2luZG93XSB3aW5kb3dOdW1iZXJdXTsKLX0KLQotLSAodm9pZCll
eGl0RnVsbHNjcmVlbgotewotICAgIGlmIChfaXNFbmRpbmdGdWxsc2NyZWVuKQotICAgICAgICBy
ZXR1cm47Ci0gICAgX2lzRW5kaW5nRnVsbHNjcmVlbiA9IFlFUzsKLSAgICBbX2h1ZENvbnRyb2xs
ZXIgY2xvc2VXaW5kb3ddOwotCi0gICAgTlNSZWN0IGVuZEZyYW1lID0gW3NlbGYgdmlkZW9FbGVt
ZW50UmVjdF07Ci0KLSAgICBbc2VsZiBzZXR1cEZhZGVBbmltYXRpb25JZk5lZWRlZEFuZEZhZGVJ
bjpOT107Ci0gICAgaWYgKF9mb3JjZURpc2FibGVBbmltYXRpb24pIHsKLSAgICAgICAgLy8gVGhp
cyB3aWxsIGRpc2FibGUgc2NhbGUgYW5pbWF0aW9uCi0gICAgICAgIGVuZEZyYW1lID0gTlNaZXJv
UmVjdDsKLSAgICB9Ci0gICAgCi0gICAgLy8gV2UgaGF2ZSB0byByZXRhaW4gb3Vyc2VsdmVzIGJl
Y2F1c2Ugd2Ugd2FudCB0byBiZSBhbGl2ZSBmb3IgdGhlIGVuZCBvZiB0aGUgYW5pbWF0aW9uLgot
ICAgIC8vIElmIG91ciBvd25lciByZWxlYXNlcyB1cyB3ZSBjb3VsZCBjcmFzaCBpZiB0aGlzIGlz
IG5vdCB0aGUgY2FzZS4KLSAgICAvLyBCYWxhbmNlZCBpbiB3aW5kb3dEaWRFeGl0RnVsbHNjcmVl
bgotICAgIFtzZWxmIHJldGFpbl07ICAgIAotCi0gICAgTlNSZWN0IHN0YXJ0RnJhbWUgPSBbW3Nl
bGYgd2luZG93XSBmcmFtZV07Ci0gICAgZW5kRnJhbWUgPSBmcmFtZUV4cGFuZGVkVG9SYXRpb09m
RnJhbWUoZW5kRnJhbWUsIHN0YXJ0RnJhbWUpOwotCi0gICAgW1tzZWxmIGZ1bGxzY3JlZW5XaW5k
b3ddIGFuaW1hdGVGcm9tUmVjdDpzdGFydEZyYW1lIHRvUmVjdDplbmRGcmFtZSB3aXRoU3ViQW5p
bWF0aW9uOl9mYWRlQW5pbWF0aW9uIGNvbnRyb2xsZXJBY3Rpb246QHNlbGVjdG9yKHdpbmRvd0Rp
ZEV4aXRGdWxsc2NyZWVuKV07CisgICAgICAgIFtzZWxmIF9yZXF1ZXN0RXhpdF07CiB9CiAKLS0g
KHZvaWQpYXBwbGljYXRpb25EaWRDaGFuZ2VTY3JlZW5QYXJhbWV0ZXJzOihOU05vdGlmaWNhdGlv
biopbm90aWZpY2F0aW9uCi17Ci0gICAgVU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7Ci0gICAg
Ly8gVGhlIHVzZXIgbWF5IGhhdmUgY2hhbmdlZCB0aGUgbWFpbiBzY3JlZW4gYnkgbW92aW5nIHRo
ZSBtZW51IGJhciwgb3IgdGhleSBtYXkgaGF2ZSBjaGFuZ2VkCi0gICAgLy8gdGhlIERvY2sncyBz
aXplIG9yIGxvY2F0aW9uLCBvciB0aGV5IG1heSBoYXZlIGNoYW5nZWQgdGhlIGZ1bGxzY3JlZW4g
c2NyZWVuJ3MgZGltZW5zaW9ucy4gIAotICAgIC8vIFVwZGF0ZSBvdXIgcHJlc2VudGF0aW9uIHBh
cmFtZXRlcnMsIGFuZCBlbnN1cmUgdGhhdCB0aGUgZnVsbCBzY3JlZW4gd2luZG93IG9jY3VwaWVz
IHRoZSAKLSAgICAvLyBlbnRpcmUgc2NyZWVuOgotICAgIFtzZWxmIHVwZGF0ZU1lbnVBbmREb2Nr
Rm9yRnVsbHNjcmVlbl07Ci0gICAgW1tzZWxmIHdpbmRvd10gc2V0RnJhbWU6W1tbc2VsZiB3aW5k
b3ddIHNjcmVlbl0gZnJhbWVdIGRpc3BsYXk6WUVTXTsKLX0KLQotLSAodm9pZCl1cGRhdGVNZW51
QW5kRG9ja0ZvckZ1bGxzY3JlZW4KLXsKLSAgICAvLyBOU0FwcGxpY2F0aW9uUHJlc2VudGF0aW9u
T3B0aW9ucyBpcyBhdmFpbGFibGUgb24gPiAxMC42IG9ubHk6Ci0gICAgTlNBcHBsaWNhdGlvblBy
ZXNlbnRhdGlvbk9wdGlvbnMgb3B0aW9ucyA9IE5TQXBwbGljYXRpb25QcmVzZW50YXRpb25EZWZh
dWx0OwotICAgIE5TU2NyZWVuKiBmdWxsc2NyZWVuU2NyZWVuID0gW1tzZWxmIHdpbmRvd10gc2Ny
ZWVuXTsKLQotICAgIGlmICghX2lzRW5kaW5nRnVsbHNjcmVlbikgewotICAgICAgICAvLyBBdXRv
LWhpZGUgdGhlIG1lbnUgYmFyIGlmIHRoZSBmdWxsc2NyZWVuU2NyZWVuIGNvbnRhaW5zIHRoZSBt
ZW51IGJhcjoKLSAgICAgICAgLy8gTk9URTogaWYgdGhlIGZ1bGxzY3JlZW5TY3JlZW4gY29udGFp
bnMgdGhlIG1lbnUgYmFyIGJ1dCBub3QgdGhlIGRvY2ssIHdlIG11c3Qgc3RpbGwgCi0gICAgICAg
IC8vIGF1dG8taGlkZSB0aGUgZG9jaywgb3IgYW4gZXhjZXB0aW9uIHdpbGwgYmUgdGhyb3duLgot
ICAgICAgICBpZiAoW1tOU1NjcmVlbiBzY3JlZW5zXSBvYmplY3RBdEluZGV4OjBdID09IGZ1bGxz
Y3JlZW5TY3JlZW4pCi0gICAgICAgICAgICBvcHRpb25zIHw9IChOU0FwcGxpY2F0aW9uUHJlc2Vu
dGF0aW9uQXV0b0hpZGVNZW51QmFyIHwgTlNBcHBsaWNhdGlvblByZXNlbnRhdGlvbkF1dG9IaWRl
RG9jayk7Ci0gICAgICAgIC8vIENoZWNrIGlmIHRoZSBjdXJyZW50IHNjcmVlbiBjb250YWlucyB0
aGUgZG9jayBieSBjb21wYXJpbmcgdGhlIHNjcmVlbidzIGZyYW1lIHRvIGl0cwotICAgICAgICAv
LyB2aXNpYmxlRnJhbWU7IGlmIGEgZG9jayBpcyBwcmVzZW50LCB0aGUgdmlzaWJsZUZyYW1lIHdp
bGwgZGlmZmVyLiBJZiB0aGUgY3VycmVudCBzY3JlZW4KLSAgICAgICAgLy8gY29udGFpbnMgdGhl
IGRvY2ssIGhpZGUgaXQuCi0gICAgICAgIGVsc2UgaWYgKCFOU0VxdWFsUmVjdHMoW2Z1bGxzY3Jl
ZW5TY3JlZW4gZnJhbWVdLCBbZnVsbHNjcmVlblNjcmVlbiB2aXNpYmxlRnJhbWVdKSkKLSAgICAg
ICAgICAgIG9wdGlvbnMgfD0gTlNBcHBsaWNhdGlvblByZXNlbnRhdGlvbkF1dG9IaWRlRG9jazsK
LSAgICB9Ci0KLSAgICBOU0FwcC5wcmVzZW50YXRpb25PcHRpb25zID0gb3B0aW9uczsKLX0KLQot
Ly8gTUFSSzogLQotLy8gTUFSSzogV2luZG93IGNhbGxiYWNrCi0KIC0gKHZvaWQpX3JlcXVlc3RF
eGl0CiB7Ci0gICAgaWYgKF92aWRlb0VsZW1lbnQpCi0gICAgICAgIF92aWRlb0VsZW1lbnQtPmV4
aXRGdWxsc2NyZWVuKCk7Ci0gICAgX2ZvcmNlRGlzYWJsZUFuaW1hdGlvbiA9IE5POwotfQotCi0t
ICh2b2lkKXJlcXVlc3RFeGl0RnVsbHNjcmVlbldpdGhBbmltYXRpb246KEJPT0wpYW5pbWF0aW9u
Ci17Ci0gICAgaWYgKF9pc0VuZGluZ0Z1bGxzY3JlZW4pCi0gICAgICAgIHJldHVybjsKLQotICAg
IF9mb3JjZURpc2FibGVBbmltYXRpb24gPSAhYW5pbWF0aW9uOwotICAgIFtzZWxmIHBlcmZvcm1T
ZWxlY3RvcjpAc2VsZWN0b3IoX3JlcXVlc3RFeGl0KSB3aXRoT2JqZWN0Om5pbCBhZnRlckRlbGF5
OjBdOwotCisgICAgW3NlbGYuZnVsbHNjcmVlbldpbmRvdyBleGl0RnVsbFNjcmVlbk1vZGU6c2Vs
Zl07CiB9CiAKLS0gKHZvaWQpcmVxdWVzdEV4aXRGdWxsc2NyZWVuCistICh2b2lkKV9yZXF1ZXN0
RW50ZXIKIHsKLSAgICBbc2VsZiByZXF1ZXN0RXhpdEZ1bGxzY3JlZW5XaXRoQW5pbWF0aW9uOllF
U107CisgICAgaWYgKF92aWRlb0VsZW1lbnQpCisgICAgICAgIF92aWRlb0VsZW1lbnQtPmVudGVy
RnVsbHNjcmVlbigpOwogfQogCi0tICh2b2lkKWZhZGVIVURJbgorLSAodm9pZCljYW5jZWxPcGVy
YXRpb246KGlkKXNlbmRlcgogewotICAgIFtfaHVkQ29udHJvbGxlciBmYWRlV2luZG93SW5dOwor
ICAgIFtzZWxmIF9yZXF1ZXN0RXhpdF07CiB9CiAKLS0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5
UGF0aDooTlNTdHJpbmcgKilrZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hhbmdlOihOU0Rp
Y3Rpb25hcnkgKiljaGFuZ2UgY29udGV4dDoodm9pZCAqKWNvbnRleHQKKy0gKEJPT0wpcGxheWVy
Vmlld0lzRnVsbFNjcmVlbjooV2ViQVZQbGF5ZXJWaWV3KilwbGF5ZXJWaWV3CiB7Ci0gICAgVU5V
U0VEX1BBUkFNKG9iamVjdCk7Ci0gICAgVU5VU0VEX1BBUkFNKGNoYW5nZSk7Ci0gICAgVU5VU0VE
X1BBUkFNKGNvbnRleHQpOwotCi0gICAgaWYgKFtrZXlQYXRoIGlzRXF1YWxUbzpAInJhdGUiXSkK
LSAgICAgICAgW3NlbGYgcmF0ZUNoYW5nZWQ6bmlsXTsKKyAgICByZXR1cm4gX2lzRnVsbFNjcmVl
bjsKIH0KIAotLSAodm9pZClyYXRlQ2hhbmdlZDooTlNOb3RpZmljYXRpb24gKil1bnVzZWROb3Rp
ZmljYXRpb24KKy0gKHZvaWQpcGxheWVyVmlld1JlcXVlc3RFbnRlckZ1bGxzY3JlZW46KEFWUGxh
eWVyVmlldyopcGxheWVyVmlldwogewotICAgIFVOVVNFRF9QQVJBTSh1bnVzZWROb3RpZmljYXRp
b24pOwotICAgIFtfaHVkQ29udHJvbGxlciB1cGRhdGVSYXRlXTsKKyAgICBbc2VsZiBfcmVxdWVz
dEVudGVyXTsKIH0KIAotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gV2ViVmlkZW9GdWxsc2NyZWVu
V2luZG93Ci0KLS0gKGlkKWluaXRXaXRoQ29udGVudFJlY3Q6KE5TUmVjdCljb250ZW50UmVjdCBz
dHlsZU1hc2s6KE5TVUludGVnZXIpYVN0eWxlIGJhY2tpbmc6KE5TQmFja2luZ1N0b3JlVHlwZSli
dWZmZXJpbmdUeXBlIGRlZmVyOihCT09MKWZsYWcKKy0gKHZvaWQpcGxheWVyVmlld1JlcXVlc3RF
eGl0RnVsbHNjcmVlbjooQVZQbGF5ZXJWaWV3KilwbGF5ZXJWaWV3CiB7Ci0gICAgVU5VU0VEX1BB
UkFNKGFTdHlsZSk7Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0V2l0aENvbnRlbnRSZWN0OmNvbnRl
bnRSZWN0IHN0eWxlTWFzazpOU0JvcmRlcmxlc3NXaW5kb3dNYXNrIGJhY2tpbmc6YnVmZmVyaW5n
VHlwZSBkZWZlcjpmbGFnXTsKLSAgICBpZiAoIXNlbGYpCi0gICAgICAgIHJldHVybiBuaWw7Ci0g
ICAgW3NlbGYgc2V0T3BhcXVlOk5PXTsKLSAgICBbc2VsZiBzZXRCYWNrZ3JvdW5kQ29sb3I6W05T
Q29sb3IgY2xlYXJDb2xvcl1dOwotICAgIFtzZWxmIHNldElnbm9yZXNNb3VzZUV2ZW50czpOT107
Ci0gICAgW3NlbGYgc2V0QWNjZXB0c01vdXNlTW92ZWRFdmVudHM6WUVTXTsKLSAgICByZXR1cm4g
c2VsZjsKKyAgICBbc2VsZiBfcmVxdWVzdEV4aXRdOwogfQogCi0tICh2b2lkKWRlYWxsb2MKKy0g
KG51bGxhYmxlIE5TQXJyYXk8TlNXaW5kb3cgKj4gKiljdXN0b21XaW5kb3dzVG9FbnRlckZ1bGxT
Y3JlZW5Gb3JXaW5kb3c6KE5TV2luZG93ICopd2luZG93CiB7Ci0gICAgQVNTRVJUKCFfZnVsbHNj
cmVlbkFuaW1hdGlvbik7Ci0gICAgW3N1cGVyIGRlYWxsb2NdOworICAgIHJldHVybiBAW3NlbGYu
ZnVsbHNjcmVlbldpbmRvd107CiB9CiAKLS0gKEJPT0wpcmVzaWduRmlyc3RSZXNwb25kZXIKKy0g
KHZvaWQpd2luZG93OihOU1dpbmRvdyAqKXdpbmRvdyBzdGFydEN1c3RvbUFuaW1hdGlvblRvRW50
ZXJGdWxsU2NyZWVuV2l0aER1cmF0aW9uOihOU1RpbWVJbnRlcnZhbClkdXJhdGlvbgogewotICAg
IHJldHVybiBOTzsKKyAgICBbTlNBbmltYXRpb25Db250ZXh0IHJ1bkFuaW1hdGlvbkdyb3VwOl4o
TlNBbmltYXRpb25Db250ZXh0ICpjb250ZXh0KSB7CisgICAgICAgIGNvbnRleHQuYWxsb3dzSW1w
bGljaXRBbmltYXRpb24gPSBZRVM7CisgICAgICAgIGNvbnRleHQuZHVyYXRpb24gPSBkdXJhdGlv
bjsKKyAgICAgICAgW3dpbmRvdyBzZXRGcmFtZTp3aW5kb3cuc2NyZWVuLmZyYW1lIGRpc3BsYXk6
WUVTXTsKKyAgICB9IGNvbXBsZXRpb25IYW5kbGVyOk5VTExdOwogfQogCi0tIChCT09MKWNhbkJl
Y29tZUtleVdpbmRvdworLSAobnVsbGFibGUgTlNBcnJheTxOU1dpbmRvdyAqPiAqKWN1c3RvbVdp
bmRvd3NUb0V4aXRGdWxsU2NyZWVuRm9yV2luZG93OihOU1dpbmRvdyAqKXdpbmRvdwogewotICAg
IHJldHVybiBOTzsKKyAgICByZXR1cm4gQFtzZWxmLmZ1bGxzY3JlZW5XaW5kb3ddOwogfQogCi0t
ICh2b2lkKW1vdXNlRG93bjooTlNFdmVudCAqKWV2ZW50CistICh2b2lkKXdpbmRvdzooTlNXaW5k
b3cgKil3aW5kb3cgc3RhcnRDdXN0b21BbmltYXRpb25Ub0V4aXRGdWxsU2NyZWVuV2l0aER1cmF0
aW9uOihOU1RpbWVJbnRlcnZhbClkdXJhdGlvbgogewotICAgIFVOVVNFRF9QQVJBTShldmVudCk7
CisgICAgW05TQW5pbWF0aW9uQ29udGV4dCBydW5BbmltYXRpb25Hcm91cDpeKE5TQW5pbWF0aW9u
Q29udGV4dCAqY29udGV4dCkgeworICAgICAgICBjb250ZXh0LmFsbG93c0ltcGxpY2l0QW5pbWF0
aW9uID0gWUVTOworICAgICAgICBjb250ZXh0LmR1cmF0aW9uID0gZHVyYXRpb247CisgICAgICAg
IFt3aW5kb3cgc2V0RnJhbWU6c2VsZi52aWRlb0VsZW1lbnRSZWN0IGRpc3BsYXk6WUVTXTsKKyAg
ICB9IGNvbXBsZXRpb25IYW5kbGVyOk5VTExdOwogfQogCi0tICh2b2lkKWNhbmNlbE9wZXJhdGlv
bjooaWQpc2VuZGVyCistICh2b2lkKXdpbmRvd0RpZEVudGVyRnVsbFNjcmVlbjooTlNOb3RpZmlj
YXRpb24gKilub3RpZmljYXRpb24KIHsKLSAgICBVTlVTRURfUEFSQU0oc2VuZGVyKTsKLSAgICBb
W3NlbGYgd2luZG93Q29udHJvbGxlcl0gcmVxdWVzdEV4aXRGdWxsc2NyZWVuXTsKKyAgICBfcGxh
eWVyVmlldy5jb250cm9sc1N0eWxlID0gQVZQbGF5ZXJWaWV3Q29udHJvbHNTdHlsZUZsb2F0aW5n
OworICAgIFtfcGxheWVyVmlldyB3aWxsQ2hhbmdlVmFsdWVGb3JLZXk6QCJpc0Z1bGxTY3JlZW4i
XTsKKyAgICBfaXNGdWxsU2NyZWVuID0gWUVTOworICAgIFtfcGxheWVyVmlldyBkaWRDaGFuZ2VW
YWx1ZUZvcktleTpAImlzRnVsbFNjcmVlbiJdOwogfQogCi0tICh2b2lkKWFuaW1hdGVkUmVzaXpl
RGlkRW5kCistICh2b2lkKXdpbmRvd1dpbGxFeGl0RnVsbFNjcmVlbjooTlNOb3RpZmljYXRpb24g
Kilub3RpZmljYXRpb24KIHsKLSAgICBpZiAoX2NvbnRyb2xsZXJBY3Rpb25PbkFuaW1hdGlvbkVu
ZCkKLSAgICAgICAgW1tzZWxmIHdpbmRvd0NvbnRyb2xsZXJdIHBlcmZvcm1TZWxlY3RvcjpfY29u
dHJvbGxlckFjdGlvbk9uQW5pbWF0aW9uRW5kXTsKLSAgICBfY29udHJvbGxlckFjdGlvbk9uQW5p
bWF0aW9uRW5kID0gTlVMTDsKKyAgICBfcGxheWVyVmlldy5jb250cm9sc1N0eWxlID0gQVZQbGF5
ZXJWaWV3Q29udHJvbHNTdHlsZU5vbmU7CiB9CiAKLS8vCi0vLyBUaGlzIGZ1bmN0aW9uIHdpbGwg
YW5pbWF0ZSBhIGNoYW5nZSBvZiBmcmFtZSByZWN0YW5nbGUKLS8vIFdlIHN1cHBvcnQgcXVldWlu
ZyBhbmltYXRpb24sIHRoYXQgbWVhbnMgdGhhdCB3ZSdsbCBjb3JyZWN0bHkKLS8vIGludGVycnVw
dCB0aGUgcnVubmluZyBhbmltYXRpb24sIGFuZCBxdWV1ZSB0aGUgbmV4dCBvbmUuCi0vLwotLSAo
dm9pZClhbmltYXRlRnJvbVJlY3Q6KE5TUmVjdClzdGFydFJlY3QgdG9SZWN0OihOU1JlY3QpZW5k
UmVjdCB3aXRoU3ViQW5pbWF0aW9uOihOU0FuaW1hdGlvbiAqKXN1YkFuaW1hdGlvbiBjb250cm9s
bGVyQWN0aW9uOihTRUwpY29udHJvbGxlckFjdGlvbgorLSAodm9pZCl3aW5kb3dEaWRFeGl0RnVs
bFNjcmVlbjooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KIHsKLSAgICBfY29udHJvbGxl
ckFjdGlvbk9uQW5pbWF0aW9uRW5kID0gY29udHJvbGxlckFjdGlvbjsKLQotICAgIEJPT0wgd2Fz
QW5pbWF0aW5nID0gTk87Ci0gICAgaWYgKF9mdWxsc2NyZWVuQW5pbWF0aW9uKSB7Ci0gICAgICAg
IHdhc0FuaW1hdGluZyA9IFlFUzsKKyAgICBbX3BsYXllclZpZXcgd2lsbENoYW5nZVZhbHVlRm9y
S2V5OkAiaXNGdWxsU2NyZWVuIl07CisgICAgX2lzRnVsbFNjcmVlbiA9IE5POworICAgIFtfcGxh
eWVyVmlldyBkaWRDaGFuZ2VWYWx1ZUZvcktleTpAImlzRnVsbFNjcmVlbiJdOwogCi0gICAgICAg
IC8vIEludGVycnVwdCBhbnkgcnVubmluZyBhbmltYXRpb24uCi0gICAgICAgIFtfZnVsbHNjcmVl
bkFuaW1hdGlvbiBzdG9wQW5pbWF0aW9uXTsKLQotICAgICAgICAvLyBTYXZlIHRoZSBjdXJyZW50
IHJlY3QgdG8gZW5zdXJlIGEgc21vb3RoIHRyYW5zaXRpb24uCi0gICAgICAgIHN0YXJ0UmVjdCA9
IFtfZnVsbHNjcmVlbkFuaW1hdGlvbiBjdXJyZW50RnJhbWVdOwotICAgICAgICBbX2Z1bGxzY3Jl
ZW5BbmltYXRpb24gcmVsZWFzZV07Ci0gICAgICAgIF9mdWxsc2NyZWVuQW5pbWF0aW9uID0gbmls
OwotICAgIH0KLSAgICAKLSAgICBpZiAoTlNJc0VtcHR5UmVjdChzdGFydFJlY3QpIHx8IE5TSXNF
bXB0eVJlY3QoZW5kUmVjdCkpIHsKLSAgICAgICAgLy8gRmFrZWx5IGVuZCB0aGUgc3ViYW5pbWF0
aW9uLgotICAgICAgICBbc3ViQW5pbWF0aW9uIHNldEN1cnJlbnRQcm9ncmVzczoxXTsKLSAgICAg
ICAgLy8gQW5kIHJlbW92ZSB0aGUgd2VhayBsaW5rIHRvIHRoZSB3aW5kb3cuCi0gICAgICAgIFtz
dWJBbmltYXRpb24gc3RvcEFuaW1hdGlvbl07Ci0KLSAgICAgICAgW3NlbGYgc2V0RnJhbWU6ZW5k
UmVjdCBkaXNwbGF5Ok5PXTsKLSAgICAgICAgW3NlbGYgbWFrZUtleUFuZE9yZGVyRnJvbnQ6c2Vs
Zl07Ci0gICAgICAgIFtzZWxmIGFuaW1hdGVkUmVzaXplRGlkRW5kXTsKKyAgICBpZiAoIV92aWRl
b0VsZW1lbnQpIHsKKyAgICAgICAgW3NlbGYuZnVsbHNjcmVlbldpbmRvdyBjbG9zZV07CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIXdhc0FuaW1hdGluZykgewotICAgICAgICAv
LyBXZSdsbCBkb3duc2NhbGUgdGhlIHdpbmRvdyBkdXJpbmcgdGhlIGFuaW1hdGlvbiBiYXNlZCBv
biB0aGUgaGlnaGVyIHJlc29sdXRpb24gcmVjdAotICAgICAgICBCT09MIGhpZ2hlclJlc29sdXRp
b25Jc0VuZFJlY3QgPSBzdGFydFJlY3Quc2l6ZS53aWR0aCA8IGVuZFJlY3Quc2l6ZS53aWR0aCAm
JiBzdGFydFJlY3Quc2l6ZS5oZWlnaHQgPCBlbmRSZWN0LnNpemUuaGVpZ2h0OwotICAgICAgICBb
c2VsZiBzZXRGcmFtZTpoaWdoZXJSZXNvbHV0aW9uSXNFbmRSZWN0ID8gZW5kUmVjdCA6IHN0YXJ0
UmVjdCBkaXNwbGF5Ok5PXTsKLSAgICB9Ci0gICAgCi0gICAgQVNTRVJUKCFfZnVsbHNjcmVlbkFu
aW1hdGlvbik7Ci0gICAgX2Z1bGxzY3JlZW5BbmltYXRpb24gPSBbW1dlYldpbmRvd1NjYWxlQW5p
bWF0aW9uIGFsbG9jXSBpbml0V2l0aEhpbnRlZER1cmF0aW9uOjAuMiB3aW5kb3c6c2VsZiBpbml0
YWxGcmFtZTpzdGFydFJlY3QgZmluYWxGcmFtZTplbmRSZWN0XTsKLSAgICBbX2Z1bGxzY3JlZW5B
bmltYXRpb24gc2V0U3ViQW5pbWF0aW9uOnN1YkFuaW1hdGlvbl07Ci0gICAgW19mdWxsc2NyZWVu
QW5pbWF0aW9uIHNldERlbGVnYXRlOnNlbGZdOwotICAgIAotICAgIC8vIE1ha2Ugc3VyZSB0aGUg
YW5pbWF0aW9uIGhhcyBzY2FsZWQgdGhlIHdpbmRvdyBiZWZvcmUgc2hvd2luZyBpdC4KLSAgICBb
X2Z1bGxzY3JlZW5BbmltYXRpb24gc2V0Q3VycmVudFByb2dyZXNzOjBdOwotICAgIFtzZWxmIG1h
a2VLZXlBbmRPcmRlckZyb250OnNlbGZdOwotCi0gICAgW19mdWxsc2NyZWVuQW5pbWF0aW9uIHN0
YXJ0QW5pbWF0aW9uXTsKLX0KLQotLSAodm9pZClhbmltYXRpb25EaWRFbmQ6KE5TQW5pbWF0aW9u
ICopYW5pbWF0aW9uCi17Ci0gICAgaWYgKCFbTlNUaHJlYWQgaXNNYWluVGhyZWFkXSkgewotICAg
ICAgICBbc2VsZiBwZXJmb3JtU2VsZWN0b3JPbk1haW5UaHJlYWQ6QHNlbGVjdG9yKGFuaW1hdGlv
bkRpZEVuZDopIHdpdGhPYmplY3Q6YW5pbWF0aW9uIHdhaXRVbnRpbERvbmU6Tk9dOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIGlmIChhbmltYXRpb24gIT0gX2Z1bGxzY3JlZW5BbmltYXRp
b24pCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIFRoZSBhbmltYXRpb24gaXMgbm90IHJlYWxs
eSBvdmVyIGFuZCB3YXMgaW50ZXJydXB0ZWQKLSAgICAvLyBEb24ndCBzZW5kIGNvbXBsZXRpb24g
ZXZlbnRzLgotICAgIGlmIChbYW5pbWF0aW9uIGN1cnJlbnRQcm9ncmVzc10gPCAxLjApCi0gICAg
ICAgIHJldHVybjsKLQotICAgIC8vIEVuc3VyZSB0aGF0IGFuaW1hdGlvbiAoYW5kIHN1YmFuaW1h
dGlvbikgZG9uJ3Qga2VlcAotICAgIC8vIHRoZSB3ZWFrIHJlZmVyZW5jZSB0byB0aGUgd2luZG93
IGl2YXIgdGhhdCBtYXkgYmUgZGVzdHJveWVkIGZyb20KLSAgICAvLyBub3cgb24uCi0gICAgW19m
dWxsc2NyZWVuQW5pbWF0aW9uIHNldFdpbmRvdzpuaWxdOwotCi0gICAgW19mdWxsc2NyZWVuQW5p
bWF0aW9uIGF1dG9yZWxlYXNlXTsKLSAgICBfZnVsbHNjcmVlbkFuaW1hdGlvbiA9IG5pbDsKLQot
ICAgIFtzZWxmIGFuaW1hdGVkUmVzaXplRGlkRW5kXTsKLX0KLQotLSAodm9pZCltb3VzZU1vdmVk
OihOU0V2ZW50ICopZXZlbnQKLXsKLSAgICBVTlVTRURfUEFSQU0oZXZlbnQpOwotICAgIFtbc2Vs
ZiB3aW5kb3dDb250cm9sbGVyXSBmYWRlSFVESW5dOworICAgIFtOU0FuaW1hdGlvbkNvbnRleHQg
YmVnaW5Hcm91cGluZ107CisgICAgX3ZpZGVvRWxlbWVudC0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5
ZXIobmlsLCBbc2VsZiwgcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKV0geworICAgICAg
ICBbc2VsZi5mdWxsc2NyZWVuV2luZG93IGNsb3NlXTsKKyAgICAgICAgW05TQW5pbWF0aW9uQ29u
dGV4dCBlbmRHcm91cGluZ107CisgICAgfSk7CisgICAgX3ZpZGVvRWxlbWVudC0+ZXhpdEZ1bGxz
Y3JlZW4oKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLmggYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRy
b2xsZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmYxODRhZDQxMDZmYzE3OGI2
NzI2NjU5MjVmYjdiZGZlYWJjNTJkNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZGVvRnVs
bHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaWYgRU5BQkxFKFZJREVPKQotCi0jaW1wb3J0IDxBcHBLaXQvTlNC
dXR0b24uaD4KLSNpbXBvcnQgPEFwcEtpdC9OU0NvbnRyb2wuaD4KLSNpbXBvcnQgPEFwcEtpdC9O
U1RleHRGaWVsZC5oPgotI2ltcG9ydCA8QXBwS2l0L05TVHJhY2tpbmdBcmVhLmg+Ci0jaW1wb3J0
IDxBcHBLaXQvTlNXaW5kb3cuaD4KLSNpbXBvcnQgPEFwcEtpdC9OU1dpbmRvd0NvbnRyb2xsZXIu
aD4KLSNpbXBvcnQgPHd0Zi9OYWtlZFB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFz
cyBIVE1MVmlkZW9FbGVtZW50OwotfQotCi1AcHJvdG9jb2wgV2ViVmlkZW9GdWxsc2NyZWVuSFVE
V2luZG93Q29udHJvbGxlckRlbGVnYXRlOwotCi1AaW50ZXJmYWNlIFdlYlZpZGVvRnVsbHNjcmVl
bkhVRFdpbmRvd0NvbnRyb2xsZXIgOiBOU1dpbmRvd0NvbnRyb2xsZXIgewotICAgIGlkIDxXZWJW
aWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyRGVsZWdhdGU+IF9kZWxlZ2F0ZTsKLSAg
ICBOU1RpbWVyICpfdGltZWxpbmVVcGRhdGVUaW1lcjsKLSAgICBOU1RyYWNraW5nQXJlYSAqX2Fy
ZWE7Ci0gICAgQk9PTCBfbW91c2VJc0luSFVEOwotICAgIEJPT0wgX2lzRW5kaW5nRnVsbHNjcmVl
bjsKLSAgICBCT09MIF9pc1NjcnViYmluZzsKLQotICAgIE5TQ29udHJvbCAqX3RpbWVsaW5lOwot
ICAgIE5TVGV4dEZpZWxkICpfcmVtYWluaW5nVGltZVRleHQ7Ci0gICAgTlNUZXh0RmllbGQgKl9l
bGFwc2VkVGltZVRleHQ7Ci0gICAgTlNDb250cm9sICpfdm9sdW1lU2xpZGVyOwotICAgIE5TQnV0
dG9uICpfcGxheUJ1dHRvbjsKLX0KLQotLSAoaWQgPFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRv
d0NvbnRyb2xsZXJEZWxlZ2F0ZT4pZGVsZWdhdGU7Ci0tICh2b2lkKXNldERlbGVnYXRlOihpZCA8
V2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlckRlbGVnYXRlPilkZWxlZ2F0ZTsK
LS0gKHZvaWQpZmFkZVdpbmRvd0luOwotLSAodm9pZClmYWRlV2luZG93T3V0OwotLSAodm9pZClj
bG9zZVdpbmRvdzsKLS0gKHZvaWQpdXBkYXRlUmF0ZTsKLQotQGVuZAotCi1AcHJvdG9jb2wgV2Vi
VmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlckRlbGVnYXRlIDxOU09iamVjdD4KLS0g
KHZvaWQpcmVxdWVzdEV4aXRGdWxsc2NyZWVuOwotLSAoTmFrZWRQdHI8V2ViQ29yZTo6SFRNTFZp
ZGVvRWxlbWVudD4pdmlkZW9FbGVtZW50OwotQGVuZAotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93
Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlkZW9G
dWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggYWU3ZTRhMjhhMDhiYTE5ODI5OGExZDg0ODI2MDJiZjdiNWYyYjE4ZS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW0KKysr
IC9kZXYvbnVsbApAQCAtMSw3MzcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOS0y
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
LSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWYgRU5BQkxFKFZJ
REVPKSAmJiBQTEFURk9STShNQUMpCi0KLSNpbXBvcnQgIldlYlZpZGVvRnVsbHNjcmVlbkhVRFdp
bmRvd0NvbnRyb2xsZXIuaCIKLQotI2ltcG9ydCA8V2ViQ29yZS9GbG9hdENvbnZlcnNpb24uaD4K
LSNpbXBvcnQgPFdlYkNvcmUvSFRNTFZpZGVvRWxlbWVudC5oPgotI2ltcG9ydCA8cGFsL3NwaS9j
Zy9Db3JlR3JhcGhpY3NTUEkuaD4KLSNpbXBvcnQgPHBhbC9zcGkvbWFjL1FUS2l0U1BJLmg+Ci0j
aW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KLQotU09GVF9MSU5LX0ZSQU1FV09SS19PUFRJT05B
TChRVEtpdCkKLQotU09GVF9MSU5LX0NMQVNTX09QVElPTkFMKFFUS2l0LCBRVEhVREJhY2tncm91
bmRWaWV3KQotU09GVF9MSU5LX0NMQVNTX09QVElPTkFMKFFUS2l0LCBRVEhVREJ1dHRvbikKLVNP
RlRfTElOS19DTEFTU19PUFRJT05BTChRVEtpdCwgUVRIVURTbGlkZXIpCi1TT0ZUX0xJTktfQ0xB
U1NfT1BUSU9OQUwoUVRLaXQsIFFUSFVEVGltZWxpbmUpCi0KLSNkZWZpbmUgUVRIVURCYWNrZ3Jv
dW5kVmlldyBnZXRRVEhVREJhY2tncm91bmRWaWV3Q2xhc3MoKQotI2RlZmluZSBRVEhVREJ1dHRv
biBnZXRRVEhVREJ1dHRvbkNsYXNzKCkKLSNkZWZpbmUgUVRIVURTbGlkZXIgZ2V0UVRIVURTbGlk
ZXJDbGFzcygpCi0jZGVmaW5lIFFUSFVEVGltZWxpbmUgZ2V0UVRIVURUaW1lbGluZUNsYXNzKCkK
LQotZW51bSBjbGFzcyBNZWRpYVVJQ29udHJvbCB7Ci0gICAgVGltZWxpbmUsCi0gICAgU2xpZGVy
LAotICAgIFBsYXlQYXVzZUJ1dHRvbiwKLSAgICBFeGl0RnVsbHNjcmVlbkJ1dHRvbiwKLSAgICBS
ZXdpbmRCdXR0b24sCi0gICAgRmFzdEZvcndhcmRCdXR0b24sCi0gICAgVm9sdW1lVXBCdXR0b24s
Ci0gICAgVm9sdW1lRG93bkJ1dHRvbiwKLX07Ci0KLXVzaW5nIFdlYkNvcmU6OkhUTUxWaWRlb0Vs
ZW1lbnQ7Ci11c2luZyBXZWJDb3JlOjpuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0OwotCi1AaW50ZXJm
YWNlIFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIgKFByaXZhdGUpIDxOU1dp
bmRvd0RlbGVnYXRlPgotCi0tICh2b2lkKXVwZGF0ZVRpbWU7Ci0tICh2b2lkKXRpbWVsaW5lUG9z
aXRpb25DaGFuZ2VkOihpZClzZW5kZXI7Ci0tIChmbG9hdCljdXJyZW50VGltZTsKLS0gKHZvaWQp
c2V0Q3VycmVudFRpbWU6KGZsb2F0KWN1cnJlbnRUaW1lOwotLSAoZG91YmxlKWR1cmF0aW9uOwot
Ci0tICh2b2lkKXZvbHVtZUNoYW5nZWQ6KGlkKXNlbmRlcjsKLS0gKGZsb2F0KW1heFZvbHVtZTsK
LS0gKGZsb2F0KXZvbHVtZTsKLS0gKHZvaWQpc2V0Vm9sdW1lOihmbG9hdCl2b2x1bWU7Ci0tICh2
b2lkKWRlY3JlbWVudFZvbHVtZTsKLS0gKHZvaWQpaW5jcmVtZW50Vm9sdW1lOwotCi0tICh2b2lk
KXVwZGF0ZVBsYXlCdXR0b247Ci0tICh2b2lkKXRvZ2dsZVBsYXlpbmc6KGlkKXNlbmRlcjsKLS0g
KEJPT0wpcGxheWluZzsKLS0gKHZvaWQpc2V0UGxheWluZzooQk9PTClwbGF5aW5nOwotCi0tICh2
b2lkKXJld2luZDooaWQpc2VuZGVyOwotLSAodm9pZClmYXN0Rm9yd2FyZDooaWQpc2VuZGVyOwot
Ci0tIChOU1N0cmluZyAqKXJlbWFpbmluZ1RpbWVUZXh0OwotLSAoTlNTdHJpbmcgKillbGFwc2Vk
VGltZVRleHQ7Ci0KLS0gKHZvaWQpZXhpdEZ1bGxzY3JlZW46KGlkKXNlbmRlcjsKLUBlbmQKLQot
QGludGVyZmFjZSBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3cgOiBOU1dpbmRvdwotQGVuZAot
Ci1AaW1wbGVtZW50YXRpb24gV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Ci0KLS0gKGlkKWlu
aXRXaXRoQ29udGVudFJlY3Q6KE5TUmVjdCljb250ZW50UmVjdCBzdHlsZU1hc2s6KE5TVUludGVn
ZXIpYVN0eWxlIGJhY2tpbmc6KE5TQmFja2luZ1N0b3JlVHlwZSlidWZmZXJpbmdUeXBlIGRlZmVy
OihCT09MKWZsYWcKLXsKLSAgICBVTlVTRURfUEFSQU0oYVN0eWxlKTsKLSAgICBzZWxmID0gW3N1
cGVyIGluaXRXaXRoQ29udGVudFJlY3Q6Y29udGVudFJlY3Qgc3R5bGVNYXNrOk5TV2luZG93U3R5
bGVNYXNrQm9yZGVybGVzcyBiYWNraW5nOmJ1ZmZlcmluZ1R5cGUgZGVmZXI6ZmxhZ107Ci0gICAg
aWYgKCFzZWxmKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgW3NlbGYgc2V0T3BhcXVlOk5P
XTsKLSAgICBbc2VsZiBzZXRCYWNrZ3JvdW5kQ29sb3I6W05TQ29sb3IgY2xlYXJDb2xvcl1dOwot
ICAgIFtzZWxmIHNldExldmVsOk5TUG9wVXBNZW51V2luZG93TGV2ZWxdOwotICAgIFtzZWxmIHNl
dEFjY2VwdHNNb3VzZU1vdmVkRXZlbnRzOllFU107Ci0gICAgW3NlbGYgc2V0SWdub3Jlc01vdXNl
RXZlbnRzOk5PXTsKLSAgICBbc2VsZiBzZXRNb3ZhYmxlQnlXaW5kb3dCYWNrZ3JvdW5kOllFU107
Ci0KLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAoQk9PTCljYW5CZWNvbWVLZXlXaW5kb3cKLXsK
LSAgICByZXR1cm4gWUVTOwotfQotCi0tICh2b2lkKWNhbmNlbE9wZXJhdGlvbjooaWQpc2VuZGVy
Ci17Ci0gICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7Ci0gICAgW1tzZWxmIHdpbmRvd0NvbnRyb2xs
ZXJdIGV4aXRGdWxsc2NyZWVuOnNlbGZdOwotfQotCi0tICh2b2lkKWNlbnRlcgotewotICAgIE5T
UmVjdCBodWRGcmFtZSA9IFtzZWxmIGZyYW1lXTsKLSAgICBOU1JlY3Qgc2NyZWVuRnJhbWUgPSBb
W05TU2NyZWVuIG1haW5TY3JlZW5dIGZyYW1lXTsKLSAgICBbc2VsZiBzZXRGcmFtZVRvcExlZnRQ
b2ludDpOU01ha2VQb2ludChzY3JlZW5GcmFtZS5vcmlnaW4ueCArIChzY3JlZW5GcmFtZS5zaXpl
LndpZHRoIC0gaHVkRnJhbWUuc2l6ZS53aWR0aCkgLyAyLCBzY3JlZW5GcmFtZS5vcmlnaW4ueSAr
IChzY3JlZW5GcmFtZS5zaXplLmhlaWdodCAtIGh1ZEZyYW1lLnNpemUuaGVpZ2h0KSAvIDYpXTsK
LX0KLQotLSAodm9pZClrZXlEb3duOihOU0V2ZW50ICopZXZlbnQKLXsKLSAgICBbc3VwZXIga2V5
RG93bjpldmVudF07Ci0gICAgW1tzZWxmIHdpbmRvd0NvbnRyb2xsZXJdIGZhZGVXaW5kb3dJbl07
Ci19Ci0KLS0gKEJPT0wpcmVzaWduRmlyc3RSZXNwb25kZXIKLXsKLSAgICByZXR1cm4gTk87Ci19
Ci0KLS0gKEJPT0wpcGVyZm9ybUtleUVxdWl2YWxlbnQ6KE5TRXZlbnQgKilldmVudAotewotICAg
IC8vIEJsb2NrIGFsbCBjb21tYW5kIGtleSBldmVudHMgd2hpbGUgdGhlIGZ1bGxzY3JlZW4gd2lu
ZG93IGlzIHVwLgotICAgIGlmIChbZXZlbnQgdHlwZV0gIT0gTlNFdmVudFR5cGVLZXlEb3duKQot
ICAgICAgICByZXR1cm4gTk87Ci0gICAgCi0gICAgaWYgKCEoW2V2ZW50IG1vZGlmaWVyRmxhZ3Nd
ICYgTlNFdmVudE1vZGlmaWVyRmxhZ0NvbW1hbmQpKQotICAgICAgICByZXR1cm4gTk87Ci0gICAg
cmV0dXJuIFlFUzsKLX0KLQotQGVuZAotCi1zdGF0aWMgY29uc3QgQ0dGbG9hdCB3aW5kb3dIZWln
aHQgPSA1OTsKLXN0YXRpYyBjb25zdCBDR0Zsb2F0IHdpbmRvd1dpZHRoID0gNDM4OwotCi1zdGF0
aWMgY29uc3QgTlNUaW1lSW50ZXJ2YWwgSFVEV2luZG93RmFkZU91dERlbGF5ID0gMzsKLQotQGlt
cGxlbWVudGF0aW9uIFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIKLQotLSAo
aWQpaW5pdAotewotICAgIE5TV2luZG93ICp3aW5kb3cgPSBbW1dlYlZpZGVvRnVsbHNjcmVlbkhV
RFdpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpOU01ha2VSZWN0KDAsIDAsIHdpbmRv
d1dpZHRoLCB3aW5kb3dIZWlnaHQpIHN0eWxlTWFzazpOU1dpbmRvd1N0eWxlTWFza0JvcmRlcmxl
c3MgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOk5PXTsKLSAgICBzZWxmID0g
W3N1cGVyIGluaXRXaXRoV2luZG93OndpbmRvd107Ci0gICAgW3dpbmRvdyBzZXREZWxlZ2F0ZTpz
ZWxmXTsKLSAgICBbd2luZG93IHJlbGVhc2VdOwotICAgIGlmICghc2VsZikKLSAgICAgICAgcmV0
dXJuIG5pbDsKLSAgICBbc2VsZiB3aW5kb3dEaWRMb2FkXTsKLSAgICByZXR1cm4gc2VsZjsKLX0K
LQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgQVNTRVJUKCFfdGltZWxpbmVVcGRhdGVUaW1lcik7
Ci0gICAgQVNTRVJUKCFfYXJlYSk7Ci0gICAgQVNTRVJUKCFfaXNTY3J1YmJpbmcpOwotICAgIFtf
dGltZWxpbmUgcmVsZWFzZV07Ci0gICAgW19yZW1haW5pbmdUaW1lVGV4dCByZWxlYXNlXTsKLSAg
ICBbX2VsYXBzZWRUaW1lVGV4dCByZWxlYXNlXTsKLSAgICBbX3ZvbHVtZVNsaWRlciByZWxlYXNl
XTsKLSAgICBbX3BsYXlCdXR0b24gcmVsZWFzZV07Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQot
Ci0tICh2b2lkKXNldEFyZWE6KE5TVHJhY2tpbmdBcmVhICopYXJlYQotewotICAgIGlmIChhcmVh
ID09IF9hcmVhKQotICAgICAgICByZXR1cm47Ci0gICAgW19hcmVhIHJlbGVhc2VdOwotICAgIF9h
cmVhID0gW2FyZWEgcmV0YWluXTsKLX0KLQotLSAodm9pZClrZXlEb3duOihOU0V2ZW50ICopZXZl
bnQKLXsKLSAgICBOU1N0cmluZyAqY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzID0gW2V2ZW50
IGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyc107Ci0gICAgaWYgKFtjaGFyYWN0ZXJzSWdub3Jp
bmdNb2RpZmllcnMgbGVuZ3RoXSA9PSAxKSB7Ci0gICAgICAgIHN3aXRjaCAoW2NoYXJhY3RlcnNJ
Z25vcmluZ01vZGlmaWVycyBjaGFyYWN0ZXJBdEluZGV4OjBdKSB7Ci0gICAgICAgIGNhc2UgJyAn
OgotICAgICAgICAgICAgW3NlbGYgdG9nZ2xlUGxheWluZzpuaWxdOwotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICBjYXNlIE5TVXBBcnJvd0Z1bmN0aW9uS2V5OgotICAgICAgICAgICAgaWYg
KFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TRXZlbnRNb2RpZmllckZsYWdPcHRpb24pCi0gICAg
ICAgICAgICAgICAgW3NlbGYgc2V0Vm9sdW1lOltzZWxmIG1heFZvbHVtZV1dOwotICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgIFtzZWxmIGluY3JlbWVudFZvbHVtZV07Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIGNhc2UgTlNEb3duQXJyb3dGdW5jdGlvbktleToKLSAgICAg
ICAgICAgIGlmIChbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0V2ZW50TW9kaWZpZXJGbGFnT3B0
aW9uKQotICAgICAgICAgICAgICAgIFtzZWxmIHNldFZvbHVtZTowXTsKLSAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICBbc2VsZiBkZWNyZW1lbnRWb2x1bWVdOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LSAgICB9Ci0KLSAgICBbc3VwZXIga2V5RG93bjpldmVudF07Ci19Ci0KLS0gKGlkIDxXZWJWaWRl
b0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyRGVsZWdhdGU+KWRlbGVnYXRlCi17Ci0gICAg
cmV0dXJuIF9kZWxlZ2F0ZTsKLX0KLQotLSAodm9pZClzZXREZWxlZ2F0ZTooaWQgPFdlYlZpZGVv
RnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXJEZWxlZ2F0ZT4pZGVsZWdhdGUKLXsKLSAgICBf
ZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKLX0KLQotLSAodm9pZClzY2hlZHVsZVRpbWVVcGRhdGUKLXsK
LSAgICBbTlNPYmplY3QgY2FuY2VsUHJldmlvdXNQZXJmb3JtUmVxdWVzdHNXaXRoVGFyZ2V0OnNl
bGYgc2VsZWN0b3I6QHNlbGVjdG9yKHVuc2NoZWR1bGVUaW1lVXBkYXRlKSBvYmplY3Q6c2VsZl07
Ci0KLSAgICAvLyBGaXJzdCwgdXBkYXRlIHJpZ2h0IGF3YXksIHRoZW4gc2NoZWR1bGUgZnV0dXJl
IHVwZGF0ZQotICAgIFtzZWxmIHVwZGF0ZVRpbWVdOwotICAgIFtzZWxmIHVwZGF0ZVBsYXlCdXR0
b25dOwotCi0gICAgW190aW1lbGluZVVwZGF0ZVRpbWVyIGludmFsaWRhdGVdOwotICAgIFtfdGlt
ZWxpbmVVcGRhdGVUaW1lciByZWxlYXNlXTsKLQotICAgIC8vIE5vdGUgdGhhdCB0aGlzIGNyZWF0
ZXMgYSByZXRhaW4gY3ljbGUgYmV0d2VlbiB0aGUgd2luZG93IGFuZCB1cy4KLSAgICBfdGltZWxp
bmVVcGRhdGVUaW1lciA9IFtbTlNUaW1lciB0aW1lcldpdGhUaW1lSW50ZXJ2YWw6MC4yNSB0YXJn
ZXQ6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IodXBkYXRlVGltZSkgdXNlckluZm86bmlsIHJlcGVh
dHM6WUVTXSByZXRhaW5dOwotICAgIFtbTlNSdW5Mb29wIGN1cnJlbnRSdW5Mb29wXSBhZGRUaW1l
cjpfdGltZWxpbmVVcGRhdGVUaW1lciBmb3JNb2RlOk5TUnVuTG9vcENvbW1vbk1vZGVzXTsKLX0K
LQotLSAodm9pZCl1bnNjaGVkdWxlVGltZVVwZGF0ZQotewotICAgIFtOU09iamVjdCBjYW5jZWxQ
cmV2aW91c1BlcmZvcm1SZXF1ZXN0c1dpdGhUYXJnZXQ6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3Io
dW5zY2hlZHVsZVRpbWVVcGRhdGUpIG9iamVjdDpuaWxdOwotCi0gICAgW190aW1lbGluZVVwZGF0
ZVRpbWVyIGludmFsaWRhdGVdOwotICAgIFtfdGltZWxpbmVVcGRhdGVUaW1lciByZWxlYXNlXTsK
LSAgICBfdGltZWxpbmVVcGRhdGVUaW1lciA9IG5pbDsKLX0KLQotLSAodm9pZClmYWRlV2luZG93
SW4KLXsKLSAgICBOU1dpbmRvdyAqd2luZG93ID0gW3NlbGYgd2luZG93XTsKLSAgICBpZiAoIVt3
aW5kb3cgaXNWaXNpYmxlXSkKLSAgICAgICAgW3dpbmRvdyBzZXRBbHBoYVZhbHVlOjBdOwotCi0g
ICAgW3dpbmRvdyBtYWtlS2V5QW5kT3JkZXJGcm9udDpzZWxmXTsKLSAgICBbW3dpbmRvdyBhbmlt
YXRvcl0gc2V0QWxwaGFWYWx1ZToxXTsKLSAgICBbc2VsZiBzY2hlZHVsZVRpbWVVcGRhdGVdOwot
Ci0gICAgW05TT2JqZWN0IGNhbmNlbFByZXZpb3VzUGVyZm9ybVJlcXVlc3RzV2l0aFRhcmdldDpz
ZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihmYWRlV2luZG93T3V0KSBvYmplY3Q6bmlsXTsKLSAgICBp
ZiAoIV9tb3VzZUlzSW5IVUQgJiYgW3NlbGYgcGxheWluZ10pIC8vIERvbid0IGZhZGUgb3V0IHdo
ZW4gcGF1c2VkLgotICAgICAgICBbc2VsZiBwZXJmb3JtU2VsZWN0b3I6QHNlbGVjdG9yKGZhZGVX
aW5kb3dPdXQpIHdpdGhPYmplY3Q6bmlsIGFmdGVyRGVsYXk6SFVEV2luZG93RmFkZU91dERlbGF5
XTsKLX0KLQotLSAodm9pZClmYWRlV2luZG93T3V0Ci17Ci0gICAgW05TQ3Vyc29yIHNldEhpZGRl
blVudGlsTW91c2VNb3ZlczpZRVNdOwotICAgIFtbW3NlbGYgd2luZG93XSBhbmltYXRvcl0gc2V0
QWxwaGFWYWx1ZTowXTsKLSAgICBbc2VsZiBwZXJmb3JtU2VsZWN0b3I6QHNlbGVjdG9yKHVuc2No
ZWR1bGVUaW1lVXBkYXRlKSB3aXRoT2JqZWN0Om5pbCBhZnRlckRlbGF5OjFdOwotfQotCi0tICh2
b2lkKWNsb3NlV2luZG93Ci17Ci0gICAgW05TT2JqZWN0IGNhbmNlbFByZXZpb3VzUGVyZm9ybVJl
cXVlc3RzV2l0aFRhcmdldDpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihmYWRlV2luZG93T3V0KSBv
YmplY3Q6bmlsXTsKLSAgICBbc2VsZiB1bnNjaGVkdWxlVGltZVVwZGF0ZV07Ci0gICAgTlNXaW5k
b3cgKndpbmRvdyA9IFtzZWxmIHdpbmRvd107Ci0gICAgW1t3aW5kb3cgY29udGVudFZpZXddIHJl
bW92ZVRyYWNraW5nQXJlYTpfYXJlYV07Ci0gICAgW3NlbGYgc2V0QXJlYTpuaWxdOwotICAgIFt3
aW5kb3cgY2xvc2VdOwotICAgIFt3aW5kb3cgc2V0RGVsZWdhdGU6bmlsXTsKLSAgICBbc2VsZiBz
ZXRXaW5kb3c6bmlsXTsKLX0KLQotc3RhdGljIE5TQ29udHJvbCAqY3JlYXRlTWVkaWFVSUNvbnRy
b2woTWVkaWFVSUNvbnRyb2wgY29udHJvbFR5cGUpCi17Ci0gICAgc3dpdGNoIChjb250cm9sVHlw
ZSkgewotICAgIGNhc2UgTWVkaWFVSUNvbnRyb2w6OlRpbWVsaW5lOiB7Ci0gICAgICAgIE5TU2xp
ZGVyICpzbGlkZXIgPSBbW1FUSFVEVGltZWxpbmUgYWxsb2NdIGluaXRdOwotICAgICAgICBbW3Ns
aWRlciBjZWxsXSBzZXRDb250aW51b3VzOllFU107Ci0gICAgICAgIHJldHVybiBzbGlkZXI7Ci0g
ICAgfQotICAgIGNhc2UgTWVkaWFVSUNvbnRyb2w6OlNsaWRlcjogewotICAgICAgICBOU0J1dHRv
biAqc2xpZGVyID0gW1tRVEhVRFNsaWRlciBhbGxvY10gaW5pdF07Ci0gICAgICAgIFtbc2xpZGVy
IGNlbGxdIHNldENvbnRpbnVvdXM6WUVTXTsKLSAgICAgICAgcmV0dXJuIHNsaWRlcjsKLSAgICB9
Ci0gICAgY2FzZSBNZWRpYVVJQ29udHJvbDo6UGxheVBhdXNlQnV0dG9uOiB7Ci0gICAgICAgIE5T
QnV0dG9uICpidXR0b24gPSBbW1FUSFVEQnV0dG9uIGFsbG9jXSBpbml0XTsKLSAgICAgICAgW2J1
dHRvbiBzZXRJbWFnZTpbTlNJbWFnZSBpbWFnZU5hbWVkOkAiTlNQbGF5VGVtcGxhdGUiXV07Ci0g
ICAgICAgIFtidXR0b24gc2V0QWx0ZXJuYXRlSW1hZ2U6W05TSW1hZ2UgaW1hZ2VOYW1lZDpAIk5T
UGF1c2VRVFByaXZhdGVUZW1wbGF0ZSJdXTsKLQotICAgICAgICBbW2J1dHRvbiBjZWxsXSBzZXRT
aG93c1N0YXRlQnk6TlNDb250ZW50c0NlbGxNYXNrXTsKLSAgICAgICAgW2J1dHRvbiBzZXRCb3Jk
ZXJlZDpOT107Ci0gICAgICAgIHJldHVybiBidXR0b247Ci0gICAgfQotICAgIGNhc2UgTWVkaWFV
SUNvbnRyb2w6OkV4aXRGdWxsc2NyZWVuQnV0dG9uOiB7Ci0gICAgICAgIE5TQnV0dG9uICpidXR0
b24gPSBbW1FUSFVEQnV0dG9uIGFsbG9jXSBpbml0XTsKLSAgICAgICAgW2J1dHRvbiBzZXRJbWFn
ZTpbTlNJbWFnZSBpbWFnZU5hbWVkOkAiTlNFeGl0RnVsbFNjcmVlblRlbXBsYXRlIl1dOwotICAg
ICAgICBbYnV0dG9uIHNldEJvcmRlcmVkOk5PXTsKLSAgICAgICAgcmV0dXJuIGJ1dHRvbjsKLSAg
ICB9Ci0gICAgY2FzZSBNZWRpYVVJQ29udHJvbDo6UmV3aW5kQnV0dG9uOiB7Ci0gICAgICAgIE5T
QnV0dG9uICpidXR0b24gPSBbW1FUSFVEQnV0dG9uIGFsbG9jXSBpbml0XTsKLSAgICAgICAgW2J1
dHRvbiBzZXRJbWFnZTpbTlNJbWFnZSBpbWFnZU5hbWVkOkAiTlNSZXdpbmRUZW1wbGF0ZSJdXTsK
LSAgICAgICAgW2J1dHRvbiBzZXRCb3JkZXJlZDpOT107Ci0gICAgICAgIHJldHVybiBidXR0b247
Ci0gICAgfQotICAgIGNhc2UgTWVkaWFVSUNvbnRyb2w6OkZhc3RGb3J3YXJkQnV0dG9uOiB7Ci0g
ICAgICAgIE5TQnV0dG9uICpidXR0b24gPSBbW1FUSFVEQnV0dG9uIGFsbG9jXSBpbml0XTsKLSAg
ICAgICAgW2J1dHRvbiBzZXRJbWFnZTpbTlNJbWFnZSBpbWFnZU5hbWVkOkAiTlNGYXN0Rm9yd2Fy
ZFRlbXBsYXRlIl1dOwotICAgICAgICBbYnV0dG9uIHNldEJvcmRlcmVkOk5PXTsKLSAgICAgICAg
cmV0dXJuIGJ1dHRvbjsKLSAgICB9Ci0gICAgY2FzZSBNZWRpYVVJQ29udHJvbDo6Vm9sdW1lVXBC
dXR0b246IHsKLSAgICAgICAgTlNCdXR0b24gKmJ1dHRvbiA9IFtbUVRIVURCdXR0b24gYWxsb2Nd
IGluaXRdOwotICAgICAgICBbYnV0dG9uIHNldEltYWdlOltOU0ltYWdlIGltYWdlTmFtZWQ6QCJO
U0F1ZGlvT3V0cHV0Vm9sdW1lSGlnaFRlbXBsYXRlIl1dOwotICAgICAgICBbYnV0dG9uIHNldEJv
cmRlcmVkOk5PXTsKLSAgICAgICAgcmV0dXJuIGJ1dHRvbjsKLSAgICB9Ci0gICAgY2FzZSBNZWRp
YVVJQ29udHJvbDo6Vm9sdW1lRG93bkJ1dHRvbjogewotICAgICAgICBOU0J1dHRvbiAqYnV0dG9u
ID0gW1tRVEhVREJ1dHRvbiBhbGxvY10gaW5pdF07Ci0gICAgICAgIFtidXR0b24gc2V0SW1hZ2U6
W05TSW1hZ2UgaW1hZ2VOYW1lZDpAIk5TQXVkaW9PdXRwdXRWb2x1bWVMb3dUZW1wbGF0ZSJdXTsK
LSAgICAgICAgW2J1dHRvbiBzZXRCb3JkZXJlZDpOT107Ci0gICAgICAgIHJldHVybiBidXR0b247
Ci0gICAgfQotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBu
aWw7Ci19Ci0KLXN0YXRpYyBOU0NvbnRyb2wgKmNyZWF0ZUNvbnRyb2xXaXRoTWVkaWFVSUNvbnRy
b2xUeXBlKE1lZGlhVUlDb250cm9sIGNvbnRyb2xUeXBlLCBOU1JlY3QgZnJhbWUpCi17Ci0gICAg
TlNDb250cm9sICpjb250cm9sID0gY3JlYXRlTWVkaWFVSUNvbnRyb2woY29udHJvbFR5cGUpOwot
ICAgIGNvbnRyb2wuZnJhbWUgPSBmcmFtZTsKLSAgICByZXR1cm4gY29udHJvbDsKLX0KLQotc3Rh
dGljIE5TVGV4dEZpZWxkICpjcmVhdGVUaW1lVGV4dEZpZWxkKE5TUmVjdCBmcmFtZSkKLXsKLSAg
ICBOU1RleHRGaWVsZCAqdGV4dEZpZWxkID0gW1tOU1RleHRGaWVsZCBhbGxvY10gaW5pdFdpdGhG
cmFtZTpmcmFtZV07Ci0gICAgW3RleHRGaWVsZCBzZXRUZXh0Q29sb3I6W05TQ29sb3Igd2hpdGVD
b2xvcl1dOwotICAgIFt0ZXh0RmllbGQgc2V0Qm9yZGVyZWQ6Tk9dOwotICAgIFt0ZXh0RmllbGQg
c2V0Rm9udDpbTlNGb250IGJvbGRTeXN0ZW1Gb250T2ZTaXplOjEwXV07Ci0gICAgW3RleHRGaWVs
ZCBzZXREcmF3c0JhY2tncm91bmQ6Tk9dOwotICAgIFt0ZXh0RmllbGQgc2V0QmV6ZWxlZDpOT107
Ci0gICAgW3RleHRGaWVsZCBzZXRFZGl0YWJsZTpOT107Ci0gICAgW3RleHRGaWVsZCBzZXRTZWxl
Y3RhYmxlOk5PXTsKLSAgICByZXR1cm4gdGV4dEZpZWxkOwotfQotCi1zdGF0aWMgTlNWaWV3ICpj
cmVhdGVNZWRpYVVJQmFja2dyb3VuZFZpZXcoKQotewotICAgIGlkIHZpZXcgPSBbW1FUSFVEQmFj
a2dyb3VuZFZpZXcgYWxsb2NdIGluaXRdOwotCi0gICAgY29uc3QgQ0dGbG9hdCBxdWlja1RpbWVQ
bGF5ZXJIVURIZWlnaHQgPSA1OTsKLSAgICBjb25zdCBDR0Zsb2F0IHF1aWNrVGltZVBsYXllckhV
RENvbnRlbnRCb3JkZXJQb3NpdGlvbiA9IDM4OwotCi0gICAgQUxMT1dfREVQUkVDQVRFRF9ERUNM
QVJBVElPTlNfQkVHSU4KLSAgICBbdmlldyBzZXRDb250ZW50Qm9yZGVyUG9zaXRpb246cXVpY2tU
aW1lUGxheWVySFVEQ29udGVudEJvcmRlclBvc2l0aW9uIC8gcXVpY2tUaW1lUGxheWVySFVESGVp
Z2h0XTsKLSAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKLQotICAgIHJldHVy
biB2aWV3OwotfQotCi0tICh2b2lkKXdpbmRvd0RpZExvYWQKLXsKLSAgICBzdGF0aWMgY29uc3Qg
Q0dGbG9hdCBob3Jpem9udGFsTWFyZ2luID0gMTA7Ci0gICAgc3RhdGljIGNvbnN0IENHRmxvYXQg
cGxheUJ1dHRvbldpZHRoID0gNDE7Ci0gICAgc3RhdGljIGNvbnN0IENHRmxvYXQgcGxheUJ1dHRv
bkhlaWdodCA9IDM1OwotICAgIHN0YXRpYyBjb25zdCBDR0Zsb2F0IHBsYXlCdXR0b25Ub3BNYXJn
aW4gPSA0OwotICAgIHN0YXRpYyBjb25zdCBDR0Zsb2F0IHZvbHVtZVNsaWRlcldpZHRoID0gNTA7
Ci0gICAgc3RhdGljIGNvbnN0IENHRmxvYXQgdm9sdW1lU2xpZGVySGVpZ2h0ID0gMTM7Ci0gICAg
c3RhdGljIGNvbnN0IENHRmxvYXQgdm9sdW1lQnV0dG9uV2lkdGggPSAxODsKLSAgICBzdGF0aWMg
Y29uc3QgQ0dGbG9hdCB2b2x1bWVCdXR0b25IZWlnaHQgPSAxNjsKLSAgICBzdGF0aWMgY29uc3Qg
Q0dGbG9hdCB2b2x1bWVVcEJ1dHRvbkxlZnRNYXJnaW4gPSA0OwotICAgIHN0YXRpYyBjb25zdCBD
R0Zsb2F0IHZvbHVtZUNvbnRyb2xzVG9wTWFyZ2luID0gMTM7Ci0gICAgc3RhdGljIGNvbnN0IENH
RmxvYXQgZXhpdEZ1bGxzY3JlZW5CdXR0b25XaWR0aCA9IDI1OwotICAgIHN0YXRpYyBjb25zdCBD
R0Zsb2F0IGV4aXRGdWxsc2NyZWVuQnV0dG9uSGVpZ2h0ID0gMjE7Ci0gICAgc3RhdGljIGNvbnN0
IENHRmxvYXQgZXhpdEZ1bGxzY3JlZW5CdXR0b25Ub3BNYXJnaW4gPSAxMTsKLSAgICBzdGF0aWMg
Y29uc3QgQ0dGbG9hdCB0aW1lbGluZVdpZHRoID0gMzE1OwotICAgIHN0YXRpYyBjb25zdCBDR0Zs
b2F0IHRpbWVsaW5lSGVpZ2h0ID0gMTQ7Ci0gICAgc3RhdGljIGNvbnN0IENHRmxvYXQgdGltZWxp
bmVCb3R0b21NYXJnaW4gPSA3OwotICAgIHN0YXRpYyBjb25zdCBDR0Zsb2F0IHRpbWVUZXh0Rmll
bGRXaWR0aCA9IDU0OwotICAgIHN0YXRpYyBjb25zdCBDR0Zsb2F0IHRpbWVUZXh0RmllbGRIZWln
aHQgPSAxMzsKLSAgICBzdGF0aWMgY29uc3QgQ0dGbG9hdCB0aW1lVGV4dEZpZWxkSG9yaXpvbnRh
bE1hcmdpbiA9IDc7Ci0KLSAgICBpZiAoIVFUS2l0TGlicmFyeSgpCi0gICAgICAgIHx8ICFnZXRR
VEhVREJhY2tncm91bmRWaWV3Q2xhc3MoKQotICAgICAgICB8fCAhZ2V0UVRIVURCdXR0b25DbGFz
cygpCi0gICAgICAgIHx8ICFnZXRRVEhVRFNsaWRlckNsYXNzKCkKLSAgICAgICAgfHwgIWdldFFU
SFVEVGltZWxpbmVDbGFzcygpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBOU1dpbmRvdyAqd2lu
ZG93ID0gW3NlbGYgd2luZG93XTsKLSAgICBBU1NFUlQod2luZG93KTsKLQotICAgIE5TVmlldyAq
YmFja2dyb3VuZCA9IGNyZWF0ZU1lZGlhVUlCYWNrZ3JvdW5kVmlldygpOwotCi0gICAgW3dpbmRv
dyBzZXRDb250ZW50VmlldzpiYWNrZ3JvdW5kXTsKLSAgICBfYXJlYSA9IFtbTlNUcmFja2luZ0Fy
ZWEgYWxsb2NdIGluaXRXaXRoUmVjdDpbYmFja2dyb3VuZCBib3VuZHNdIG9wdGlvbnM6TlNUcmFj
a2luZ01vdXNlRW50ZXJlZEFuZEV4aXRlZCB8IE5TVHJhY2tpbmdBY3RpdmVBbHdheXMgb3duZXI6
c2VsZiB1c2VySW5mbzpuaWxdOwotICAgIFtiYWNrZ3JvdW5kIGFkZFRyYWNraW5nQXJlYTpfYXJl
YV07Ci0gICAgW2JhY2tncm91bmQgcmVsZWFzZV07ICAgIAotCi0gICAgTlNWaWV3ICpjb250ZW50
VmlldyA9IFt3aW5kb3cgY29udGVudFZpZXddOwotCi0gICAgQ0dGbG9hdCBjZW50ZXIgPSBDR0Zs
b29yKCh3aW5kb3dXaWR0aCAtIHBsYXlCdXR0b25XaWR0aCkgLyAyKTsKLSAgICBfcGxheUJ1dHRv
biA9IChOU0J1dHRvbiAqKWNyZWF0ZUNvbnRyb2xXaXRoTWVkaWFVSUNvbnRyb2xUeXBlKE1lZGlh
VUlDb250cm9sOjpQbGF5UGF1c2VCdXR0b24sIE5TTWFrZVJlY3QoY2VudGVyLCB3aW5kb3dIZWln
aHQgLSBwbGF5QnV0dG9uVG9wTWFyZ2luIC0gcGxheUJ1dHRvbkhlaWdodCwgcGxheUJ1dHRvbldp
ZHRoLCBwbGF5QnV0dG9uSGVpZ2h0KSk7Ci0gICAgQVNTRVJUKFtfcGxheUJ1dHRvbiBpc0tpbmRP
ZkNsYXNzOltOU0J1dHRvbiBjbGFzc11dKTsKLSAgICBbX3BsYXlCdXR0b24gc2V0VGFyZ2V0OnNl
bGZdOwotICAgIFtfcGxheUJ1dHRvbiBzZXRBY3Rpb246QHNlbGVjdG9yKHRvZ2dsZVBsYXlpbmc6
KV07Ci0gICAgW2NvbnRlbnRWaWV3IGFkZFN1YnZpZXc6X3BsYXlCdXR0b25dOwotCi0gICAgQ0dG
bG9hdCBjbG9zZVRvUmlnaHQgPSB3aW5kb3dXaWR0aCAtIGhvcml6b250YWxNYXJnaW4gLSBleGl0
RnVsbHNjcmVlbkJ1dHRvbldpZHRoOwotICAgIE5TQ29udHJvbCAqZXhpdEZ1bGxzY3JlZW5CdXR0
b24gPSBjcmVhdGVDb250cm9sV2l0aE1lZGlhVUlDb250cm9sVHlwZShNZWRpYVVJQ29udHJvbDo6
RXhpdEZ1bGxzY3JlZW5CdXR0b24sIE5TTWFrZVJlY3QoY2xvc2VUb1JpZ2h0LCB3aW5kb3dIZWln
aHQgLSBleGl0RnVsbHNjcmVlbkJ1dHRvblRvcE1hcmdpbiAtIGV4aXRGdWxsc2NyZWVuQnV0dG9u
SGVpZ2h0LCBleGl0RnVsbHNjcmVlbkJ1dHRvbldpZHRoLCBleGl0RnVsbHNjcmVlbkJ1dHRvbkhl
aWdodCkpOwotICAgIFtleGl0RnVsbHNjcmVlbkJ1dHRvbiBzZXRBY3Rpb246QHNlbGVjdG9yKGV4
aXRGdWxsc2NyZWVuOildOwotICAgIFtleGl0RnVsbHNjcmVlbkJ1dHRvbiBzZXRUYXJnZXQ6c2Vs
Zl07Ci0gICAgW2NvbnRlbnRWaWV3IGFkZFN1YnZpZXc6ZXhpdEZ1bGxzY3JlZW5CdXR0b25dOwot
ICAgIFtleGl0RnVsbHNjcmVlbkJ1dHRvbiByZWxlYXNlXTsKLSAgICAKLSAgICBDR0Zsb2F0IHZv
bHVtZUNvbnRyb2xzQm90dG9tID0gd2luZG93SGVpZ2h0IC0gdm9sdW1lQ29udHJvbHNUb3BNYXJn
aW4gLSB2b2x1bWVCdXR0b25IZWlnaHQ7Ci0gICAgQ0dGbG9hdCBsZWZ0ID0gaG9yaXpvbnRhbE1h
cmdpbjsKLSAgICBOU0NvbnRyb2wgKnZvbHVtZURvd25CdXR0b24gPSBjcmVhdGVDb250cm9sV2l0
aE1lZGlhVUlDb250cm9sVHlwZShNZWRpYVVJQ29udHJvbDo6Vm9sdW1lRG93bkJ1dHRvbiwgTlNN
YWtlUmVjdChsZWZ0LCB2b2x1bWVDb250cm9sc0JvdHRvbSwgdm9sdW1lQnV0dG9uV2lkdGgsIHZv
bHVtZUJ1dHRvbkhlaWdodCkpOwotICAgIFtjb250ZW50VmlldyBhZGRTdWJ2aWV3OnZvbHVtZURv
d25CdXR0b25dOwotICAgIFt2b2x1bWVEb3duQnV0dG9uIHNldFRhcmdldDpzZWxmXTsKLSAgICBb
dm9sdW1lRG93bkJ1dHRvbiBzZXRBY3Rpb246QHNlbGVjdG9yKHNldFZvbHVtZVRvWmVybzopXTsK
LSAgICBbdm9sdW1lRG93bkJ1dHRvbiByZWxlYXNlXTsKLQotICAgIGxlZnQgKz0gdm9sdW1lQnV0
dG9uV2lkdGg7Ci0gICAgX3ZvbHVtZVNsaWRlciA9IGNyZWF0ZUNvbnRyb2xXaXRoTWVkaWFVSUNv
bnRyb2xUeXBlKE1lZGlhVUlDb250cm9sOjpTbGlkZXIsIE5TTWFrZVJlY3QobGVmdCwgdm9sdW1l
Q29udHJvbHNCb3R0b20gKyBDR0Zsb29yKCh2b2x1bWVCdXR0b25IZWlnaHQgLSB2b2x1bWVTbGlk
ZXJIZWlnaHQpIC8gMiksIHZvbHVtZVNsaWRlcldpZHRoLCB2b2x1bWVTbGlkZXJIZWlnaHQpKTsK
LSAgICBbX3ZvbHVtZVNsaWRlciBzZXRWYWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTpb
c2VsZiBtYXhWb2x1bWVdXSBmb3JLZXk6QCJtYXhWYWx1ZSJdOwotICAgIFtfdm9sdW1lU2xpZGVy
IHNldFRhcmdldDpzZWxmXTsKLSAgICBbX3ZvbHVtZVNsaWRlciBzZXRBY3Rpb246QHNlbGVjdG9y
KHZvbHVtZUNoYW5nZWQ6KV07Ci0gICAgW2NvbnRlbnRWaWV3IGFkZFN1YnZpZXc6X3ZvbHVtZVNs
aWRlcl07Ci0KLSAgICBsZWZ0ICs9IHZvbHVtZVNsaWRlcldpZHRoICsgdm9sdW1lVXBCdXR0b25M
ZWZ0TWFyZ2luOwotICAgIE5TQ29udHJvbCAqdm9sdW1lVXBCdXR0b24gPSBjcmVhdGVDb250cm9s
V2l0aE1lZGlhVUlDb250cm9sVHlwZShNZWRpYVVJQ29udHJvbDo6Vm9sdW1lVXBCdXR0b24sIE5T
TWFrZVJlY3QobGVmdCwgdm9sdW1lQ29udHJvbHNCb3R0b20sIHZvbHVtZUJ1dHRvbldpZHRoLCB2
b2x1bWVCdXR0b25IZWlnaHQpKTsKLSAgICBbdm9sdW1lVXBCdXR0b24gc2V0VGFyZ2V0OnNlbGZd
OwotICAgIFt2b2x1bWVVcEJ1dHRvbiBzZXRBY3Rpb246QHNlbGVjdG9yKHNldFZvbHVtZVRvTWF4
aW11bTopXTsKLSAgICBbY29udGVudFZpZXcgYWRkU3Vidmlldzp2b2x1bWVVcEJ1dHRvbl07Ci0g
ICAgW3ZvbHVtZVVwQnV0dG9uIHJlbGVhc2VdOwotCi0gICAgX3RpbWVsaW5lID0gY3JlYXRlTWVk
aWFVSUNvbnRyb2woTWVkaWFVSUNvbnRyb2w6OlRpbWVsaW5lKTsKLQotICAgIFtfdGltZWxpbmUg
c2V0VGFyZ2V0OnNlbGZdOwotICAgIFtfdGltZWxpbmUgc2V0QWN0aW9uOkBzZWxlY3Rvcih0aW1l
bGluZVBvc2l0aW9uQ2hhbmdlZDopXTsKLSAgICBbX3RpbWVsaW5lIHNldEZyYW1lOk5TTWFrZVJl
Y3QoQ0dGbG9vcigod2luZG93V2lkdGggLSB0aW1lbGluZVdpZHRoKSAvIDIpLCB0aW1lbGluZUJv
dHRvbU1hcmdpbiwgdGltZWxpbmVXaWR0aCwgdGltZWxpbmVIZWlnaHQpXTsKLSAgICBbY29udGVu
dFZpZXcgYWRkU3VidmlldzpfdGltZWxpbmVdOwotCi0gICAgX2VsYXBzZWRUaW1lVGV4dCA9IGNy
ZWF0ZVRpbWVUZXh0RmllbGQoTlNNYWtlUmVjdCh0aW1lVGV4dEZpZWxkSG9yaXpvbnRhbE1hcmdp
biwgdGltZWxpbmVCb3R0b21NYXJnaW4sIHRpbWVUZXh0RmllbGRXaWR0aCwgdGltZVRleHRGaWVs
ZEhlaWdodCkpOwotICAgIFtfZWxhcHNlZFRpbWVUZXh0IHNldEFsaWdubWVudDpOU1RleHRBbGln
bm1lbnRMZWZ0XTsKLSAgICBbY29udGVudFZpZXcgYWRkU3VidmlldzpfZWxhcHNlZFRpbWVUZXh0
XTsKLQotICAgIF9yZW1haW5pbmdUaW1lVGV4dCA9IGNyZWF0ZVRpbWVUZXh0RmllbGQoTlNNYWtl
UmVjdCh3aW5kb3dXaWR0aCAtIHRpbWVUZXh0RmllbGRIb3Jpem9udGFsTWFyZ2luIC0gdGltZVRl
eHRGaWVsZFdpZHRoLCB0aW1lbGluZUJvdHRvbU1hcmdpbiwgdGltZVRleHRGaWVsZFdpZHRoLCB0
aW1lVGV4dEZpZWxkSGVpZ2h0KSk7Ci0gICAgW19yZW1haW5pbmdUaW1lVGV4dCBzZXRBbGlnbm1l
bnQ6TlNUZXh0QWxpZ25tZW50UmlnaHRdOwotICAgIFtjb250ZW50VmlldyBhZGRTdWJ2aWV3Ol9y
ZW1haW5pbmdUaW1lVGV4dF07Ci0KLSAgICBbd2luZG93IHJlY2FsY3VsYXRlS2V5Vmlld0xvb3Bd
OwotICAgIFt3aW5kb3cgc2V0SW5pdGlhbEZpcnN0UmVzcG9uZGVyOl9wbGF5QnV0dG9uXTsKLSAg
ICBbd2luZG93IGNlbnRlcl07Ci19Ci0KLS0gKHZvaWQpdXBkYXRlVm9sdW1lCi17Ci0gICAgW192
b2x1bWVTbGlkZXIgc2V0RmxvYXRWYWx1ZTpbc2VsZiB2b2x1bWVdXTsKLX0KLQotLSAodm9pZCl1
cGRhdGVUaW1lCi17Ci0gICAgW3NlbGYgdXBkYXRlVm9sdW1lXTsKLQotICAgIFtfdGltZWxpbmUg
c2V0RmxvYXRWYWx1ZTpbc2VsZiBjdXJyZW50VGltZV1dOwotICAgIFtfdGltZWxpbmUgc2V0VmFs
dWU6W05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6W3NlbGYgZHVyYXRpb25dXSBmb3JLZXk6QCJt
YXhWYWx1ZSJdOwotCi0gICAgW19yZW1haW5pbmdUaW1lVGV4dCBzZXRTdHJpbmdWYWx1ZTpbc2Vs
ZiByZW1haW5pbmdUaW1lVGV4dF1dOwotICAgIFtfZWxhcHNlZFRpbWVUZXh0IHNldFN0cmluZ1Zh
bHVlOltzZWxmIGVsYXBzZWRUaW1lVGV4dF1dOwotfQotCi0tICh2b2lkKWVuZFNjcnViYmluZwot
ewotICAgIEFTU0VSVChfaXNTY3J1YmJpbmcpOwotICAgIF9pc1NjcnViYmluZyA9IE5POwotICAg
IGlmIChIVE1MVmlkZW9FbGVtZW50KiB2aWRlb0VsZW1lbnQgPSBbX2RlbGVnYXRlIHZpZGVvRWxl
bWVudF0pCi0gICAgICAgIHZpZGVvRWxlbWVudC0+ZW5kU2NydWJiaW5nKCk7Ci19Ci0KLS0gKHZv
aWQpdGltZWxpbmVQb3NpdGlvbkNoYW5nZWQ6KGlkKXNlbmRlcgotewotICAgIFVOVVNFRF9QQVJB
TShzZW5kZXIpOwotICAgIFtzZWxmIHNldEN1cnJlbnRUaW1lOltfdGltZWxpbmUgZmxvYXRWYWx1
ZV1dOwotICAgIGlmICghX2lzU2NydWJiaW5nKSB7Ci0gICAgICAgIF9pc1NjcnViYmluZyA9IFlF
UzsKLSAgICAgICAgaWYgKEhUTUxWaWRlb0VsZW1lbnQqIHZpZGVvRWxlbWVudCA9IFtfZGVsZWdh
dGUgdmlkZW9FbGVtZW50XSkKLSAgICAgICAgICAgIHZpZGVvRWxlbWVudC0+YmVnaW5TY3J1YmJp
bmcoKTsKLSAgICAgICAgc3RhdGljIE5TQXJyYXkgKmVuZFNjcnViYmluZ01vZGVzID0gW1tOU0Fy
cmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6TlNEZWZhdWx0UnVuTG9vcE1vZGUsIE5TTW9kYWxQ
YW5lbFJ1bkxvb3BNb2RlLCBuaWxdOwotICAgICAgICAvLyBTY2hlZHVsZSAtZW5kU2NydWJiaW5n
IGZvciB3aGVuIGxlYXZpbmcgbW91c2UgdHJhY2tpbmcgbW9kZS4KLSAgICAgICAgW1tOU1J1bkxv
b3AgY3VycmVudFJ1bkxvb3BdIHBlcmZvcm1TZWxlY3RvcjpAc2VsZWN0b3IoZW5kU2NydWJiaW5n
KSB0YXJnZXQ6c2VsZiBhcmd1bWVudDpuaWwgb3JkZXI6MCBtb2RlczplbmRTY3J1YmJpbmdNb2Rl
c107Ci0gICAgfQotfQotCi0tIChmbG9hdCljdXJyZW50VGltZQotewotICAgIHJldHVybiBbX2Rl
bGVnYXRlIHZpZGVvRWxlbWVudF0gPyBbX2RlbGVnYXRlIHZpZGVvRWxlbWVudF0tPmN1cnJlbnRU
aW1lKCkgOiAwOwotfQotCi0tICh2b2lkKXNldEN1cnJlbnRUaW1lOihmbG9hdCljdXJyZW50VGlt
ZQotewotICAgIGlmICghW19kZWxlZ2F0ZSB2aWRlb0VsZW1lbnRdKQotICAgICAgICByZXR1cm47
Ci0gICAgW19kZWxlZ2F0ZSB2aWRlb0VsZW1lbnRdLT5zZXRDdXJyZW50VGltZShjdXJyZW50VGlt
ZSk7Ci0gICAgW3NlbGYgdXBkYXRlVGltZV07Ci19Ci0KLS0gKGRvdWJsZSlkdXJhdGlvbgotewot
ICAgIHJldHVybiBbX2RlbGVnYXRlIHZpZGVvRWxlbWVudF0gPyBbX2RlbGVnYXRlIHZpZGVvRWxl
bWVudF0tPmR1cmF0aW9uKCkgOiAwOwotfQotCi0tIChmbG9hdCltYXhWb2x1bWUKLXsKLSAgICAv
LyBTZXQgdGhlIHZvbHVtZSBzbGlkZXIgcmVzb2x1dGlvbgotICAgIHJldHVybiAxMDA7Ci19Ci0K
LS0gKHZvaWQpdm9sdW1lQ2hhbmdlZDooaWQpc2VuZGVyCi17Ci0gICAgVU5VU0VEX1BBUkFNKHNl
bmRlcik7Ci0gICAgW3NlbGYgc2V0Vm9sdW1lOltfdm9sdW1lU2xpZGVyIGZsb2F0VmFsdWVdXTsK
LX0KLQotLSAodm9pZClzZXRWb2x1bWVUb1plcm86KGlkKXNlbmRlcgotewotICAgIFVOVVNFRF9Q
QVJBTShzZW5kZXIpOwotICAgIFtzZWxmIHNldFZvbHVtZTowXTsKLX0KLQotLSAodm9pZClzZXRW
b2x1bWVUb01heGltdW06KGlkKXNlbmRlcgotewotICAgIFVOVVNFRF9QQVJBTShzZW5kZXIpOwot
ICAgIFtzZWxmIHNldFZvbHVtZTpbc2VsZiBtYXhWb2x1bWVdXTsKLX0KLQotLSAodm9pZClkZWNy
ZW1lbnRWb2x1bWUKLXsKLSAgICBpZiAoIVtfZGVsZWdhdGUgdmlkZW9FbGVtZW50XSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgZmxvYXQgdm9sdW1lID0gW3NlbGYgdm9sdW1lXSAtIDEwOwotICAg
IFtzZWxmIHNldFZvbHVtZTpzdGQ6Om1heCh2b2x1bWUsIDAuMGYpXTsKLX0KLQotLSAodm9pZClp
bmNyZW1lbnRWb2x1bWUKLXsKLSAgICBpZiAoIVtfZGVsZWdhdGUgdmlkZW9FbGVtZW50XSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgZmxvYXQgdm9sdW1lID0gW3NlbGYgdm9sdW1lXSArIDEwOwot
ICAgIFtzZWxmIHNldFZvbHVtZTpzdGQ6Om1pbih2b2x1bWUsIFtzZWxmIG1heFZvbHVtZV0pXTsK
LX0KLQotLSAoZmxvYXQpdm9sdW1lCi17Ci0gICAgcmV0dXJuIFtfZGVsZWdhdGUgdmlkZW9FbGVt
ZW50XSA/IFtfZGVsZWdhdGUgdmlkZW9FbGVtZW50XS0+dm9sdW1lKCkgKiBbc2VsZiBtYXhWb2x1
bWVdIDogMDsKLX0KLQotLSAodm9pZClzZXRWb2x1bWU6KGZsb2F0KXZvbHVtZQotewotICAgIGlm
ICghW19kZWxlZ2F0ZSB2aWRlb0VsZW1lbnRdKQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKFtf
ZGVsZWdhdGUgdmlkZW9FbGVtZW50XS0+bXV0ZWQoKSkKLSAgICAgICAgW19kZWxlZ2F0ZSB2aWRl
b0VsZW1lbnRdLT5zZXRNdXRlZChmYWxzZSk7Ci0gICAgW19kZWxlZ2F0ZSB2aWRlb0VsZW1lbnRd
LT5zZXRWb2x1bWUodm9sdW1lIC8gW3NlbGYgbWF4Vm9sdW1lXSk7Ci0gICAgW3NlbGYgdXBkYXRl
Vm9sdW1lXTsKLX0KLQotLSAodm9pZCl1cGRhdGVQbGF5QnV0dG9uCi17Ci0gICAgW19wbGF5QnV0
dG9uIHNldEludFZhbHVlOltzZWxmIHBsYXlpbmddXTsKLX0KLQotLSAodm9pZCl1cGRhdGVSYXRl
Ci17Ci0gICAgQk9PTCBwbGF5aW5nID0gW3NlbGYgcGxheWluZ107Ci0KLSAgICAvLyBLZWVwIHRo
ZSBIVUQgdmlzaWJsZSB3aGVuIHBhdXNlZC4KLSAgICBpZiAoIXBsYXlpbmcpCi0gICAgICAgIFtz
ZWxmIGZhZGVXaW5kb3dJbl07Ci0gICAgZWxzZSBpZiAoIV9tb3VzZUlzSW5IVUQpIHsKLSAgICAg
ICAgW05TT2JqZWN0IGNhbmNlbFByZXZpb3VzUGVyZm9ybVJlcXVlc3RzV2l0aFRhcmdldDpzZWxm
IHNlbGVjdG9yOkBzZWxlY3RvcihmYWRlV2luZG93T3V0KSBvYmplY3Q6bmlsXTsKLSAgICAgICAg
W3NlbGYgcGVyZm9ybVNlbGVjdG9yOkBzZWxlY3RvcihmYWRlV2luZG93T3V0KSB3aXRoT2JqZWN0
Om5pbCBhZnRlckRlbGF5OkhVRFdpbmRvd0ZhZGVPdXREZWxheV07Ci0gICAgfQotICAgIFtzZWxm
IHVwZGF0ZVBsYXlCdXR0b25dOwotfQotCi0tICh2b2lkKXRvZ2dsZVBsYXlpbmc6KGlkKXNlbmRl
cgotewotICAgIFVOVVNFRF9QQVJBTShzZW5kZXIpOwotICAgIFtzZWxmIHNldFBsYXlpbmc6IVtz
ZWxmIHBsYXlpbmddXTsKLX0KLQotLSAoQk9PTClwbGF5aW5nCi17Ci0gICAgSFRNTFZpZGVvRWxl
bWVudCogdmlkZW9FbGVtZW50ID0gW19kZWxlZ2F0ZSB2aWRlb0VsZW1lbnRdOwotICAgIGlmICgh
dmlkZW9FbGVtZW50KQotICAgICAgICByZXR1cm4gTk87Ci0KLSAgICByZXR1cm4gIXZpZGVvRWxl
bWVudC0+Y2FuUGxheSgpOwotfQotCi0tICh2b2lkKXNldFBsYXlpbmc6KEJPT0wpcGxheWluZwot
ewotICAgIEhUTUxWaWRlb0VsZW1lbnQqIHZpZGVvRWxlbWVudCA9IFtfZGVsZWdhdGUgdmlkZW9F
bGVtZW50XTsKLQotICAgIGlmICghdmlkZW9FbGVtZW50KQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBpZiAocGxheWluZykKLSAgICAgICAgdmlkZW9FbGVtZW50LT5wbGF5KCk7Ci0gICAgZWxzZQot
ICAgICAgICB2aWRlb0VsZW1lbnQtPnBhdXNlKCk7Ci19Ci0KLXN0YXRpYyBOU1N0cmluZyAqdGlt
ZVRvU3RyaW5nKGRvdWJsZSB0aW1lKQotewotICAgIEFTU0VSVF9BUkcodGltZSwgdGltZSA+PSAw
KTsKLQotICAgIGlmICghc3RkOjppc2Zpbml0ZSh0aW1lKSkKLSAgICAgICAgdGltZSA9IDA7Ci0K
LSAgICBpbnQgc2Vjb25kcyA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoc3RkOjphYnModGltZSkp
OwotICAgIGludCBob3VycyA9IHNlY29uZHMgLyAoNjAgKiA2MCk7Ci0gICAgaW50IG1pbnV0ZXMg
PSAoc2Vjb25kcyAvIDYwKSAlIDYwOwotICAgIHNlY29uZHMgJT0gNjA7Ci0KLSAgICBpZiAoaG91
cnMpCi0gICAgICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVkOiUwMmQ6
JTAyZCIsIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzXTsKLQotICAgIHJldHVybiBbTlNTdHJpbmcg
c3RyaW5nV2l0aEZvcm1hdDpAIiUwMmQ6JTAyZCIsIG1pbnV0ZXMsIHNlY29uZHNdOyAgICAKLX0K
LQotLSAoTlNTdHJpbmcgKilyZW1haW5pbmdUaW1lVGV4dAotewotICAgIEhUTUxWaWRlb0VsZW1l
bnQqIHZpZGVvRWxlbWVudCA9IFtfZGVsZWdhdGUgdmlkZW9FbGVtZW50XTsKLSAgICBpZiAoIXZp
ZGVvRWxlbWVudCkKLSAgICAgICAgcmV0dXJuIEAiIjsKLQotICAgIGRvdWJsZSByZW1haW5pbmdU
aW1lID0gMDsKLQotICAgIGlmIChzdGQ6OmlzZmluaXRlKHZpZGVvRWxlbWVudC0+ZHVyYXRpb24o
KSkgJiYgc3RkOjppc2Zpbml0ZSh2aWRlb0VsZW1lbnQtPmN1cnJlbnRUaW1lKCkpKQotICAgICAg
ICByZW1haW5pbmdUaW1lID0gdmlkZW9FbGVtZW50LT5kdXJhdGlvbigpIC0gdmlkZW9FbGVtZW50
LT5jdXJyZW50VGltZSgpOwotCi0gICAgcmV0dXJuIFtAIi0iIHN0cmluZ0J5QXBwZW5kaW5nU3Ry
aW5nOnRpbWVUb1N0cmluZyhyZW1haW5pbmdUaW1lKV07Ci19Ci0KLS0gKE5TU3RyaW5nICopZWxh
cHNlZFRpbWVUZXh0Ci17Ci0gICAgaWYgKCFbX2RlbGVnYXRlIHZpZGVvRWxlbWVudF0pCi0gICAg
ICAgIHJldHVybiBAIiI7Ci0KLSAgICByZXR1cm4gdGltZVRvU3RyaW5nKFtfZGVsZWdhdGUgdmlk
ZW9FbGVtZW50XS0+Y3VycmVudFRpbWUoKSk7Ci19Ci0KLS8vIE1BUks6IE5TUmVzcG9uZGVyCi0K
LS0gKHZvaWQpbW91c2VFbnRlcmVkOihOU0V2ZW50ICopdGhlRXZlbnQKLXsKLSAgICBVTlVTRURf
UEFSQU0odGhlRXZlbnQpOwotICAgIC8vIE1ha2Ugc3VyZSB0aGUgSFVEIHdvbid0IGJlIGhpZGRl
biBmcm9tIG5vdwotICAgIF9tb3VzZUlzSW5IVUQgPSBZRVM7Ci0gICAgW3NlbGYgZmFkZVdpbmRv
d0luXTsKLX0KLQotLSAodm9pZCltb3VzZUV4aXRlZDooTlNFdmVudCAqKXRoZUV2ZW50Ci17Ci0g
ICAgVU5VU0VEX1BBUkFNKHRoZUV2ZW50KTsKLSAgICBfbW91c2VJc0luSFVEID0gTk87Ci0gICAg
W3NlbGYgZmFkZVdpbmRvd0luXTsKLX0KLQotLSAodm9pZClyZXdpbmQ6KGlkKXNlbmRlcgotewot
ICAgIFVOVVNFRF9QQVJBTShzZW5kZXIpOwotICAgIGlmICghW19kZWxlZ2F0ZSB2aWRlb0VsZW1l
bnRdKQotICAgICAgICByZXR1cm47Ci0gICAgW19kZWxlZ2F0ZSB2aWRlb0VsZW1lbnRdLT5yZXdp
bmQoMzApOwotfQotCi0tICh2b2lkKWZhc3RGb3J3YXJkOihpZClzZW5kZXIKLXsKLSAgICBVTlVT
RURfUEFSQU0oc2VuZGVyKTsKLSAgICBpZiAoIVtfZGVsZWdhdGUgdmlkZW9FbGVtZW50XSkKLSAg
ICAgICAgcmV0dXJuOwotfQotCi0tICh2b2lkKWV4aXRGdWxsc2NyZWVuOihpZClzZW5kZXIKLXsK
LSAgICBVTlVTRURfUEFSQU0oc2VuZGVyKTsKLSAgICBpZiAoX2lzRW5kaW5nRnVsbHNjcmVlbikK
LSAgICAgICAgcmV0dXJuOwotICAgIF9pc0VuZGluZ0Z1bGxzY3JlZW4gPSBZRVM7Ci0gICAgW19k
ZWxlZ2F0ZSByZXF1ZXN0RXhpdEZ1bGxzY3JlZW5dOyAKLX0KLQotLy8gTUFSSzogTlNXaW5kb3dE
ZWxlZ2F0ZQotCi0tICh2b2lkKXdpbmRvd0RpZEV4cG9zZTooTlNOb3RpZmljYXRpb24gKilub3Rp
ZmljYXRpb24KLXsKLSAgICBVTlVTRURfUEFSQU0obm90aWZpY2F0aW9uKTsKLSAgICBbc2VsZiBz
Y2hlZHVsZVRpbWVVcGRhdGVdOwotfQotCi0tICh2b2lkKXdpbmRvd0RpZENsb3NlOihOU05vdGlm
aWNhdGlvbiAqKW5vdGlmaWNhdGlvbgotewotICAgIFVOVVNFRF9QQVJBTShub3RpZmljYXRpb24p
OwotICAgIFtzZWxmIHVuc2NoZWR1bGVUaW1lVXBkYXRlXTsKLX0KLQotQGVuZAotCi0jZW5kaWYK
</data>

          </attachment>
      

    </bug>

</bugzilla>