<?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>197683</bug_id>
          
          <creation_ts>2019-05-07 19:36:40 -0700</creation_ts>
          <short_desc>[iOS] Add a quirk to synthesize mouse events when modifying the selection</short_desc>
          <delta_ts>2019-05-08 12:36:41 -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>HTML Editing</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>197685</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1534220</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-05-07 19:36:40 -0700</bug_when>
    <thetext>&lt;rdar://problem/48003980&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1534229</commentid>
    <comment_count>1</comment_count>
      <attachid>369354</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-05-07 20:16:51 -0700</bug_when>
    <thetext>Created attachment 369354
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1534242</commentid>
    <comment_count>2</comment_count>
      <attachid>369354</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-05-07 22:02:27 -0700</bug_when>
    <thetext>Comment on attachment 369354
Patch

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

&gt; Tools/WebKitTestRunner/ios/UIScriptControllerIOS.mm:995
&gt;  {

So......it looks like a couple of my tests in editing/pasteboard/ios actually depend on the callout menu callbacks not getting cleared when uiScriptComplete is invoked.

Going to fix this separately: https://bugs.webkit.org/show_bug.cgi?id=197685</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1534325</commentid>
    <comment_count>3</comment_count>
      <attachid>369389</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-05-08 09:04:02 -0700</bug_when>
    <thetext>Created attachment 369389
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1534428</commentid>
    <comment_count>4</comment_count>
      <attachid>369389</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-05-08 12:36:40 -0700</bug_when>
    <thetext>Comment on attachment 369389
Patch

Clearing flags on attachment: 369389

Committed r245062: &lt;https://trac.webkit.org/changeset/245062&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1534429</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-05-08 12:36:41 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>369354</attachid>
            <date>2019-05-07 20:16:51 -0700</date>
            <delta_ts>2019-05-07 21:18:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-197683-20190507201650.patch</filename>
            <type>text/plain</type>
            <size>39373</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ1MDA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjYxNzdkMDQ4MGMwZWU1
Zjk4MmJiZWY4ZmQzOGQxNmZmMDUxYmJlZS4uNTgzZjc1ZDdmNDMxYzA1YTUyYjM2N2M0ZTZkNzEx
ODQyNDEwMTlhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDE5LTA1LTA3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEFkZCBh
IHF1aXJrIHRvIHN5bnRoZXNpemUgbW91c2UgZXZlbnRzIHdoZW4gbW9kaWZ5aW5nIHRoZSBzZWxl
Y3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
NzY4MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDgwMDM5ODA+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2VlIFdlYktpdCBDaGFuZ2VMb2cgZm9y
IG1vcmUgZGV0YWlscy4KKworICAgICAgICBUZXN0OiBlZGl0aW5nL3NlbGVjdGlvbi9pb3MvZGlz
cGF0Y2gtbW91c2UtZXZlbnRzLXdoZW4tbW9kaWZ5aW5nLXNlbGVjdGlvbi1xdWlyay5odG1sCisK
KyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVu
dEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVu
dEhhbmRsZXI6OnN1cHBvcnRzU2VsZWN0aW9uVXBkYXRlc09uTW91c2VEcmFnIGNvbnN0KToKKwor
ICAgICAgICBBZGQgc29tZSBwbGF0Zm9ybSBob29rcyB0byBwcmV2ZW50IG1vdXNlbW92ZSBldmVu
dHMgZnJvbSB1cGRhdGluZyB0aGUgc2VsZWN0aW9uIG9uIGlPUy4KKworICAgICAgICAoV2ViQ29y
ZTo6RXZlbnRIYW5kbGVyOjpzaG91bGRBbGxvd01vdXNlRG93blRvU3RhcnREcmFnIGNvbnN0KToK
KworICAgICAgICBBZGQgc29tZSBwbGF0Zm9ybSBob29rcyB0byBwcmV2ZW50IGRyYWcgYW5kIGRy
b3AgZnJvbSBraWNraW5nIGluIHdoZW4gc2VuZGluZyBzeW50aGV0aWMgbW91c2Vtb3ZlIGV2ZW50
cyB0byB0aGUKKyAgICAgICAgcGFnZSBvbiBpT1MgKGRyYWcgYW5kIGRyb3AgaXMgaW5zdGVhZCB0
cmlnZ2VyZWQgYnkgRXZlbnRIYW5kbGVyOjp0cnlUb0JlZ2luRHJhZ0F0UG9pbnQpLgorCisgICAg
ICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnVwZGF0ZVNlbGVjdGlvbkZvck1vdXNlRHJhZyk6
CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuaDoKKyAgICAgICAgKiBwYWdlL1F1aXJrcy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpRdWlya3M6OnNob3VsZERpc3BhdGNoU3ludGhldGljTW91
c2VFdmVudHNXaGVuTW9kaWZ5aW5nU2VsZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL1F1
aXJrcy5oOgorCisgICAgICAgIEFkZCB0aGUgbmV3IHNpdGUtc3BlY2lmaWMgcXVpcmsuCisKKyAg
ICAgICAgKiBwYWdlL1NldHRpbmdzLnlhbWw6CisgICAgICAgICogcGFnZS9pb3MvRXZlbnRIYW5k
bGVySU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjp0cnlUb0JlZ2luRHJh
Z0F0UG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzdXBwb3J0c1NlbGVj
dGlvblVwZGF0ZXNPbk1vdXNlRHJhZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhh
bmRsZXI6OnNob3VsZEFsbG93TW91c2VEb3duVG9TdGFydERyYWcgY29uc3QpOgorICAgICAgICAq
IHRlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5h
bFNldHRpbmdzOjpCYWNrdXA6OkJhY2t1cCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbFNl
dHRpbmdzOjpCYWNrdXA6OnJlc3RvcmVUbyk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbFNl
dHRpbmdzOjpzZXRTaG91bGREaXNwYXRjaFN5bnRoZXRpY01vdXNlRXZlbnRzV2hlbk1vZGlmeWlu
Z1NlbGVjdGlvbik6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmg6CisgICAg
ICAgICogdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbDoKKworICAgICAgICBBZGQgYW4gaW50
ZXJuYWwgc2V0dGluZ3MgaG9vayB0byBvcHQgaW50byB0aGlzIHF1aXJrLCBmb3IgdXNlIGluIGxh
eW91dCB0ZXN0cy4KKwogMjAxOS0wNS0wNyAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5j
b20+CiAKICAgICAgICAgPGJvZHk+IHdpdGggb3ZlcmZsb3c6aGlkZGVuIENTUyBpcyBzY3JvbGxh
YmxlIG9uIGlPUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCA4OGNlNDVlZTMwM2Q4YThlMzNlOWIzZDQxYTYyYWQxNzk2
MTY3NzhlLi5hYzY1NDE2NjVlYjFkYzU4NTE4Yzc3N2E3MWEwN2NlOGE5YTdlZDdiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDU4IEBACisyMDE5LTA1LTA3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNp
ZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEFkZCBhIHF1aXJrIHRvIHN5bnRoZXNpemUg
bW91c2UgZXZlbnRzIHdoZW4gbW9kaWZ5aW5nIHRoZSBzZWxlY3Rpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NzY4MworICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNDgwMDM5ODA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSW50cm9kdWNlcyBzdXBwb3J0IGZvciBkaXNwYXRjaGluZyBzeW50aGV0aWMg
bW91c2UgZXZlbnRzIHdoZW4gbW9kaWZ5aW5nIHRoZSBzZWxlY3Rpb24gb24gc29tZSB3ZWJzaXRl
cy4gU2VlCisgICAgICAgIGJlbG93IGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpz
ZWxlY3RBbGwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKworICAgICAg
ICBJbnN0ZWFkIG9mIGV4ZWN1dGluZyBhICJTZWxlY3RBbGwiIGVkaXRpbmcgY29tbWFuZCB1c2lu
ZyB0aGUgZ2VuZXJpYyBXZWJQYWdlOjpleGVjdXRlRWRpdENvbW1hbmQgbWV0aG9kLAorICAgICAg
ICBpbnRyb2R1Y2UgYSBzZXBhcmF0ZSBtZXRob2QgZm9yIHNlbGVjdEFsbCB0aGF0IGV4ZWN1dGVz
IHRoZSAiU2VsZWN0QWxsIiBlZGl0IGNvbW1hbmQgYW5kIHRoZW4gZG9lcyBzb21lCisgICAgICAg
IHBsYXRmb3JtLXNwZWNpZmljIHdvcmsuIFNlZSBwbGF0Zm9ybURpZFNlbGVjdEFsbC4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAg
ICAoLVtXS0NvbnRlbnRWaWV3IHNlbGVjdEFsbEZvcldlYlZpZXc6XSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpz
ZWxlY3RBbGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzaG91bGREaXNwYXRjaFN5bnRo
ZXRpY01vdXNlRXZlbnRzV2hlbk1vZGlmeWluZ1NlbGVjdGlvbiBjb25zdCk6CisKKyAgICAgICAg
QWRkIGEgaGVscGVyIG1ldGhvZCB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgcXVpcmsgc2hvdWxk
IGJlIGVuYWJsZWQuCisKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1EaWRTZWxl
Y3RBbGwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjplbGVt
ZW50UmVjdEluUm9vdFZpZXdDb29yZGluYXRlcyk6CisKKyAgICAgICAgTW92ZSB0aGlzIGZ1bmN0
aW9uIGNsb3NlciB0byB0aGUgdG9wIG9mIHRoZSBmaWxlIHNvIHRoYXQgaXQgY2FuIGJlIHVzZWQg
aW4KKyAgICAgICAgZGlzcGF0Y2hTeW50aGV0aWNNb3VzZUV2ZW50c0ZvclNlbGVjdGlvbkdlc3R1
cmUuCisKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y2xlYXJTZWxlY3Rpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpkaXNwYXRjaFN5bnRoZXRpY01vdXNlRXZlbnRzRm9yU2VsZWN0
aW9uR2VzdHVyZSk6CisKKyAgICAgICAgQWRkIGEgaGVscGVyIG1ldGhvZCB0byBkaXNwYXRjaCBh
IHN5bnRoZXRpYyBtb3VzZSBldmVudCBmb3IgYSBnaXZlbiBzZWxlY3Rpb24gZ2VzdHVyZSB0eXBl
LiBVc2VkIGluIHNldmVyYWwKKyAgICAgICAgcGxhY2VzIGluIFdlYlBhZ2VJT1MgdG8gc3ludGhl
c2l6ZSBhbmQgZGlzcGF0Y2ggbW91c2UgZXZlbnRzIGR1cmluZyBzZWxlY3Rpb24uCisKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMpOgorCisgICAg
ICAgIFdoZW4gY2hhbmdpbmcgdGhlIHNlbGVjdGlvbiB3aXRoIHNlbGVjdGlvbiBoYW5kbGVzLCBm
YWtlIG1vdXNlZG93biB3aGVuIHRoZSB1c2VyIGZpcnN0IHRvdWNoZXMgZG93biBvbiB0aGUKKyAg
ICAgICAgc2VsZWN0aW9uIGhhbmRsZTsgbW91c2Vtb3ZlIGFzIHRoZSB1c2VyIGlzIG1vdmluZyB0
aGUgaGFuZGxlIGFyb3VuZDsgYW5kIGZpbmFsbHksIG1vdXNldXAgd2hlbiB0aGUgdXNlciBsZXRz
IGdvLgorCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmV4dGVuZFNlbGVjdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtRGlkU2VsZWN0QWxsKToKKworICAgICAgICBX
aGVuIHRhcHBpbmcgIlNlbGVjdCBBbGwiIGFuZC9vciAiU2VsZWN0IiBpbiB0aGUgY2FsbG91dCBt
ZW51LCBmYWtlIGEgbW91c2Vkb3duIGF0IHRoZSBzZWxlY3Rpb24gc3RhcnQsIHRoZW4gYQorICAg
ICAgICBtb3VzZW1vdmUgYXQgc2VsZWN0aW9uIGVuZCwgYW5kIGZpbmFsbHksIGEgbW91c2V1cCBh
dCBzZWxlY3Rpb24gZW5kLgorCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldEZvY3VzZWRF
bGVtZW50SW5mb3JtYXRpb24pOgorCiAyMDE5LTA1LTA3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25f
aHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU10gQXZvaWQgY3Jhc2hpbmcgdGhlIFVJ
IHByb2Nlc3Mgd2hlbiB3cml0aW5nIGVtcHR5IGRhdGEgdG8gdGhlIHBhc3RlYm9hcmQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCAyMmYwOTljYjJiODVlMDg1OWIxOTc0YmU5
ZDMzMzY2NjdkNDhiOWYxLi43NTg3MGQ3ZDE0NWNkNzhiNWJmYmU2MDJhOTYxYmU2MmQxNjRlYjNi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC03NzYsNyArNzc2LDcgQEAg
Ym9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudChjb25zdCBNb3VzZUV2ZW50
V2l0aEhpdFRlc3RSZXN1bHRzJiBldmUKIAogICAgIC8vIFNpbmdsZSBtb3VzZSBkb3duIG9uIGxp
bmtzIG9yIGltYWdlcyBjYW4gYWx3YXlzIHRyaWdnZXIgZHJhZy1uLWRyb3AuCiAgICAgYm9vbCBp
c01vdXNlRG93bk9uTGlua09ySW1hZ2UgPSBldmVudC5pc092ZXJMaW5rKCkgfHwgZXZlbnQuaGl0
VGVzdFJlc3VsdCgpLmltYWdlKCk7Ci0gICAgbV9tb3VzZURvd25NYXlTdGFydERyYWcgPSBzaW5n
bGVDbGljayAmJiAoIWV2ZW50LmV2ZW50KCkuc2hpZnRLZXkoKSB8fCBpc01vdXNlRG93bk9uTGlu
a09ySW1hZ2UpOworICAgIG1fbW91c2VEb3duTWF5U3RhcnREcmFnID0gc2luZ2xlQ2xpY2sgJiYg
KCFldmVudC5ldmVudCgpLnNoaWZ0S2V5KCkgfHwgaXNNb3VzZURvd25PbkxpbmtPckltYWdlKSAm
JiBzaG91bGRBbGxvd01vdXNlRG93blRvU3RhcnREcmFnKCk7CiAjZW5kaWYKIAogICAgIG1fbW91
c2VEb3duV2FzU2luZ2xlQ2xpY2tJblNlbGVjdGlvbiA9IGZhbHNlOwpAQCAtODQ3LDYgKzg0Nywy
MSBAQCBWaXNpYmxlUG9zaXRpb24gRXZlbnRIYW5kbGVyOjpzZWxlY3Rpb25FeHRlbnRSZXNwZWN0
aW5nRWRpdGluZ0JvdW5kYXJ5KGNvbnN0IFZpcwogfQogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9S
VCkKKworI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQorCitib29sIEV2ZW50SGFuZGxlcjo6c3Vw
cG9ydHNTZWxlY3Rpb25VcGRhdGVzT25Nb3VzZURyYWcoKSBjb25zdAoreworICAgIHJldHVybiB0
cnVlOworfQorCitib29sIEV2ZW50SGFuZGxlcjo6c2hvdWxkQWxsb3dNb3VzZURvd25Ub1N0YXJ0
RHJhZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKKyNlbmRpZgorCiBib29sIEV2
ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VEcmFnZ2VkRXZlbnQoY29uc3QgTW91c2VFdmVudFdpdGhI
aXRUZXN0UmVzdWx0cyYgZXZlbnQsIENoZWNrRHJhZ0h5c3RlcmVzaXMgY2hlY2tEcmFnSHlzdGVy
ZXNpcykKIHsKICAgICBpZiAoIW1fbW91c2VQcmVzc2VkKQpAQCAtOTI2LDYgKzk0MSw5IEBAIGJv
b2wgRXZlbnRIYW5kbGVyOjpldmVudE1heVN0YXJ0RHJhZyhjb25zdCBQbGF0Zm9ybU1vdXNlRXZl
bnQmIGV2ZW50KSBjb25zdAogCiB2b2lkIEV2ZW50SGFuZGxlcjo6dXBkYXRlU2VsZWN0aW9uRm9y
TW91c2VEcmFnKCkKIHsKKyAgICBpZiAoIXN1cHBvcnRzU2VsZWN0aW9uVXBkYXRlc09uTW91c2VE
cmFnKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUu
dmlldygpOwogICAgIGlmICghdmlldykKICAgICAgICAgcmV0dXJuOwpAQCAtOTQxLDYgKzk1OSw5
IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjp1cGRhdGVTZWxlY3Rpb25Gb3JNb3VzZURyYWcoKQogCiB2
b2lkIEV2ZW50SGFuZGxlcjo6dXBkYXRlU2VsZWN0aW9uRm9yTW91c2VEcmFnKGNvbnN0IEhpdFRl
c3RSZXN1bHQmIGhpdFRlc3RSZXN1bHQpCiB7CisgICAgaWYgKCFzdXBwb3J0c1NlbGVjdGlvblVw
ZGF0ZXNPbk1vdXNlRHJhZygpKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAoIW1fbW91c2VE
b3duTWF5U3RhcnRTZWxlY3QpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmgKaW5kZXggN2ZlOTdhNDgzYzE3N2E4NGNjZTRlM2I2OGE3ZDk1ODlkNGQyZTI5ZC4u
ZjZjM2ZjODE2ZGJjODJlMDVlYTkxODlkMDVlNmU0NDJlNzAyNGVmMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5oCkBAIC0zNjUsNiArMzY1LDcgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJM
RShEUkFHX1NVUFBPUlQpCiAgICAgYm9vbCBoYW5kbGVNb3VzZURyYWdnZWRFdmVudChjb25zdCBN
b3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiwgQ2hlY2tEcmFnSHlzdGVyZXNpcyA9IFNob3Vs
ZENoZWNrRHJhZ0h5c3RlcmVzaXMpOworICAgIGJvb2wgc2hvdWxkQWxsb3dNb3VzZURvd25Ub1N0
YXJ0RHJhZygpIGNvbnN0OwogI2VuZGlmCiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhbmRs
ZU1vdXNlUmVsZWFzZUV2ZW50KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmKTsK
QEAgLTQ1Nyw2ICs0NTgsNyBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkK
ICAgICBEcmFnU291cmNlQWN0aW9uIHVwZGF0ZURyYWdTb3VyY2VBY3Rpb25zQWxsb3dlZCgpIGNv
bnN0OworICAgIGJvb2wgc3VwcG9ydHNTZWxlY3Rpb25VcGRhdGVzT25Nb3VzZURyYWcoKSBjb25z
dDsKICNlbmRpZgogCiAgICAgLy8gVGhlIGZvbGxvd2luZyBhcmUgY2FsbGVkIGF0IHRoZSBiZWdp
bm5pbmcgb2YgaGFuZGxlTW91c2VVcCBhbmQgaGFuZGxlRHJhZy4gIApAQCAtNjE2LDYgKzYxOCwx
MCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9kaWRTdGFydERyYWcgeyBmYWxzZSB9OwogICAgIGJv
b2wgbV9pc0hhbmRsaW5nV2hlZWxFdmVudCB7IGZhbHNlIH07CiAKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQorICAgIGJvb2wgbV9zaG91bGRBbGxvd01vdXNlRG93blRvU3RhcnREcmFnIHsgZmFs
c2UgfTsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKENVUlNPUl9WSVNJQklMSVRZKQogICAgIFRpbWVy
IG1fYXV0b0hpZGVDdXJzb3JUaW1lcjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9RdWlya3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9RdWlya3MuY3BwCmluZGV4
IGIxZjFmZmRiNWFlNDAxMWMwYTk2ZjFmMTljOTJiNGUyZTljYmZlOTQuLjUyMmEzM2E3YmI5MGEx
OTE5NzJjYjBiNTI3MTRkMzM4YTAwZWE3M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUXVpcmtzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5jcHAKQEAgLTIz
Nyw2ICsyMzcsMjQgQEAgc3RhdGljIGJvb2wgc2hvdWxkU3VwcHJlc3NBdXRvY29ycmVjdGlvbkFu
ZEF1dG9jYXB0aWFsaXphdGlvbkluSGlkZGVuRWRpdGFibGVBcmUKIAogI2VuZGlmCiAKK2Jvb2wg
UXVpcmtzOjpzaG91bGREaXNwYXRjaFN5bnRoZXRpY01vdXNlRXZlbnRzV2hlbk1vZGlmeWluZ1Nl
bGVjdGlvbigpIGNvbnN0Cit7CisgICAgaWYgKG1fZG9jdW1lbnQtPnNldHRpbmdzKCkuc2hvdWxk
RGlzcGF0Y2hTeW50aGV0aWNNb3VzZUV2ZW50c1doZW5Nb2RpZnlpbmdTZWxlY3Rpb24oKSkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoIW5lZWRzUXVpcmtzKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGF1dG8gaG9zdCA9IG1fZG9jdW1lbnQtPnRvcERvY3VtZW50KCku
dXJsKCkuaG9zdCgpOworICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShob3N0
LCAibWVkaXVtLmNvbSIpIHx8IGhvc3QuZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgiLm1lZGl1
bS5jb20iKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UoaG9zdCwgIndlZWJseS5jb20iKSB8fCBob3N0LmVuZHNXaXRoSWdub3Jp
bmdBU0NJSUNhc2UoIi53ZWVibHkuY29tIikpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAg
cmV0dXJuIGZhbHNlOworfQorCiBib29sIFF1aXJrczo6c2hvdWxkU3VwcHJlc3NBdXRvY29ycmVj
dGlvbkFuZEF1dG9jYXB0aWFsaXphdGlvbkluSGlkZGVuRWRpdGFibGVBcmVhcygpIGNvbnN0CiB7
CiAgICAgaWYgKCFuZWVkc1F1aXJrcygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9RdWlya3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmgKaW5kZXggZTkyMGJjMzI2
Nzk3ZWU4ODg4NDJlOTFmZDM2Yjc2NDYxMzQzYzRjOC4uNzY4OWY3MGFmNjU5YjMxMTlhNmQ4Y2Rm
NGY3ZGE4YzI1MDMzOTAwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9RdWlya3Mu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5oCkBAIC01Miw2ICs1Miw3IEBAIHB1
YmxpYzoKICAgICBib29sIHNob3VsZERpc2FibGVQb2ludGVyRXZlbnRzUXVpcmsoKSBjb25zdDsK
ICAgICBib29sIG5lZWRzSW5wdXRNb2RlTm9uZUltcGxpY2l0bHkoY29uc3QgSFRNTEVsZW1lbnQm
KSBjb25zdDsKIAorICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxkRGlzcGF0Y2hTeW50aGV0
aWNNb3VzZUV2ZW50c1doZW5Nb2RpZnlpbmdTZWxlY3Rpb24oKSBjb25zdDsKICAgICBXRUJDT1JF
X0VYUE9SVCBib29sIHNob3VsZFN1cHByZXNzQXV0b2NvcnJlY3Rpb25BbmRBdXRvY2FwdGlhbGl6
YXRpb25JbkhpZGRlbkVkaXRhYmxlQXJlYXMoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBi
b29sIGlzVG91Y2hCYXJVcGRhdGVTdXByZXNzZWRGb3JIaWRkZW5Db250ZW50RWRpdGFibGUoKSBj
b25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzTmV2ZXJSaWNobHlFZGl0YWJsZUZvclRv
dWNoQmFyKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdz
LnlhbWwgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwKaW5kZXggZDMwYzgxNWU5
Y2M2OGViMjczNjcxMTE2MTlmNDlhNzEyYmI4MDIyNS4uYTM0YjgyZDMwZTY0YzJlZTM2YjQ2ZDky
Y2Y5NzAwZTFlNDVmODA2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5n
cy55YW1sCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbApAQCAtODM0LDYg
KzgzNCw5IEBAIGJsb2NraW5nT2ZTbWFsbFBsdWdpbnNFbmFibGVkOgogc2hvdWxkRGVjaWRlUG9s
aWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9va1ByZXZpZXc6CiAgIGluaXRpYWw6IGZhbHNlCiAKK3No
b3VsZERpc3BhdGNoU3ludGhldGljTW91c2VFdmVudHNXaGVuTW9kaWZ5aW5nU2VsZWN0aW9uOgor
ICBpbml0aWFsOiBmYWxzZQorCiAjIERlcHJlY2F0ZWQKIAogaWNlQ2FuZGlkYXRlRmlsdGVyaW5n
RW5hYmxlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0V2ZW50SGFuZGxl
cklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0V2ZW50SGFuZGxlcklPUy5tbQppbmRl
eCA1MWEyZDVlNjYyZmEzNzNkNzNjMzEzNGM0MTZkOGRmOTZiODExNjI1Li5mOTFkZDU4ZDQ1NDMx
ZjZmNzNjNjllOGYxMjE5ODc2MzEzZTc4MTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2lvcy9FdmVudEhhbmRsZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9pb3Mv
RXZlbnRIYW5kbGVySU9TLm1tCkBAIC02NzEsNiArNjcxLDggQEAgYm9vbCBFdmVudEhhbmRsZXI6
OnRyeVRvQmVnaW5EcmFnQXRQb2ludChjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNv
bnN0IEkKICAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBT
ZXRGb3JTY29wZTxib29sPiBzaG91bGRBbGxvd01vdXNlRG93blRvU3RhcnREcmFnIHsgbV9zaG91
bGRBbGxvd01vdXNlRG93blRvU3RhcnREcmFnLCB0cnVlIH07CisKICAgICBkb2N1bWVudC0+dXBk
YXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAKICAgICBGbG9hdFBvaW50IGFk
anVzdGVkQ2xpZW50UG9zaXRpb25Bc0Zsb2F0UG9pbnQoY2xpZW50UG9zaXRpb24pOwpAQCAtNjk5
LDcgKzcwMSwxNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6dHJ5VG9CZWdpbkRyYWdBdFBvaW50KGNv
bnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSQogICAgIHJldHVybiBoYW5kbGVk
RHJhZzsKIH0KIAotI2VuZGlmCitib29sIEV2ZW50SGFuZGxlcjo6c3VwcG9ydHNTZWxlY3Rpb25V
cGRhdGVzT25Nb3VzZURyYWcoKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9v
bCBFdmVudEhhbmRsZXI6OnNob3VsZEFsbG93TW91c2VEb3duVG9TdGFydERyYWcoKSBjb25zdAor
eworICAgIHJldHVybiBtX3Nob3VsZEFsbG93TW91c2VEb3duVG9TdGFydERyYWc7Cit9CisKKyNl
bmRpZiAvLyBFTkFCTEUoRFJBR19TVVBQT1JUKQogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCmluZGV4IDEzY2NkNWRiOTAyZTc5YmVlZTU5Y2U4YzE5
ZmE1ZDMxOWQyN2Y3MDguLjM5Y2ZmZDU2YTUxZjNmOTViNTE1ZDdjNzM0NWNkMzU4ZjQzN2IxZGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcApAQCAtMTAw
LDYgKzEwMCw3IEBAIEludGVybmFsU2V0dGluZ3M6OkJhY2t1cDo6QmFja3VwKFNldHRpbmdzJiBz
ZXR0aW5ncykKICAgICAsIG1fZGVmZXJyZWRDU1NQYXJzZXJFbmFibGVkKHNldHRpbmdzLmRlZmVy
cmVkQ1NTUGFyc2VyRW5hYmxlZCgpKQogICAgICwgbV9pbnB1dEV2ZW50c0VuYWJsZWQoc2V0dGlu
Z3MuaW5wdXRFdmVudHNFbmFibGVkKCkpCiAgICAgLCBtX2luY29tcGxldGVJbWFnZUJvcmRlckVu
YWJsZWQoc2V0dGluZ3MuaW5jb21wbGV0ZUltYWdlQm9yZGVyRW5hYmxlZCgpKQorICAgICwgbV9z
aG91bGREaXNwYXRjaFN5bnRoZXRpY01vdXNlRXZlbnRzV2hlbk1vZGlmeWluZ1NlbGVjdGlvbihz
ZXR0aW5ncy5zaG91bGREaXNwYXRjaFN5bnRoZXRpY01vdXNlRXZlbnRzV2hlbk1vZGlmeWluZ1Nl
bGVjdGlvbigpKQogICAgICwgbV9zaG91bGREZWFjdGl2YXRlQXVkaW9TZXNzaW9uKFBsYXRmb3Jt
TWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hvdWxkRGVhY3RpdmF0ZUF1ZGlvU2Vzc2lvbigpKQogICAg
ICwgbV91c2VySW50ZXJmYWNlRGlyZWN0aW9uUG9saWN5KHNldHRpbmdzLnVzZXJJbnRlcmZhY2VE
aXJlY3Rpb25Qb2xpY3koKSkKICAgICAsIG1fc3lzdGVtTGF5b3V0RGlyZWN0aW9uKHNldHRpbmdz
LnN5c3RlbUxheW91dERpcmVjdGlvbigpKQpAQCAtMjA3LDYgKzIwOCw3IEBAIHZvaWQgSW50ZXJu
YWxTZXR0aW5nczo6QmFja3VwOjpyZXN0b3JlVG8oU2V0dGluZ3MmIHNldHRpbmdzKQogICAgIEZv
bnRDYWNoZTo6c2luZ2xldG9uKCkuc2V0U2hvdWxkTW9ja0JvbGRTeXN0ZW1Gb250Rm9yQWNjZXNz
aWJpbGl0eShtX3Nob3VsZE1vY2tCb2xkU3lzdGVtRm9udEZvckFjY2Vzc2liaWxpdHkpOwogICAg
IHNldHRpbmdzLnNldEZyYW1lRmxhdHRlbmluZyhtX2ZyYW1lRmxhdHRlbmluZyk7CiAgICAgc2V0
dGluZ3Muc2V0SW5jb21wbGV0ZUltYWdlQm9yZGVyRW5hYmxlZChtX2luY29tcGxldGVJbWFnZUJv
cmRlckVuYWJsZWQpOworICAgIHNldHRpbmdzLnNldFNob3VsZERpc3BhdGNoU3ludGhldGljTW91
c2VFdmVudHNXaGVuTW9kaWZ5aW5nU2VsZWN0aW9uKG1fc2hvdWxkRGlzcGF0Y2hTeW50aGV0aWNN
b3VzZUV2ZW50c1doZW5Nb2RpZnlpbmdTZWxlY3Rpb24pOwogICAgIFBsYXRmb3JtTWVkaWFTZXNz
aW9uTWFuYWdlcjo6c2V0U2hvdWxkRGVhY3RpdmF0ZUF1ZGlvU2Vzc2lvbihtX3Nob3VsZERlYWN0
aXZhdGVBdWRpb1Nlc3Npb24pOwogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0VfSU5fV09S
S0VSUykKQEAgLTkyNiw2ICs5MjgsMTQgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSW50ZXJuYWxTZXR0
aW5nczo6c2V0SW5jb21wbGV0ZUltYWdlQm9yZGVyRW5hYmxlZChib29sIGVuYWJsZWQKICAgICBy
ZXR1cm4geyB9OwogfQogCitFeGNlcHRpb25Pcjx2b2lkPiBJbnRlcm5hbFNldHRpbmdzOjpzZXRT
aG91bGREaXNwYXRjaFN5bnRoZXRpY01vdXNlRXZlbnRzV2hlbk1vZGlmeWluZ1NlbGVjdGlvbihi
b29sIHNob3VsZERpc3BhdGNoKQoreworICAgIGlmICghbV9wYWdlKQorICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yIH07CisgICAgc2V0dGluZ3MoKS5zZXRTaG91
bGREaXNwYXRjaFN5bnRoZXRpY01vdXNlRXZlbnRzV2hlbk1vZGlmeWluZ1NlbGVjdGlvbihzaG91
bGREaXNwYXRjaCk7CisgICAgcmV0dXJuIHsgfTsKK30KKwogc3RhdGljIEludGVybmFsU2V0dGlu
Z3M6OkZvcmNlZEFjY2Vzc2liaWxpdHlWYWx1ZSBzZXR0aW5nc1RvSW50ZXJuYWxTZXR0aW5nc1Zh
bHVlKFNldHRpbmdzOjpGb3JjZWRBY2Nlc3NpYmlsaXR5VmFsdWUgdmFsdWUpCiB7CiAgICAgc3dp
dGNoICh2YWx1ZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bFNldHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaApp
bmRleCA4ZmYwZjRiZGM4YzJjYTAwZGI3YWE3ZjRjNDc2Njg1MzE2YWQwYmQ5Li5mYTczMzk0ZDA2
ZTg3NTFiM2M3M2QwNzI0YWE4YzI4MGM1MGJlZmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFsU2V0dGluZ3MuaApAQCAtMTAzLDYgKzEwMyw3IEBAIHB1YmxpYzoKICAgICBFeGNl
cHRpb25Pcjx2b2lkPiBzZXRTaG91bGRNYW5hZ2VBdWRpb1Nlc3Npb25DYXRlZ29yeShib29sKTsK
ICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRDdXN0b21QYXN0ZWJvYXJkRGF0YUVuYWJsZWQoYm9v
bCk7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0SW5jb21wbGV0ZUltYWdlQm9yZGVyRW5hYmxl
ZChib29sKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRTaG91bGREaXNwYXRjaFN5bnRoZXRp
Y01vdXNlRXZlbnRzV2hlbk1vZGlmeWluZ1NlbGVjdGlvbihib29sKTsKIAogICAgIHVzaW5nIEZy
YW1lRmxhdHRlbmluZ1ZhbHVlID0gRnJhbWVGbGF0dGVuaW5nOwogICAgIEV4Y2VwdGlvbk9yPHZv
aWQ+IHNldEZyYW1lRmxhdHRlbmluZyhGcmFtZUZsYXR0ZW5pbmdWYWx1ZSk7CkBAIC0xOTgsNiAr
MTk5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBtX2RlZmVycmVkQ1NTUGFyc2VyRW5hYmxl
ZDsKICAgICAgICAgYm9vbCBtX2lucHV0RXZlbnRzRW5hYmxlZDsKICAgICAgICAgYm9vbCBtX2lu
Y29tcGxldGVJbWFnZUJvcmRlckVuYWJsZWQ7CisgICAgICAgIGJvb2wgbV9zaG91bGREaXNwYXRj
aFN5bnRoZXRpY01vdXNlRXZlbnRzV2hlbk1vZGlmeWluZ1NlbGVjdGlvbjsKICAgICAgICAgYm9v
bCBtX3Nob3VsZERlYWN0aXZhdGVBdWRpb1Nlc3Npb247CiAgICAgICAgIFVzZXJJbnRlcmZhY2VE
aXJlY3Rpb25Qb2xpY3kgbV91c2VySW50ZXJmYWNlRGlyZWN0aW9uUG9saWN5OwogICAgICAgICBU
ZXh0RGlyZWN0aW9uIG1fc3lzdGVtTGF5b3V0RGlyZWN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGwKaW5kZXggMjBhMzc4NTgzNzY5MmU4OGYxYmUyMTE4
MjkxNDczZmYwYjY1Y2RkYy4uYWFmMjRhOTkyMGJlOWUwZmNhOTdlM2ZiNjU5NTdlNGIzOWMyN2I0
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaWRsCkBAIC04
OCw2ICs4OCw3IEBAIGVudW0gRm9udExvYWRUaW1pbmdPdmVycmlkZSB7ICJCbG9jayIsICJTd2Fw
IiwgIkZhaWx1cmUiIH07CiAgICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldElubGluZU1l
ZGlhUGxheWJhY2tSZXF1aXJlc1BsYXlzSW5saW5lQXR0cmlidXRlKGJvb2xlYW4gcmVxdWlyZXMp
OwogICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRGcmFtZUZsYXR0ZW5pbmcoRnJhbWVG
bGF0dGVuaW5nVmFsdWUgZnJhbWVGbGF0dGVuaW5nKTsKICAgICBbTWF5VGhyb3dFeGNlcHRpb25d
IHZvaWQgc2V0SW5jb21wbGV0ZUltYWdlQm9yZGVyRW5hYmxlZChib29sZWFuIGVuYWJsZWQpOwor
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRTaG91bGREaXNwYXRjaFN5bnRoZXRpY01v
dXNlRXZlbnRzV2hlbk1vZGlmeWluZ1NlbGVjdGlvbihib29sZWFuIHNob3VsZERpc3BhdGNoKTsK
IAogICAgIC8vIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuCiAgICAgdm9pZCBzZXRJbmRleGVkREJX
b3JrZXJzRW5hYmxlZChib29sZWFuIGVuYWJsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKaW5kZXggNGUxYWVmOWE2YjQ0NTJmMzE2NTkwODhiMWU3Y2M5NDkxOWFj
NmU5NC4uMzEzYTlmYWUwNTBiNTM4ZDdiNzU2NDg4MmNhMTVmZjQ0ZDA3YWEwNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0yMDE0LDYgKzIwMTQsMTQgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnNjaGVkdWxlRnVsbEVkaXRvclN0YXRlVXBkYXRlKCkKICAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNjaGVkdWxlRnVsbEVkaXRvclN0YXRl
VXBkYXRlKCksIG1fcGFnZUlEKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdEFsbCgp
Cit7CisgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdEFsbCgpLCBtX3BhZ2VJ
RCk7Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5OjpleGVjdXRlRWRpdENvbW1hbmQoY29uc3QgU3Ry
aW5nJiBjb21tYW5kTmFtZSwgY29uc3QgU3RyaW5nJiBhcmd1bWVudCwgV1RGOjpGdW5jdGlvbjx2
b2lkKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgaWYg
KCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCmluZGV4IDg3MjBlZWJkN2ZiN2NjZjBiMzczODhhYjhiZjJmZGZlZDdiMWMxOWIuLmYyYzQz
MTU1OWEwN2EzYTc0ODkwMjcyMTQxYTVhOTlhMjY4MDYwMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC01OTUsNiArNTk1LDcgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBhZGRNSU1FVHlwZVdpdGhDdXN0b21Db250ZW50UHJvdmlkZXIoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSk7CiAKKyAgICB2b2lkIHNlbGVjdEFsbCgpOwogICAgIHZvaWQgZXhlY3V0ZUVkaXRDb21t
YW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIGNvbnN0IFN0cmluZyYgYXJndW1lbnQgPSBT
dHJpbmcoKSk7CiAgICAgdm9pZCB2YWxpZGF0ZUNvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5k
TmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBib29sLCBpbnQzMl90LCBD
YWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDc3ZGU3YzhhNGMz
MTBlMGM0N2RhZjQ0MTI5MTEwZjA0NmU2NmRmZDAuLjc1YjkzZDYxMDM5ODcyZjQ0ZDk5NDQ1OWVk
ZmY2NDMxY2E2OWYxYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtMzA3OSw3ICszMDc5LDcgQEAgLSAo
dm9pZClzZWxlY3RGb3JXZWJWaWV3OihpZClzZW5kZXIKIC0gKHZvaWQpc2VsZWN0QWxsRm9yV2Vi
VmlldzooaWQpc2VuZGVyCiB7CiAgICAgW190ZXh0U2VsZWN0aW9uQXNzaXN0YW50IHNlbGVjdEFs
bDpzZW5kZXJdOwotICAgIF9wYWdlLT5leGVjdXRlRWRpdENvbW1hbmQoInNlbGVjdEFsbCJfcyk7
CisgICAgX3BhZ2UtPnNlbGVjdEFsbCgpOwogfQogCiAtICh2b2lkKXRvZ2dsZUJvbGRmYWNlRm9y
V2ViVmlldzooaWQpc2VuZGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCmluZGV4IDQzNzAyMjJhZThkMzg3NzY3OTkzMDdmODkwMzkxNjczNWNmODBhODAu
LmZmZjU5ODNhYTA4NDlkYmJhYjc3ZmRiZTUwZjljNGE1MTM1MTQyN2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0xMTA5LDYgKzExMDksMjYg
QEAgdm9pZCBXZWJQYWdlOjpleGVjdXRlRWRpdENvbW1hbmRXaXRoQ2FsbGJhY2soY29uc3QgU3Ry
aW5nJiBjb21tYW5kTmFtZSwgY29uc3QgU3QKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OlZvaWRDYWxsYmFjayhjYWxsYmFja0lEKSk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6c2VsZWN0
QWxsKCkKK3sKKyAgICBleGVjdXRlRWRpdGluZ0NvbW1hbmQoIlNlbGVjdEFsbCJfcywgeyB9KTsK
KyAgICBwbGF0Zm9ybURpZFNlbGVjdEFsbCgpOworfQorCitib29sIFdlYlBhZ2U6OnNob3VsZERp
c3BhdGNoU3ludGhldGljTW91c2VFdmVudHNXaGVuTW9kaWZ5aW5nU2VsZWN0aW9uKCkgY29uc3QK
K3sKKyAgICBhdXRvKiBkb2N1bWVudCA9IG1fcGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKTsK
KyAgICByZXR1cm4gZG9jdW1lbnQgJiYgZG9jdW1lbnQtPnF1aXJrcygpLnNob3VsZERpc3BhdGNo
U3ludGhldGljTW91c2VFdmVudHNXaGVuTW9kaWZ5aW5nU2VsZWN0aW9uKCk7Cit9CisKKyNpZiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKKwordm9pZCBXZWJQYWdlOjpwbGF0Zm9ybURpZFNlbGVjdEFs
bCgpCit7Cit9CisKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKKwogdm9pZCBXZWJQ
YWdlOjp1cGRhdGVFZGl0b3JTdGF0ZUFmdGVyTGF5b3V0SWZFZGl0YWJpbGl0eUNoYW5nZWQoKQog
ewogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdXBkYXRlIEVkaXRvclN0YXRlSXNDb250ZW50RWRp
dGFibGUgdG8gdHJhY2sgd2hldGhlciB0aGUgc3RhdGUgaXMgcmljaGx5CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggZDlkODA0Y2JkNjM3OTkxMDUyYzhj
NmQyYzFjZTIyOWU2N2QzNmE5OC4uNGZmODU5Yzc1NTUwMGI1MWFkMTk0M2I3NWNhZmU5MzhkOWFk
YmE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAt
NTk3LDYgKzU5Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpc2FibGVkQWRhcHRhdGlvbnNEaWRD
aGFuZ2UoY29uc3QgT3B0aW9uU2V0PFdlYkNvcmU6OkRpc2FibGVkQWRhcHRhdGlvbnM+Jik7CiAg
ICAgdm9pZCB2aWV3cG9ydFByb3BlcnRpZXNEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6Vmlld3Bv
cnRBcmd1bWVudHMmKTsKICAgICB2b2lkIGV4ZWN1dGVFZGl0Q29tbWFuZFdpdGhDYWxsYmFjayhj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGFyZ3VtZW50LCBDYWxsYmFja0lEKTsKKyAgICB2
b2lkIHNlbGVjdEFsbCgpOwogCiAgICAgdm9pZCB0ZXh0SW5wdXRDb250ZXh0c0luUmVjdChXZWJD
b3JlOjpGbG9hdFJlY3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFdlYktp
dDo6VGV4dElucHV0Q29udGV4dD4mKT4mJik7CiAgICAgdm9pZCBmb2N1c1RleHRJbnB1dENvbnRl
eHQoY29uc3QgVGV4dElucHV0Q29udGV4dCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYpOwpAQCAtMTIyNyw2ICsxMjI4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc2V0VGV4dEF1
dG9zaXppbmcoKTsKICAgICBXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9u
SW5Gb2N1c2VkTm9kZUZvclBvaW50KGNvbnN0IFdlYkNvcmU6OkZyYW1lJiwgY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmLCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQpOwogICAg
IFJlZlB0cjxXZWJDb3JlOjpSYW5nZT4gcmFuZ2VGb3JHcmFudWxhcml0eUF0UG9pbnQoV2ViQ29y
ZTo6RnJhbWUmLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90IGdyYW51bGFyaXR5
LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQpOworICAgIHZvaWQgZGlzcGF0
Y2hTeW50aGV0aWNNb3VzZUV2ZW50c0ZvclNlbGVjdGlvbkdlc3R1cmUoU2VsZWN0aW9uVG91Y2gs
IGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CiAKICAgICB2b2lkIHNlbmRQb3NpdGlvbkluZm9y
bWF0aW9uKEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJiYpOwogICAgIEludGVyYWN0
aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uIHBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJh
Y3Rpb25JbmZvcm1hdGlvblJlcXVlc3QmKTsKQEAgLTE0NjUsNiArMTQ2Nyw5IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBjYXBpdGFsaXplV29yZCgpOwogI2VuZGlmCiAKKyAgICBib29sIHNob3VsZERp
c3BhdGNoU3ludGhldGljTW91c2VFdmVudHNXaGVuTW9kaWZ5aW5nU2VsZWN0aW9uKCkgY29uc3Q7
CisgICAgdm9pZCBwbGF0Zm9ybURpZFNlbGVjdEFsbCgpOworCiAjaWYgRU5BQkxFKENPTlRFWFRf
TUVOVVMpCiAgICAgdm9pZCBkaWRTZWxlY3RJdGVtRnJvbUFjdGl2ZUNvbnRleHRNZW51KGNvbnN0
IFdlYkNvbnRleHRNZW51SXRlbURhdGEmKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggMDEyM2ZkOWQ0
ZmI0YjBhMTkwOTc2NzcwNDZjNGRjZWVkNmM5ODBhYy4uYzAxMjYzMWYwYzgyYmMyYmJkNDJkNWM1
MzhhYmUzNmI1Njg5NzAzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0yMDIsNiArMjAyLDcgQEAgbWVzc2FnZXMg
LT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgUnVuSmF2YVNjcmlwdEluRnJhbWUodWlu
dDY0X3QgZnJhbWVJRCwgU3RyaW5nIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBXZWJL
aXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBGb3JjZVJlcGFpbnQoV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCiAKKyAgICBTZWxlY3RBbGwoKQogICAgIFNjaGVkdWxlRnVsbEVk
aXRvclN0YXRlVXBkYXRlKCkKIAogI2lmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCBjMmRiMWY1
YjMwYjNjNzBlMTk5M2ZlNjVkNjNlMTM1ODFjMmY4NTY4Li4wZDA1NzQ0YzliZWI2ZjAyZjA0Yzdh
ZmMxY2Y0Yzk4MmY2MzgxMzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMTQ3OSwxMiArMTQ3OSw2MSBAQCBzdGF0aWMg
UmVmUHRyPFJhbmdlPiByYW5nZUF0V29yZEJvdW5kYXJ5Rm9yUG9zaXRpb24oRnJhbWUqIGZyYW1l
LCBjb25zdCBWaXNpYmxlUAogICAgIHJldHVybiAoYmFzZSA8IGV4dGVudCkgPyBSYW5nZTo6Y3Jl
YXRlKCpmcmFtZS0+ZG9jdW1lbnQoKSwgYmFzZSwgZXh0ZW50KSA6IFJhbmdlOjpjcmVhdGUoKmZy
YW1lLT5kb2N1bWVudCgpLCBleHRlbnQsIGJhc2UpOwogfQogCi12b2lkIFdlYlBhZ2U6OmNsZWFy
U2VsZWN0aW9uKCl7CitzdGF0aWMgSW50UmVjdCBlbGVtZW50UmVjdEluUm9vdFZpZXdDb29yZGlu
YXRlcyhjb25zdCBFbGVtZW50JiBlbGVtZW50KQoreworICAgIGF1dG8qIGZyYW1lID0gZWxlbWVu
dC5kb2N1bWVudCgpLmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIHsg
fTsKKworICAgIGF1dG8qIHZpZXcgPSBmcmFtZS0+dmlldygpOworICAgIGlmICghdmlldykKKyAg
ICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1dG8qIHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJl
cigpOworICAgIGlmICghcmVuZGVyZXIpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICByZXR1
cm4gdmlldy0+Y29udGVudHNUb1Jvb3RWaWV3KHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94
UmVjdCgpKTsKK30KKwordm9pZCBXZWJQYWdlOjpjbGVhclNlbGVjdGlvbigpCit7CiAgICAgbV9z
dGFydGluZ0dlc3R1cmVSYW5nZSA9IG51bGxwdHI7CiAgICAgbV9jdXJyZW50QmxvY2tTZWxlY3Rp
b24gPSBudWxscHRyOwogICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFp
bkZyYW1lKCkuc2VsZWN0aW9uKCkuY2xlYXIoKTsKIH0KIAordm9pZCBXZWJQYWdlOjpkaXNwYXRj
aFN5bnRoZXRpY01vdXNlRXZlbnRzRm9yU2VsZWN0aW9uR2VzdHVyZShTZWxlY3Rpb25Ub3VjaCB0
b3VjaCwgY29uc3QgSW50UG9pbnQmIHBvaW50KQoreworICAgIGF1dG8gZnJhbWUgPSBtYWtlUmVm
KG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkpOworICAgIGlm
ICghZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzQ29udGVudEVkaXRhYmxlKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIEludFJlY3QgZm9jdXNlZEVsZW1lbnRSZWN0OworICAgIGlm
IChtX2ZvY3VzZWRFbGVtZW50KQorICAgICAgICBmb2N1c2VkRWxlbWVudFJlY3QgPSBlbGVtZW50
UmVjdEluUm9vdFZpZXdDb29yZGluYXRlcygqbV9mb2N1c2VkRWxlbWVudCk7CisKKyAgICBpZiAo
Zm9jdXNlZEVsZW1lbnRSZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0
byBhZGp1c3RlZFBvaW50ID0gcG9pbnQuY29uc3RyYWluZWRCZXR3ZWVuKGZvY3VzZWRFbGVtZW50
UmVjdC5taW5YTWluWUNvcm5lcigpLCBmb2N1c2VkRWxlbWVudFJlY3QubWF4WE1heFlDb3JuZXIo
KSk7CisgICAgYXV0byYgZXZlbnRIYW5kbGVyID0gbV9wYWdlLT5tYWluRnJhbWUoKS5ldmVudEhh
bmRsZXIoKTsKKyAgICBzd2l0Y2ggKHRvdWNoKSB7CisgICAgY2FzZSBTZWxlY3Rpb25Ub3VjaDo6
U3RhcnRlZDoKKyAgICAgICAgZXZlbnRIYW5kbGVyLmhhbmRsZU1vdXNlUHJlc3NFdmVudCh7IGFk
anVzdGVkUG9pbnQsIGFkanVzdGVkUG9pbnQsIExlZnRCdXR0b24sIFBsYXRmb3JtRXZlbnQ6Ok1v
dXNlUHJlc3NlZCwgMSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIFdhbGxUaW1lOjpub3co
KSwgV2ViQ29yZTo6Rm9yY2VBdENsaWNrLCBOb1RhcCB9KTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBTZWxlY3Rpb25Ub3VjaDo6TW92ZWQ6CisgICAgICAgIGV2ZW50SGFuZGxlci5kaXNwYXRj
aFN5bnRoZXRpY01vdXNlTW92ZSh7IGFkanVzdGVkUG9pbnQsIGFkanVzdGVkUG9pbnQsIExlZnRC
dXR0b24sIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IGZhbHNlLCBXYWxsVGltZTo6bm93KCksIFdlYkNvcmU6OkZvcmNlQXRDbGljaywgTm9UYXAgfSk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2VsZWN0aW9uVG91Y2g6OkVuZGVkOgorICAgIGNh
c2UgU2VsZWN0aW9uVG91Y2g6OkVuZGVkTW92aW5nRm9yd2FyZDoKKyAgICBjYXNlIFNlbGVjdGlv
blRvdWNoOjpFbmRlZE1vdmluZ0JhY2t3YXJkOgorICAgIGNhc2UgU2VsZWN0aW9uVG91Y2g6OkVu
ZGVkTm90TW92aW5nOgorICAgICAgICBldmVudEhhbmRsZXIuaGFuZGxlTW91c2VSZWxlYXNlRXZl
bnQoeyBhZGp1c3RlZFBvaW50LCBhZGp1c3RlZFBvaW50LCBMZWZ0QnV0dG9uLCBQbGF0Zm9ybUV2
ZW50OjpNb3VzZVJlbGVhc2VkLCAxLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgV2FsbFRp
bWU6Om5vdygpLCBXZWJDb3JlOjpGb3JjZUF0Q2xpY2ssIE5vVGFwIH0pOworICAgICAgICBicmVh
azsKKyAgICB9Cit9CisKIHZvaWQgV2ViUGFnZTo6dXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMo
Y29uc3QgSW50UG9pbnQmIHBvaW50LCB1aW50MzJfdCB0b3VjaGVzLCBib29sIGJhc2VJc1N0YXJ0
LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5m
b2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKQEAgLTE0OTksNyArMTU0OCwx
MSBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzKGNvbnN0IEludFBv
aW50JiBwb2ludCwgdWludDMyX3QgdG91Y2hlcwogICAgIFZpc2libGVQb3NpdGlvbiByZXN1bHQ7
CiAgICAgU2VsZWN0aW9uRmxhZ3MgZmxhZ3MgPSBOb25lOwogCi0gICAgc3dpdGNoIChzdGF0aWNf
Y2FzdDxTZWxlY3Rpb25Ub3VjaD4odG91Y2hlcykpIHsKKyAgICBhdXRvIHNlbGVjdGlvblRvdWNo
ID0gc3RhdGljX2Nhc3Q8U2VsZWN0aW9uVG91Y2g+KHRvdWNoZXMpOworICAgIGlmIChzaG91bGRE
aXNwYXRjaFN5bnRoZXRpY01vdXNlRXZlbnRzV2hlbk1vZGlmeWluZ1NlbGVjdGlvbigpKQorICAg
ICAgICBkaXNwYXRjaFN5bnRoZXRpY01vdXNlRXZlbnRzRm9yU2VsZWN0aW9uR2VzdHVyZShzZWxl
Y3Rpb25Ub3VjaCwgcG9pbnQpOworCisgICAgc3dpdGNoIChzZWxlY3Rpb25Ub3VjaCkgewogICAg
IGNhc2UgU2VsZWN0aW9uVG91Y2g6OlN0YXJ0ZWQ6CiAgICAgY2FzZSBTZWxlY3Rpb25Ub3VjaDo6
RW5kZWROb3RNb3Zpbmc6CiAgICAgICAgIGJyZWFrOwpAQCAtMTU1Nyw3ICsxNjEwLDM2IEBAIHZv
aWQgV2ViUGFnZTo6ZXh0ZW5kU2VsZWN0aW9uKHVpbnQzMl90IGdyYW51bGFyaXR5KQogICAgICAg
ICByZXR1cm47CiAKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb24gPSBmcmFtZS5zZWxlY3Rp
b24oKS5zZWxlY3Rpb24oKS5zdGFydCgpOwotICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVj
dGVkUmFuZ2Uod29yZFJhbmdlRnJvbVBvc2l0aW9uKHBvc2l0aW9uKS5nZXQoKSwgcG9zaXRpb24u
YWZmaW5pdHkoKSwgV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZ
ZXMsIFVzZXJUcmlnZ2VyZWQpOworICAgIGF1dG8gd29yZFJhbmdlID0gd29yZFJhbmdlRnJvbVBv
c2l0aW9uKHBvc2l0aW9uKTsKKyAgICBpZiAoIXdvcmRSYW5nZSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgSW50UG9pbnQgZW5kTG9jYXRpb25Gb3JTeW50aGV0aWNNb3VzZUV2ZW50czsKKyAgICBi
b29sIHNob3VsZERpc3BhdGNoTW91c2VFdmVudHMgPSBzaG91bGREaXNwYXRjaFN5bnRoZXRpY01v
dXNlRXZlbnRzV2hlbk1vZGlmeWluZ1NlbGVjdGlvbigpOworICAgIGlmIChzaG91bGREaXNwYXRj
aE1vdXNlRXZlbnRzKSB7CisgICAgICAgIGF1dG8gc3RhcnRMb2NhdGlvbkZvclN5bnRoZXRpY01v
dXNlRXZlbnRzID0gZnJhbWUudmlldygpLT5jb250ZW50c1RvUm9vdFZpZXcoVmlzaWJsZVBvc2l0
aW9uKHdvcmRSYW5nZS0+c3RhcnRQb3NpdGlvbigpKS5hYnNvbHV0ZUNhcmV0Qm91bmRzKCkpLmNl
bnRlcigpOworICAgICAgICBlbmRMb2NhdGlvbkZvclN5bnRoZXRpY01vdXNlRXZlbnRzID0gZnJh
bWUudmlldygpLT5jb250ZW50c1RvUm9vdFZpZXcoVmlzaWJsZVBvc2l0aW9uKHdvcmRSYW5nZS0+
ZW5kUG9zaXRpb24oKSkuYWJzb2x1dGVDYXJldEJvdW5kcygpKS5jZW50ZXIoKTsKKyAgICAgICAg
ZGlzcGF0Y2hTeW50aGV0aWNNb3VzZUV2ZW50c0ZvclNlbGVjdGlvbkdlc3R1cmUoU2VsZWN0aW9u
VG91Y2g6OlN0YXJ0ZWQsIHN0YXJ0TG9jYXRpb25Gb3JTeW50aGV0aWNNb3VzZUV2ZW50cyk7Cisg
ICAgICAgIGRpc3BhdGNoU3ludGhldGljTW91c2VFdmVudHNGb3JTZWxlY3Rpb25HZXN0dXJlKFNl
bGVjdGlvblRvdWNoOjpNb3ZlZCwgZW5kTG9jYXRpb25Gb3JTeW50aGV0aWNNb3VzZUV2ZW50cyk7
CisgICAgfQorCisgICAgZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZSh3b3JkUmFu
Z2UuZ2V0KCksIHBvc2l0aW9uLmFmZmluaXR5KCksIFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpT
aG91bGRDbG9zZVR5cGluZzo6WWVzLCBVc2VyVHJpZ2dlcmVkKTsKKworICAgIGlmIChzaG91bGRE
aXNwYXRjaE1vdXNlRXZlbnRzKQorICAgICAgICBkaXNwYXRjaFN5bnRoZXRpY01vdXNlRXZlbnRz
Rm9yU2VsZWN0aW9uR2VzdHVyZShTZWxlY3Rpb25Ub3VjaDo6RW5kZWQsIGVuZExvY2F0aW9uRm9y
U3ludGhldGljTW91c2VFdmVudHMpOworfQorCit2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRGlkU2Vs
ZWN0QWxsKCkKK3sKKyAgICBpZiAoIXNob3VsZERpc3BhdGNoU3ludGhldGljTW91c2VFdmVudHNX
aGVuTW9kaWZ5aW5nU2VsZWN0aW9uKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gZnJh
bWUgPSBtYWtlUmVmKG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1l
KCkpOworICAgIGF1dG8gc3RhcnRDYXJldFJlY3QgPSBmcmFtZS0+dmlldygpLT5jb250ZW50c1Rv
Um9vdFZpZXcoVmlzaWJsZVBvc2l0aW9uKGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5z
dGFydCgpKS5hYnNvbHV0ZUNhcmV0Qm91bmRzKCkpOworICAgIGF1dG8gZW5kQ2FyZXRSZWN0ID0g
ZnJhbWUtPnZpZXcoKS0+Y29udGVudHNUb1Jvb3RWaWV3KFZpc2libGVQb3NpdGlvbihmcmFtZS0+
c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuZW5kKCkpLmFic29sdXRlQ2FyZXRCb3VuZHMoKSk7Cisg
ICAgZGlzcGF0Y2hTeW50aGV0aWNNb3VzZUV2ZW50c0ZvclNlbGVjdGlvbkdlc3R1cmUoU2VsZWN0
aW9uVG91Y2g6OlN0YXJ0ZWQsIHN0YXJ0Q2FyZXRSZWN0LmNlbnRlcigpKTsKKyAgICBkaXNwYXRj
aFN5bnRoZXRpY01vdXNlRXZlbnRzRm9yU2VsZWN0aW9uR2VzdHVyZShTZWxlY3Rpb25Ub3VjaDo6
TW92ZWQsIGVuZENhcmV0UmVjdC5jZW50ZXIoKSk7CisgICAgZGlzcGF0Y2hTeW50aGV0aWNNb3Vz
ZUV2ZW50c0ZvclNlbGVjdGlvbkdlc3R1cmUoU2VsZWN0aW9uVG91Y2g6OkVuZGVkLCBlbmRDYXJl
dFJlY3QuY2VudGVyKCkpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnNlbGVjdFdvcmRCYWNrd2FyZCgp
CkBAIC0yNTg0LDE5ICsyNjY2LDYgQEAgdm9pZCBXZWJQYWdlOjpmb2N1c05leHRGb2N1c2VkRWxl
bWVudChib29sIGlzRm9yd2FyZCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6Vm9pZENhbGxiYWNrKGNhbGxiYWNrSUQpKTsKIH0KIAotc3Rh
dGljIEludFJlY3QgZWxlbWVudFJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMoY29uc3QgTm9kZSYg
bm9kZSwgY29uc3QgRnJhbWUmIGZyYW1lKQotewotICAgIGF1dG8qIHZpZXcgPSBmcmFtZS52aWV3
KCk7Ci0gICAgaWYgKCF2aWV3KQotICAgICAgICByZXR1cm4geyB9OwotCi0gICAgYXV0byogcmVu
ZGVyZXIgPSBub2RlLnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFyZW5kZXJlcikKLSAgICAgICAgcmV0
dXJuIHsgfTsKLQotICAgIHJldHVybiB2aWV3LT5jb250ZW50c1RvUm9vdFZpZXcocmVuZGVyZXIt
PmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkpOwotfQotCiB2b2lkIFdlYlBhZ2U6OmdldEZvY3Vz
ZWRFbGVtZW50SW5mb3JtYXRpb24oRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbiYgaW5mb3JtYXRp
b24pCiB7CiAgICAgbGF5b3V0SWZOZWVkZWQoKTsKQEAgLTI2MDQsOCArMjY3Myw3IEBAIHZvaWQg
V2ViUGFnZTo6Z2V0Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbihGb2N1c2VkRWxlbWVudEluZm9y
bWF0aW9uJiBpbmZvcm1hdGlvCiAgICAgaW5mb3JtYXRpb24ubGFzdEludGVyYWN0aW9uTG9jYXRp
b24gPSBtX2xhc3RJbnRlcmFjdGlvbkxvY2F0aW9uOwogCiAgICAgaWYgKGF1dG8qIHJlbmRlcmVy
ID0gbV9mb2N1c2VkRWxlbWVudC0+cmVuZGVyZXIoKSkgewotICAgICAgICBhdXRvJiBlbGVtZW50
RnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwot
ICAgICAgICBpbmZvcm1hdGlvbi5lbGVtZW50UmVjdCA9IGVsZW1lbnRSZWN0SW5Sb290Vmlld0Nv
b3JkaW5hdGVzKCptX2ZvY3VzZWRFbGVtZW50LCBlbGVtZW50RnJhbWUpOworICAgICAgICBpbmZv
cm1hdGlvbi5lbGVtZW50UmVjdCA9IGVsZW1lbnRSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKCpt
X2ZvY3VzZWRFbGVtZW50KTsKICAgICAgICAgaW5mb3JtYXRpb24ubm9kZUZvbnRTaXplID0gcmVu
ZGVyZXItPnN0eWxlKCkuZm9udERlc2NyaXB0aW9uKCkuY29tcHV0ZWRTaXplKCk7CiAKICAgICAg
ICAgYm9vbCBpbkZpeGVkID0gZmFsc2U7CkBAIC0yNjIxLDEzICsyNjg5LDExIEBAIHZvaWQgV2Vi
UGFnZTo6Z2V0Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbihGb2N1c2VkRWxlbWVudEluZm9ybWF0
aW9uJiBpbmZvcm1hdGlvCiAgICAgaW5mb3JtYXRpb24uYWxsb3dzVXNlclNjYWxpbmcgPSBtX3Zp
ZXdwb3J0Q29uZmlndXJhdGlvbi5hbGxvd3NVc2VyU2NhbGluZygpOwogICAgIGluZm9ybWF0aW9u
LmFsbG93c1VzZXJTY2FsaW5nSWdub3JpbmdBbHdheXNTY2FsYWJsZSA9IG1fdmlld3BvcnRDb25m
aWd1cmF0aW9uLmFsbG93c1VzZXJTY2FsaW5nSWdub3JpbmdBbHdheXNTY2FsYWJsZSgpOwogICAg
IGlmIChhdXRvKiBuZXh0RWxlbWVudCA9IG5leHRBc3Npc3RhYmxlRWxlbWVudChtX2ZvY3VzZWRF
bGVtZW50LmdldCgpLCAqbV9wYWdlLCB0cnVlKSkgewotICAgICAgICBpZiAoYXV0byogZnJhbWUg
PSBuZXh0RWxlbWVudC0+ZG9jdW1lbnQoKS5mcmFtZSgpKQotICAgICAgICAgICAgaW5mb3JtYXRp
b24ubmV4dE5vZGVSZWN0ID0gZWxlbWVudFJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMoKm5leHRF
bGVtZW50LCAqZnJhbWUpOworICAgICAgICBpbmZvcm1hdGlvbi5uZXh0Tm9kZVJlY3QgPSBlbGVt
ZW50UmVjdEluUm9vdFZpZXdDb29yZGluYXRlcygqbmV4dEVsZW1lbnQpOwogICAgICAgICBpbmZv
cm1hdGlvbi5oYXNOZXh0Tm9kZSA9IHRydWU7CiAgICAgfQogICAgIGlmIChhdXRvKiBwcmV2aW91
c0VsZW1lbnQgPSBuZXh0QXNzaXN0YWJsZUVsZW1lbnQobV9mb2N1c2VkRWxlbWVudC5nZXQoKSwg
Km1fcGFnZSwgZmFsc2UpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBmcmFtZSA9IHByZXZpb3VzRWxl
bWVudC0+ZG9jdW1lbnQoKS5mcmFtZSgpKQotICAgICAgICAgICAgaW5mb3JtYXRpb24ucHJldmlv
dXNOb2RlUmVjdCA9IGVsZW1lbnRSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKCpwcmV2aW91c0Vs
ZW1lbnQsICpmcmFtZSk7CisgICAgICAgIGluZm9ybWF0aW9uLnByZXZpb3VzTm9kZVJlY3QgPSBl
bGVtZW50UmVjdEluUm9vdFZpZXdDb29yZGluYXRlcygqcHJldmlvdXNFbGVtZW50KTsKICAgICAg
ICAgaW5mb3JtYXRpb24uaGFzUHJldmlvdXNOb2RlID0gdHJ1ZTsKICAgICB9CiAgICAgaW5mb3Jt
YXRpb24uZm9jdXNlZEVsZW1lbnRJZGVudGlmaWVyID0gbV9jdXJyZW50Rm9jdXNlZEVsZW1lbnRJ
ZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDUzYzJjYjY1MzAyMDdkYTFlNmYwM2RiYWNlODBmODIwNjY4MDFmZTUuLjhhZmJkNzJh
ZWQ5NzdiMDE3ZmRlMzEwODNjYmI5MjljNDc3NTdiYTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxOS0wNS0wNyAg
V2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBB
ZGQgYSBxdWlyayB0byBzeW50aGVzaXplIG1vdXNlIGV2ZW50cyB3aGVuIG1vZGlmeWluZyB0aGUg
c2VsZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTc2ODMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ4MDAzOTgwPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBhbiBleGlzdGluZyBidWcs
IHdoZXJlaW4gbWVudSBhcHBlYXJhbmNlIGFuZCBkaXNtaXNzYWwgY2FsbGJhY2tzIHdlcmUgbm90
IGNsZWFyZWQgdXBvbiBVSSBzY3JpcHQgY29tcGxldGlvbi4KKyAgICAgICAgVGhpcyB3YXMgY2F1
c2luZyBhbiBhc3NlcnRpb24gaWYgdGhlIHRlc3QgZW5kZWQsIGFuZCBzdWNoIGEgY2FsbGJhY2sg
d2FzIHN0aWxsIHJlZ2lzdGVyZWQuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2lvcy9V
SVNjcmlwdENvbnRyb2xsZXJJT1MubW06CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxl
cjo6cGxhdGZvcm1DbGVhckFsbENhbGxiYWNrcyk6CisKIDIwMTktMDUtMDcgIFdlbnNvbiBIc2ll
aCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBBdm9pZCBjcmFz
aGluZyB0aGUgVUkgcHJvY2VzcyB3aGVuIHdyaXRpbmcgZW1wdHkgZGF0YSB0byB0aGUgcGFzdGVi
b2FyZApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250
cm9sbGVySU9TLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9s
bGVySU9TLm1tCmluZGV4IDM3NTU0YzAwM2Q2NzcxNDg4MmU2YzY3YjUyZjkyYTZiYTVhMTZmZWYu
Ljk5MzMxNTA1MDNmNDg5ZDU2NzgxMWEzNTEzMmM1ZWQ1YzVhNDc3YzkgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0KQEAgLTk5
MywyMCArOTkzLDcgQEAgdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OnBsYXRmb3JtU2V0RGlkRW5k
U2Nyb2xsaW5nQ2FsbGJhY2soKQogCiB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6cGxhdGZvcm1D
bGVhckFsbENhbGxiYWNrcygpCiB7Ci0gICAgVGVzdFJ1bm5lcldLV2ViVmlldyAqd2ViVmlldyA9
IFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVZpZXco
KTsKLSAgICAKLSAgICB3ZWJWaWV3LmRpZFN0YXJ0Rm9ybUNvbnRyb2xJbnRlcmFjdGlvbkNhbGxi
YWNrID0gbmlsOwotICAgIHdlYlZpZXcuZGlkRW5kRm9ybUNvbnRyb2xJbnRlcmFjdGlvbkNhbGxi
YWNrID0gbmlsOwotICAgIHdlYlZpZXcuZGlkU2hvd0ZvcmNlUHJlc3NQcmV2aWV3Q2FsbGJhY2sg
PSBuaWw7Ci0gICAgd2ViVmlldy5kaWREaXNtaXNzRm9yY2VQcmVzc1ByZXZpZXdDYWxsYmFjayA9
IG5pbDsKLSAgICB3ZWJWaWV3LmRpZEVuZFpvb21pbmdDYWxsYmFjayA9IG5pbDsKLSAgICB3ZWJW
aWV3LndpbGxCZWdpblpvb21pbmdDYWxsYmFjayA9IG5pbDsKLSAgICB3ZWJWaWV3LmRpZEhpZGVL
ZXlib2FyZENhbGxiYWNrID0gbmlsOwotICAgIHdlYlZpZXcuZGlkU2hvd0tleWJvYXJkQ2FsbGJh
Y2sgPSBuaWw7Ci0gICAgd2ViVmlldy53aWxsUHJlc2VudFBvcG92ZXJDYWxsYmFjayA9IG5pbDsK
LSAgICB3ZWJWaWV3LmRpZERpc21pc3NQb3BvdmVyQ2FsbGJhY2sgPSBuaWw7Ci0gICAgd2ViVmll
dy5kaWRFbmRTY3JvbGxpbmdDYWxsYmFjayA9IG5pbDsKLSAgICB3ZWJWaWV3LnJvdGF0aW9uRGlk
RW5kQ2FsbGJhY2sgPSBuaWw7CisgICAgW1Rlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWlu
V2ViVmlldygpLT5wbGF0Zm9ybVZpZXcoKSByZXNldEludGVyYWN0aW9uQ2FsbGJhY2tzXTsKIH0K
IAogdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OnNldFNhZmVBcmVhSW5zZXRzKGRvdWJsZSB0b3As
IGRvdWJsZSByaWdodCwgZG91YmxlIGJvdHRvbSwgZG91YmxlIGxlZnQpCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOGIxZDMy
ZTkwMzEzYzJkMmQzMmQ5MTFhMDQwYjQzZjk0MGI3NTYyOS4uZTZlOWQwODZmZWVlYjA3MWI3ZTU5
NzYxODRlMDUyNzI3YjlhZjAyYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE5LTA1LTA3ICBX
ZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEFk
ZCBhIHF1aXJrIHRvIHN5bnRoZXNpemUgbW91c2UgZXZlbnRzIHdoZW4gbW9kaWZ5aW5nIHRoZSBz
ZWxlY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5NzY4MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDgwMDM5ODA+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBhIG5ldyBsYXlvdXQgdGVz
dCB0byBlbmFibGUgdGhlIHNpdGUtc3BlY2lmaWMgcXVpcmsgYW5kIHZlcmlmeSB0aGF0IG1vdXNl
IGV2ZW50cyBhcmUgZGlzcGF0Y2hlZCB3aGVuCisgICAgICAgIGNoYW5naW5nIHNlbGVjdGlvbiwg
Ym90aCB2aWEgdGhlIGNhbGxvdXQgbWVudSBhbmQgYnkgbW92aW5nIHRoZSBzZWxlY3Rpb24gZ3Jh
YmJlciB1c2luZyBnZXN0dXJlcy4KKworICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2lvcy9k
aXNwYXRjaC1tb3VzZS1ldmVudHMtd2hlbi1tb2RpZnlpbmctc2VsZWN0aW9uLXF1aXJrLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vaW9zL2Rpc3BhdGNo
LW1vdXNlLWV2ZW50cy13aGVuLW1vZGlmeWluZy1zZWxlY3Rpb24tcXVpcmsuaHRtbDogQWRkZWQu
CisgICAgICAgICogcmVzb3VyY2VzL3VpLWhlbHBlci5qczoKKyAgICAgICAgKHdpbmRvdy5VSUhl
bHBlci53YWl0Rm9yTWVudVRvSGlkZS5yZXR1cm4ubmV3LlByb21pc2UpOgorICAgICAgICAod2lu
ZG93LlVJSGVscGVyLndhaXRGb3JNZW51VG9IaWRlKToKKworICAgICAgICBJbnRyb2R1Y2UgYSBu
ZXcgaGVscGVyIG1ldGhvZCB0byB3YWl0IGZvciB0aGUgbWVudSB0byBoaWRlIChvbiBpT1MsIHRo
aXMgcmVmZXJzIHRvIHRoZSBjYWxsb3V0IG1lbnUpLgorCiAyMDE5LTA1LTA3ICBBbnR0aSBLb2l2
aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICA8Ym9keT4gd2l0aCBvdmVyZmxvdzpo
aWRkZW4gQ1NTIGlzIHNjcm9sbGFibGUgb24gaU9TCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9l
ZGl0aW5nL3NlbGVjdGlvbi9pb3MvZGlzcGF0Y2gtbW91c2UtZXZlbnRzLXdoZW4tbW9kaWZ5aW5n
LXNlbGVjdGlvbi1xdWlyay1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVj
dGlvbi9pb3MvZGlzcGF0Y2gtbW91c2UtZXZlbnRzLXdoZW4tbW9kaWZ5aW5nLXNlbGVjdGlvbi1x
dWlyay1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGZiZGZkZGVhOGIwMjIxNDUzZjJhYjUyMTIx
MGE0MjkwZGE2YzA5MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2Vs
ZWN0aW9uL2lvcy9kaXNwYXRjaC1tb3VzZS1ldmVudHMtd2hlbi1tb2RpZnlpbmctc2VsZWN0aW9u
LXF1aXJrLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMwIEBACitUaGlzIHRlc3QgdmVyaWZpZXMg
dGhhdCB3aGVuIHRoZSAnbW91c2UgZXZlbnQgc3ludGhlc2lzIG9uIHNlbGVjdGlvbicgcXVpcmsg
aXMgZW5hYmxlZCwgdGV4dCBzZWxlY3Rpb24gZGlzcGF0Y2hlcyBtb3VzZSBldmVudHMgdGhhdCBt
aW1pYyB0aGUgdXNlciBzZWxlY3RpbmcgdGV4dC4gVG8gcnVuIHRoZSB0ZXN0IG1hbnVhbGx5LCB1
c2UgdGhlIGNhbGxvdXQgbWVudSB0byBzZWxlY3QgdGV4dCBvciBzZWxlY3Rpb24gaGFuZGxlcywg
YW5kIHZlcmlmeSB0aGF0IG1vdXNlZG93biwgbW91c2Vtb3ZlIGFuZCBtb3VzZXVwIGFyZSBkaXNw
YXRjaGVkIGFuZCBsb2dnZWQgaW4gdGhlIG91dHB1dCBhcmVhIGJlbG93LgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworQXR0ZW1wdGluZyB0byBzaG93IHRoZSBjYWxsb3V0IGJhci4K
K09ic2VydmVkIGV2ZW50IHR5cGU6IG1vdXNlZG93bgorT2JzZXJ2ZWQgZXZlbnQgdHlwZTogbW91
c2V1cAorT2JzZXJ2ZWQgZXZlbnQgdHlwZTogbW91c2Vkb3duCitPYnNlcnZlZCBldmVudCB0eXBl
OiBtb3VzZXVwCitQQVNTIERpc3BsYXllZCB0aGUgY2FsbG91dCBiYXIuCisKK0F0dGVtcHRpbmcg
dG8gc2VsZWN0IHRoZSBsYXN0IHdvcmQuCitPYnNlcnZlZCBldmVudCB0eXBlOiBtb3VzZWRvd24K
K09ic2VydmVkIGV2ZW50IHR5cGU6IG1vdXNlbW92ZQorT2JzZXJ2ZWQgZXZlbnQgdHlwZTogbW91
c2V1cAorUEFTUyBTZWxlY3RlZCB0aGUgbGFzdCB3b3JkLgorCitBdHRlbXB0aW5nIHRvIGRpc21p
c3MgdGhlIGNhbGxvdXQgYmFyIGJ5IGV4ZWN1dGluZyAnU2VsZWN0QWxsJy4KK1BBU1MgRGlzbWlz
c2VkIHRoZSBjYWxsb3V0IGJhci4KKworQXR0ZW1wdGluZyB0byBtb3ZlIHRoZSBzZWxlY3Rpb24g
Z3JhYmJlci4KK09ic2VydmVkIGV2ZW50IHR5cGU6IG1vdXNlZG93bgorT2JzZXJ2ZWQgZXZlbnQg
dHlwZTogbW91c2Vtb3ZlCitPYnNlcnZlZCBldmVudCB0eXBlOiBtb3VzZXVwCitQQVNTIE1vdmVk
IHRoZSBzZWxlY3Rpb24gZ3JhYmJlci4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVj
dGlvbi9pb3MvZGlzcGF0Y2gtbW91c2UtZXZlbnRzLXdoZW4tbW9kaWZ5aW5nLXNlbGVjdGlvbi1x
dWlyay5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaW9zL2Rpc3BhdGNoLW1v
dXNlLWV2ZW50cy13aGVuLW1vZGlmeWluZy1zZWxlY3Rpb24tcXVpcmsuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wYTJmYjk1YTVkZmE0YzI0N2FkZmFiNDViZTFmMTFiNWI1OWNiZjg4Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaW9zL2Rpc3BhdGNoLW1vdXNlLWV2
ZW50cy13aGVuLW1vZGlmeWluZy1zZWxlY3Rpb24tcXVpcmsuaHRtbApAQCAtMCwwICsxLDk4IEBA
Cis8IURPQ1RZUEUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIHVzZUZsZXhpYmxlVmll
d3BvcnQ9dHJ1ZSBdIC0tPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvYmFzaWMtZ2VzdHVyZXMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0
IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSwgdXNlci1zY2Fs
YWJsZT1ubyI+Cis8c3R5bGU+Citib2R5LCBodG1sIHsKKyAgICBtYXJnaW46IDA7Cit9CisuZWRp
dG9yIHsKKyAgICBib3JkZXI6IDJweCBzb2xpZCB0b21hdG87CisgICAgd2lkdGg6IDMwMHB4Owor
ICAgIGhlaWdodDogMzAwcHg7CisgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKKyAgICBmb250
LXNpemU6IDMycHg7CisgICAgcGFkZGluZzogMTBweDsKK30KKworI2NvbnNvbGUsICNkZXNjcmlw
dGlvbiB7CisgICAgd2lkdGg6IDMwMHB4OworICAgIGhlaWdodDogMTAwcHg7CisgICAgb3ZlcmZs
b3c6IHNjcm9sbDsKK30KKzwvc3R5bGU+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5pbnRlcm5hbHMp
CisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFNob3VsZERpc3BhdGNoU3ludGhldGljTW91c2VF
dmVudHNXaGVuTW9kaWZ5aW5nU2VsZWN0aW9uKHRydWUpOworCitsYXN0RXZlbnQgPSBudWxsOwor
anNUZXN0SXNBc3luYyA9IHRydWU7CisKK2Z1bmN0aW9uIHJlY29yZEV2ZW50KCkgeworICAgIGlm
ICghbGFzdEV2ZW50IHx8IGV2ZW50LnR5cGUgIT09IGxhc3RFdmVudC50eXBlKQorICAgICAgICBk
ZWJ1ZyhgT2JzZXJ2ZWQgZXZlbnQgdHlwZTogJHtldmVudC50eXBlfWApOworICAgIGxhc3RFdmVu
dCA9IGV2ZW50OworfQorCithZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCByZWNvcmRFdmVu
dCk7CithZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLCByZWNvcmRFdmVudCk7CithZGRFdmVu
dExpc3RlbmVyKCJtb3VzZXVwIiwgcmVjb3JkRXZlbnQpOworCithc3luYyBmdW5jdGlvbiB3YWl0
Rm9yU2VsZWN0aW9uVG9BcHBlYXIoKQoreworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIGNv
bnN0IHJlY3RzID0gYXdhaXQgVUlIZWxwZXIuZ2V0VUlTZWxlY3Rpb25WaWV3UmVjdHMoKTsKKyAg
ICAgICAgaWYgKHJlY3RzLmxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybiByZWN0czsKKyAgICB9
Cit9CisKK2Z1bmN0aW9uIG1pZFBvaW50T2ZSZWN0KHJlY3QpIHsKKyAgICByZXR1cm4gW3JlY3Qu
bGVmdCArIChyZWN0LndpZHRoIC8gMiksIHJlY3QudG9wICsgKHJlY3QuaGVpZ2h0IC8gMildOwor
fQorCithZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgYXN5bmMgKCkgPT4geworICAgIGlmICghd2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGRlc2NyaXB0aW9uKCJUaGlz
IHRlc3QgdmVyaWZpZXMgdGhhdCB3aGVuIHRoZSAnbW91c2UgZXZlbnQgc3ludGhlc2lzIG9uIHNl
bGVjdGlvbicgcXVpcmsgaXMgZW5hYmxlZCwgdGV4dCBzZWxlY3Rpb24gZGlzcGF0Y2hlcyBtb3Vz
ZSBldmVudHMgdGhhdCBtaW1pYyB0aGUgdXNlciBzZWxlY3RpbmcgdGV4dC4gVG8gcnVuIHRoZSB0
ZXN0IG1hbnVhbGx5LCB1c2UgdGhlIGNhbGxvdXQgbWVudSB0byBzZWxlY3QgdGV4dCBvciBzZWxl
Y3Rpb24gaGFuZGxlcywgYW5kIHZlcmlmeSB0aGF0IG1vdXNlZG93biwgbW91c2Vtb3ZlIGFuZCBt
b3VzZXVwIGFyZSBkaXNwYXRjaGVkIGFuZCBsb2dnZWQgaW4gdGhlIG91dHB1dCBhcmVhIGJlbG93
LiIpOworCisgICAgZGVidWcoIlxuQXR0ZW1wdGluZyB0byBzaG93IHRoZSBjYWxsb3V0IGJhci4i
KTsKKyAgICBjb25zdCBlZGl0b3IgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuZWRpdG9yIik7
CisgICAgYXdhaXQgVUlIZWxwZXIuYWN0aXZhdGVFbGVtZW50QW5kV2FpdEZvcklucHV0U2Vzc2lv
bihlZGl0b3IpOworICAgIGF3YWl0IFVJSGVscGVyLmFjdGl2YXRlRWxlbWVudChlZGl0b3IpOwor
ICAgIGF3YWl0IFVJSGVscGVyLndhaXRGb3JNZW51VG9TaG93KCk7CisgICAgdGVzdFBhc3NlZCgi
RGlzcGxheWVkIHRoZSBjYWxsb3V0IGJhci4iKTsKKworICAgIGRlYnVnKCJcbkF0dGVtcHRpbmcg
dG8gc2VsZWN0IHRoZSBsYXN0IHdvcmQuIik7CisgICAgYXdhaXQgVUlIZWxwZXIuY2hvb3NlTWVu
dUFjdGlvbigiU2VsZWN0Iik7CisgICAgY29uc3QgcmVjdHMgPSBhd2FpdCB3YWl0Rm9yU2VsZWN0
aW9uVG9BcHBlYXIoKTsKKyAgICB0ZXN0UGFzc2VkKCJTZWxlY3RlZCB0aGUgbGFzdCB3b3JkLiIp
OworCisgICAgZGVidWcoIlxuQXR0ZW1wdGluZyB0byBkaXNtaXNzIHRoZSBjYWxsb3V0IGJhciBi
eSBleGVjdXRpbmcgJ1NlbGVjdEFsbCcuIik7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIlNl
bGVjdEFsbCIpOworICAgIGF3YWl0IFVJSGVscGVyLndhaXRGb3JNZW51VG9IaWRlKCk7CisgICAg
dGVzdFBhc3NlZCgiRGlzbWlzc2VkIHRoZSBjYWxsb3V0IGJhci4iKTsKKworICAgIGRlYnVnKCJc
bkF0dGVtcHRpbmcgdG8gbW92ZSB0aGUgc2VsZWN0aW9uIGdyYWJiZXIuIik7CisgICAgY29uc3Qg
W2dyYWJiZXJYLCBncmFiYmVyWV0gPSBtaWRQb2ludE9mUmVjdChhd2FpdCBVSUhlbHBlci5nZXRT
ZWxlY3Rpb25FbmRHcmFiYmVyVmlld1JlY3QoKSk7CisgICAgY29uc3QgdG91Y2hEZXN0aW5hdGlv
blggPSBncmFiYmVyWCAtIHJlY3RzWzBdLndpZHRoOworCisgICAgYXdhaXQgdG91Y2hBbmREcmFn
RnJvbVBvaW50VG9Qb2ludChncmFiYmVyWCwgZ3JhYmJlclksIHRvdWNoRGVzdGluYXRpb25YLCBn
cmFiYmVyWSk7CisgICAgYXdhaXQgbGlmdFVwQXRQb2ludCh0b3VjaERlc3RpbmF0aW9uWCwgZ3Jh
YmJlclkpOworICAgIHRlc3RQYXNzZWQoIk1vdmVkIHRoZSBzZWxlY3Rpb24gZ3JhYmJlci4iKTsK
KworICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5lZGl0b3IiKS5yZW1vdmUoKTsKKyAgICBm
aW5pc2hKU1Rlc3QoKTsKK30pOworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgY2xh
c3M9ImVkaXRvciIgY29udGVudGVkaXRhYmxlPlRoZSBxdWljayBicm93biBmb3gganVtcGVkIG92
ZXIgdGhlIGxhenkgZG9nLjwvZGl2PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9yZXNvdXJjZXMvdWktaGVscGVyLmpzIGIvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL3Vp
LWhlbHBlci5qcwppbmRleCAzMGFiOGI1MjFlNjBkYWE3ZjhjZGUyOWNkZjkwYWRkZjY4NGFmM2Nh
Li5lZWExOTNlMzhlYzhlN2VkODUzYTA5MzY4OTM4YzJkNGIxM2VlMzYwIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9yZXNvdXJjZXMvdWktaGVscGVyLmpzCisrKyBiL0xheW91dFRlc3RzL3Jlc291
cmNlcy91aS1oZWxwZXIuanMKQEAgLTgyNyw2ICs4MjcsMTkgQEAgd2luZG93LlVJSGVscGVyID0g
Y2xhc3MgVUlIZWxwZXIgewogICAgICAgICB9KTsKICAgICB9CiAKKyAgICBzdGF0aWMgd2FpdEZv
ck1lbnVUb0hpZGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUg
PT4geworICAgICAgICAgICAgdGVzdFJ1bm5lci5ydW5VSVNjcmlwdChgCisgICAgICAgICAgICAg
ICAgKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICBpZiAodWlDb250cm9sbGVyLmlz
U2hvd2luZ01lbnUpCisgICAgICAgICAgICAgICAgICAgICAgICB1aUNvbnRyb2xsZXIuZGlkSGlk
ZU1lbnVDYWxsYmFjayA9ICgpID0+IHVpQ29udHJvbGxlci51aVNjcmlwdENvbXBsZXRlKCk7Cisg
ICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHVpQ29udHJv
bGxlci51aVNjcmlwdENvbXBsZXRlKCk7CisgICAgICAgICAgICAgICAgfSkoKWAsIHJlc29sdmUp
OworICAgICAgICB9KTsKKyAgICB9CisKICAgICBzdGF0aWMgaXNTaG93aW5nTWVudSgpCiAgICAg
ewogICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>369389</attachid>
            <date>2019-05-08 09:04:02 -0700</date>
            <delta_ts>2019-05-08 12:36:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-197683-20190508090401.patch</filename>
            <type>text/plain</type>
            <size>37094</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ1MDA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjYxNzdkMDQ4MGMwZWU1
Zjk4MmJiZWY4ZmQzOGQxNmZmMDUxYmJlZS4uNTgzZjc1ZDdmNDMxYzA1YTUyYjM2N2M0ZTZkNzEx
ODQyNDEwMTlhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDE5LTA1LTA3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEFkZCBh
IHF1aXJrIHRvIHN5bnRoZXNpemUgbW91c2UgZXZlbnRzIHdoZW4gbW9kaWZ5aW5nIHRoZSBzZWxl
Y3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
NzY4MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDgwMDM5ODA+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2VlIFdlYktpdCBDaGFuZ2VMb2cgZm9y
IG1vcmUgZGV0YWlscy4KKworICAgICAgICBUZXN0OiBlZGl0aW5nL3NlbGVjdGlvbi9pb3MvZGlz
cGF0Y2gtbW91c2UtZXZlbnRzLXdoZW4tbW9kaWZ5aW5nLXNlbGVjdGlvbi1xdWlyay5odG1sCisK
KyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVu
dEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVu
dEhhbmRsZXI6OnN1cHBvcnRzU2VsZWN0aW9uVXBkYXRlc09uTW91c2VEcmFnIGNvbnN0KToKKwor
ICAgICAgICBBZGQgc29tZSBwbGF0Zm9ybSBob29rcyB0byBwcmV2ZW50IG1vdXNlbW92ZSBldmVu
dHMgZnJvbSB1cGRhdGluZyB0aGUgc2VsZWN0aW9uIG9uIGlPUy4KKworICAgICAgICAoV2ViQ29y
ZTo6RXZlbnRIYW5kbGVyOjpzaG91bGRBbGxvd01vdXNlRG93blRvU3RhcnREcmFnIGNvbnN0KToK
KworICAgICAgICBBZGQgc29tZSBwbGF0Zm9ybSBob29rcyB0byBwcmV2ZW50IGRyYWcgYW5kIGRy
b3AgZnJvbSBraWNraW5nIGluIHdoZW4gc2VuZGluZyBzeW50aGV0aWMgbW91c2Vtb3ZlIGV2ZW50
cyB0byB0aGUKKyAgICAgICAgcGFnZSBvbiBpT1MgKGRyYWcgYW5kIGRyb3AgaXMgaW5zdGVhZCB0
cmlnZ2VyZWQgYnkgRXZlbnRIYW5kbGVyOjp0cnlUb0JlZ2luRHJhZ0F0UG9pbnQpLgorCisgICAg
ICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnVwZGF0ZVNlbGVjdGlvbkZvck1vdXNlRHJhZyk6
CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuaDoKKyAgICAgICAgKiBwYWdlL1F1aXJrcy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpRdWlya3M6OnNob3VsZERpc3BhdGNoU3ludGhldGljTW91
c2VFdmVudHNXaGVuTW9kaWZ5aW5nU2VsZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL1F1
aXJrcy5oOgorCisgICAgICAgIEFkZCB0aGUgbmV3IHNpdGUtc3BlY2lmaWMgcXVpcmsuCisKKyAg
ICAgICAgKiBwYWdlL1NldHRpbmdzLnlhbWw6CisgICAgICAgICogcGFnZS9pb3MvRXZlbnRIYW5k
bGVySU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjp0cnlUb0JlZ2luRHJh
Z0F0UG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzdXBwb3J0c1NlbGVj
dGlvblVwZGF0ZXNPbk1vdXNlRHJhZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhh
bmRsZXI6OnNob3VsZEFsbG93TW91c2VEb3duVG9TdGFydERyYWcgY29uc3QpOgorICAgICAgICAq
IHRlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5h
bFNldHRpbmdzOjpCYWNrdXA6OkJhY2t1cCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbFNl
dHRpbmdzOjpCYWNrdXA6OnJlc3RvcmVUbyk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbFNl
dHRpbmdzOjpzZXRTaG91bGREaXNwYXRjaFN5bnRoZXRpY01vdXNlRXZlbnRzV2hlbk1vZGlmeWlu
Z1NlbGVjdGlvbik6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmg6CisgICAg
ICAgICogdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbDoKKworICAgICAgICBBZGQgYW4gaW50
ZXJuYWwgc2V0dGluZ3MgaG9vayB0byBvcHQgaW50byB0aGlzIHF1aXJrLCBmb3IgdXNlIGluIGxh
eW91dCB0ZXN0cy4KKwogMjAxOS0wNS0wNyAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5j
b20+CiAKICAgICAgICAgPGJvZHk+IHdpdGggb3ZlcmZsb3c6aGlkZGVuIENTUyBpcyBzY3JvbGxh
YmxlIG9uIGlPUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCA4OGNlNDVlZTMwM2Q4YThlMzNlOWIzZDQxYTYyYWQxNzk2
MTY3NzhlLi5hYzY1NDE2NjVlYjFkYzU4NTE4Yzc3N2E3MWEwN2NlOGE5YTdlZDdiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDU4IEBACisyMDE5LTA1LTA3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNp
ZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEFkZCBhIHF1aXJrIHRvIHN5bnRoZXNpemUg
bW91c2UgZXZlbnRzIHdoZW4gbW9kaWZ5aW5nIHRoZSBzZWxlY3Rpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NzY4MworICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNDgwMDM5ODA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSW50cm9kdWNlcyBzdXBwb3J0IGZvciBkaXNwYXRjaGluZyBzeW50aGV0aWMg
bW91c2UgZXZlbnRzIHdoZW4gbW9kaWZ5aW5nIHRoZSBzZWxlY3Rpb24gb24gc29tZSB3ZWJzaXRl
cy4gU2VlCisgICAgICAgIGJlbG93IGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpz
ZWxlY3RBbGwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKworICAgICAg
ICBJbnN0ZWFkIG9mIGV4ZWN1dGluZyBhICJTZWxlY3RBbGwiIGVkaXRpbmcgY29tbWFuZCB1c2lu
ZyB0aGUgZ2VuZXJpYyBXZWJQYWdlOjpleGVjdXRlRWRpdENvbW1hbmQgbWV0aG9kLAorICAgICAg
ICBpbnRyb2R1Y2UgYSBzZXBhcmF0ZSBtZXRob2QgZm9yIHNlbGVjdEFsbCB0aGF0IGV4ZWN1dGVz
IHRoZSAiU2VsZWN0QWxsIiBlZGl0IGNvbW1hbmQgYW5kIHRoZW4gZG9lcyBzb21lCisgICAgICAg
IHBsYXRmb3JtLXNwZWNpZmljIHdvcmsuIFNlZSBwbGF0Zm9ybURpZFNlbGVjdEFsbC4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAg
ICAoLVtXS0NvbnRlbnRWaWV3IHNlbGVjdEFsbEZvcldlYlZpZXc6XSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpz
ZWxlY3RBbGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzaG91bGREaXNwYXRjaFN5bnRo
ZXRpY01vdXNlRXZlbnRzV2hlbk1vZGlmeWluZ1NlbGVjdGlvbiBjb25zdCk6CisKKyAgICAgICAg
QWRkIGEgaGVscGVyIG1ldGhvZCB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgcXVpcmsgc2hvdWxk
IGJlIGVuYWJsZWQuCisKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1EaWRTZWxl
Y3RBbGwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjplbGVt
ZW50UmVjdEluUm9vdFZpZXdDb29yZGluYXRlcyk6CisKKyAgICAgICAgTW92ZSB0aGlzIGZ1bmN0
aW9uIGNsb3NlciB0byB0aGUgdG9wIG9mIHRoZSBmaWxlIHNvIHRoYXQgaXQgY2FuIGJlIHVzZWQg
aW4KKyAgICAgICAgZGlzcGF0Y2hTeW50aGV0aWNNb3VzZUV2ZW50c0ZvclNlbGVjdGlvbkdlc3R1
cmUuCisKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y2xlYXJTZWxlY3Rpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpkaXNwYXRjaFN5bnRoZXRpY01vdXNlRXZlbnRzRm9yU2VsZWN0
aW9uR2VzdHVyZSk6CisKKyAgICAgICAgQWRkIGEgaGVscGVyIG1ldGhvZCB0byBkaXNwYXRjaCBh
IHN5bnRoZXRpYyBtb3VzZSBldmVudCBmb3IgYSBnaXZlbiBzZWxlY3Rpb24gZ2VzdHVyZSB0eXBl
LiBVc2VkIGluIHNldmVyYWwKKyAgICAgICAgcGxhY2VzIGluIFdlYlBhZ2VJT1MgdG8gc3ludGhl
c2l6ZSBhbmQgZGlzcGF0Y2ggbW91c2UgZXZlbnRzIGR1cmluZyBzZWxlY3Rpb24uCisKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMpOgorCisgICAg
ICAgIFdoZW4gY2hhbmdpbmcgdGhlIHNlbGVjdGlvbiB3aXRoIHNlbGVjdGlvbiBoYW5kbGVzLCBm
YWtlIG1vdXNlZG93biB3aGVuIHRoZSB1c2VyIGZpcnN0IHRvdWNoZXMgZG93biBvbiB0aGUKKyAg
ICAgICAgc2VsZWN0aW9uIGhhbmRsZTsgbW91c2Vtb3ZlIGFzIHRoZSB1c2VyIGlzIG1vdmluZyB0
aGUgaGFuZGxlIGFyb3VuZDsgYW5kIGZpbmFsbHksIG1vdXNldXAgd2hlbiB0aGUgdXNlciBsZXRz
IGdvLgorCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmV4dGVuZFNlbGVjdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtRGlkU2VsZWN0QWxsKToKKworICAgICAgICBX
aGVuIHRhcHBpbmcgIlNlbGVjdCBBbGwiIGFuZC9vciAiU2VsZWN0IiBpbiB0aGUgY2FsbG91dCBt
ZW51LCBmYWtlIGEgbW91c2Vkb3duIGF0IHRoZSBzZWxlY3Rpb24gc3RhcnQsIHRoZW4gYQorICAg
ICAgICBtb3VzZW1vdmUgYXQgc2VsZWN0aW9uIGVuZCwgYW5kIGZpbmFsbHksIGEgbW91c2V1cCBh
dCBzZWxlY3Rpb24gZW5kLgorCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldEZvY3VzZWRF
bGVtZW50SW5mb3JtYXRpb24pOgorCiAyMDE5LTA1LTA3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25f
aHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU10gQXZvaWQgY3Jhc2hpbmcgdGhlIFVJ
IHByb2Nlc3Mgd2hlbiB3cml0aW5nIGVtcHR5IGRhdGEgdG8gdGhlIHBhc3RlYm9hcmQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCAyMmYwOTljYjJiODVlMDg1OWIxOTc0YmU5
ZDMzMzY2NjdkNDhiOWYxLi43NTg3MGQ3ZDE0NWNkNzhiNWJmYmU2MDJhOTYxYmU2MmQxNjRlYjNi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC03NzYsNyArNzc2LDcgQEAg
Ym9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudChjb25zdCBNb3VzZUV2ZW50
V2l0aEhpdFRlc3RSZXN1bHRzJiBldmUKIAogICAgIC8vIFNpbmdsZSBtb3VzZSBkb3duIG9uIGxp
bmtzIG9yIGltYWdlcyBjYW4gYWx3YXlzIHRyaWdnZXIgZHJhZy1uLWRyb3AuCiAgICAgYm9vbCBp
c01vdXNlRG93bk9uTGlua09ySW1hZ2UgPSBldmVudC5pc092ZXJMaW5rKCkgfHwgZXZlbnQuaGl0
VGVzdFJlc3VsdCgpLmltYWdlKCk7Ci0gICAgbV9tb3VzZURvd25NYXlTdGFydERyYWcgPSBzaW5n
bGVDbGljayAmJiAoIWV2ZW50LmV2ZW50KCkuc2hpZnRLZXkoKSB8fCBpc01vdXNlRG93bk9uTGlu
a09ySW1hZ2UpOworICAgIG1fbW91c2VEb3duTWF5U3RhcnREcmFnID0gc2luZ2xlQ2xpY2sgJiYg
KCFldmVudC5ldmVudCgpLnNoaWZ0S2V5KCkgfHwgaXNNb3VzZURvd25PbkxpbmtPckltYWdlKSAm
JiBzaG91bGRBbGxvd01vdXNlRG93blRvU3RhcnREcmFnKCk7CiAjZW5kaWYKIAogICAgIG1fbW91
c2VEb3duV2FzU2luZ2xlQ2xpY2tJblNlbGVjdGlvbiA9IGZhbHNlOwpAQCAtODQ3LDYgKzg0Nywy
MSBAQCBWaXNpYmxlUG9zaXRpb24gRXZlbnRIYW5kbGVyOjpzZWxlY3Rpb25FeHRlbnRSZXNwZWN0
aW5nRWRpdGluZ0JvdW5kYXJ5KGNvbnN0IFZpcwogfQogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9S
VCkKKworI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQorCitib29sIEV2ZW50SGFuZGxlcjo6c3Vw
cG9ydHNTZWxlY3Rpb25VcGRhdGVzT25Nb3VzZURyYWcoKSBjb25zdAoreworICAgIHJldHVybiB0
cnVlOworfQorCitib29sIEV2ZW50SGFuZGxlcjo6c2hvdWxkQWxsb3dNb3VzZURvd25Ub1N0YXJ0
RHJhZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKKyNlbmRpZgorCiBib29sIEV2
ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VEcmFnZ2VkRXZlbnQoY29uc3QgTW91c2VFdmVudFdpdGhI
aXRUZXN0UmVzdWx0cyYgZXZlbnQsIENoZWNrRHJhZ0h5c3RlcmVzaXMgY2hlY2tEcmFnSHlzdGVy
ZXNpcykKIHsKICAgICBpZiAoIW1fbW91c2VQcmVzc2VkKQpAQCAtOTI2LDYgKzk0MSw5IEBAIGJv
b2wgRXZlbnRIYW5kbGVyOjpldmVudE1heVN0YXJ0RHJhZyhjb25zdCBQbGF0Zm9ybU1vdXNlRXZl
bnQmIGV2ZW50KSBjb25zdAogCiB2b2lkIEV2ZW50SGFuZGxlcjo6dXBkYXRlU2VsZWN0aW9uRm9y
TW91c2VEcmFnKCkKIHsKKyAgICBpZiAoIXN1cHBvcnRzU2VsZWN0aW9uVXBkYXRlc09uTW91c2VE
cmFnKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUu
dmlldygpOwogICAgIGlmICghdmlldykKICAgICAgICAgcmV0dXJuOwpAQCAtOTQxLDYgKzk1OSw5
IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjp1cGRhdGVTZWxlY3Rpb25Gb3JNb3VzZURyYWcoKQogCiB2
b2lkIEV2ZW50SGFuZGxlcjo6dXBkYXRlU2VsZWN0aW9uRm9yTW91c2VEcmFnKGNvbnN0IEhpdFRl
c3RSZXN1bHQmIGhpdFRlc3RSZXN1bHQpCiB7CisgICAgaWYgKCFzdXBwb3J0c1NlbGVjdGlvblVw
ZGF0ZXNPbk1vdXNlRHJhZygpKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAoIW1fbW91c2VE
b3duTWF5U3RhcnRTZWxlY3QpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmgKaW5kZXggN2ZlOTdhNDgzYzE3N2E4NGNjZTRlM2I2OGE3ZDk1ODlkNGQyZTI5ZC4u
ZjZjM2ZjODE2ZGJjODJlMDVlYTkxODlkMDVlNmU0NDJlNzAyNGVmMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5oCkBAIC0zNjUsNiArMzY1LDcgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJM
RShEUkFHX1NVUFBPUlQpCiAgICAgYm9vbCBoYW5kbGVNb3VzZURyYWdnZWRFdmVudChjb25zdCBN
b3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiwgQ2hlY2tEcmFnSHlzdGVyZXNpcyA9IFNob3Vs
ZENoZWNrRHJhZ0h5c3RlcmVzaXMpOworICAgIGJvb2wgc2hvdWxkQWxsb3dNb3VzZURvd25Ub1N0
YXJ0RHJhZygpIGNvbnN0OwogI2VuZGlmCiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhbmRs
ZU1vdXNlUmVsZWFzZUV2ZW50KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmKTsK
QEAgLTQ1Nyw2ICs0NTgsNyBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkK
ICAgICBEcmFnU291cmNlQWN0aW9uIHVwZGF0ZURyYWdTb3VyY2VBY3Rpb25zQWxsb3dlZCgpIGNv
bnN0OworICAgIGJvb2wgc3VwcG9ydHNTZWxlY3Rpb25VcGRhdGVzT25Nb3VzZURyYWcoKSBjb25z
dDsKICNlbmRpZgogCiAgICAgLy8gVGhlIGZvbGxvd2luZyBhcmUgY2FsbGVkIGF0IHRoZSBiZWdp
bm5pbmcgb2YgaGFuZGxlTW91c2VVcCBhbmQgaGFuZGxlRHJhZy4gIApAQCAtNjE2LDYgKzYxOCwx
MCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9kaWRTdGFydERyYWcgeyBmYWxzZSB9OwogICAgIGJv
b2wgbV9pc0hhbmRsaW5nV2hlZWxFdmVudCB7IGZhbHNlIH07CiAKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQorICAgIGJvb2wgbV9zaG91bGRBbGxvd01vdXNlRG93blRvU3RhcnREcmFnIHsgZmFs
c2UgfTsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKENVUlNPUl9WSVNJQklMSVRZKQogICAgIFRpbWVy
IG1fYXV0b0hpZGVDdXJzb3JUaW1lcjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9RdWlya3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9RdWlya3MuY3BwCmluZGV4
IGIxZjFmZmRiNWFlNDAxMWMwYTk2ZjFmMTljOTJiNGUyZTljYmZlOTQuLjUyMmEzM2E3YmI5MGEx
OTE5NzJjYjBiNTI3MTRkMzM4YTAwZWE3M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUXVpcmtzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5jcHAKQEAgLTIz
Nyw2ICsyMzcsMjQgQEAgc3RhdGljIGJvb2wgc2hvdWxkU3VwcHJlc3NBdXRvY29ycmVjdGlvbkFu
ZEF1dG9jYXB0aWFsaXphdGlvbkluSGlkZGVuRWRpdGFibGVBcmUKIAogI2VuZGlmCiAKK2Jvb2wg
UXVpcmtzOjpzaG91bGREaXNwYXRjaFN5bnRoZXRpY01vdXNlRXZlbnRzV2hlbk1vZGlmeWluZ1Nl
bGVjdGlvbigpIGNvbnN0Cit7CisgICAgaWYgKG1fZG9jdW1lbnQtPnNldHRpbmdzKCkuc2hvdWxk
RGlzcGF0Y2hTeW50aGV0aWNNb3VzZUV2ZW50c1doZW5Nb2RpZnlpbmdTZWxlY3Rpb24oKSkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoIW5lZWRzUXVpcmtzKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGF1dG8gaG9zdCA9IG1fZG9jdW1lbnQtPnRvcERvY3VtZW50KCku
dXJsKCkuaG9zdCgpOworICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShob3N0
LCAibWVkaXVtLmNvbSIpIHx8IGhvc3QuZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgiLm1lZGl1
bS5jb20iKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UoaG9zdCwgIndlZWJseS5jb20iKSB8fCBob3N0LmVuZHNXaXRoSWdub3Jp
bmdBU0NJSUNhc2UoIi53ZWVibHkuY29tIikpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAg
cmV0dXJuIGZhbHNlOworfQorCiBib29sIFF1aXJrczo6c2hvdWxkU3VwcHJlc3NBdXRvY29ycmVj
dGlvbkFuZEF1dG9jYXB0aWFsaXphdGlvbkluSGlkZGVuRWRpdGFibGVBcmVhcygpIGNvbnN0CiB7
CiAgICAgaWYgKCFuZWVkc1F1aXJrcygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9RdWlya3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmgKaW5kZXggZTkyMGJjMzI2
Nzk3ZWU4ODg4NDJlOTFmZDM2Yjc2NDYxMzQzYzRjOC4uNzY4OWY3MGFmNjU5YjMxMTlhNmQ4Y2Rm
NGY3ZGE4YzI1MDMzOTAwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9RdWlya3Mu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5oCkBAIC01Miw2ICs1Miw3IEBAIHB1
YmxpYzoKICAgICBib29sIHNob3VsZERpc2FibGVQb2ludGVyRXZlbnRzUXVpcmsoKSBjb25zdDsK
ICAgICBib29sIG5lZWRzSW5wdXRNb2RlTm9uZUltcGxpY2l0bHkoY29uc3QgSFRNTEVsZW1lbnQm
KSBjb25zdDsKIAorICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxkRGlzcGF0Y2hTeW50aGV0
aWNNb3VzZUV2ZW50c1doZW5Nb2RpZnlpbmdTZWxlY3Rpb24oKSBjb25zdDsKICAgICBXRUJDT1JF
X0VYUE9SVCBib29sIHNob3VsZFN1cHByZXNzQXV0b2NvcnJlY3Rpb25BbmRBdXRvY2FwdGlhbGl6
YXRpb25JbkhpZGRlbkVkaXRhYmxlQXJlYXMoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBi
b29sIGlzVG91Y2hCYXJVcGRhdGVTdXByZXNzZWRGb3JIaWRkZW5Db250ZW50RWRpdGFibGUoKSBj
b25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzTmV2ZXJSaWNobHlFZGl0YWJsZUZvclRv
dWNoQmFyKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdz
LnlhbWwgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwKaW5kZXggZDMwYzgxNWU5
Y2M2OGViMjczNjcxMTE2MTlmNDlhNzEyYmI4MDIyNS4uYTM0YjgyZDMwZTY0YzJlZTM2YjQ2ZDky
Y2Y5NzAwZTFlNDVmODA2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5n
cy55YW1sCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbApAQCAtODM0LDYg
KzgzNCw5IEBAIGJsb2NraW5nT2ZTbWFsbFBsdWdpbnNFbmFibGVkOgogc2hvdWxkRGVjaWRlUG9s
aWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9va1ByZXZpZXc6CiAgIGluaXRpYWw6IGZhbHNlCiAKK3No
b3VsZERpc3BhdGNoU3ludGhldGljTW91c2VFdmVudHNXaGVuTW9kaWZ5aW5nU2VsZWN0aW9uOgor
ICBpbml0aWFsOiBmYWxzZQorCiAjIERlcHJlY2F0ZWQKIAogaWNlQ2FuZGlkYXRlRmlsdGVyaW5n
RW5hYmxlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0V2ZW50SGFuZGxl
cklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0V2ZW50SGFuZGxlcklPUy5tbQppbmRl
eCA1MWEyZDVlNjYyZmEzNzNkNzNjMzEzNGM0MTZkOGRmOTZiODExNjI1Li5mOTFkZDU4ZDQ1NDMx
ZjZmNzNjNjllOGYxMjE5ODc2MzEzZTc4MTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2lvcy9FdmVudEhhbmRsZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9pb3Mv
RXZlbnRIYW5kbGVySU9TLm1tCkBAIC02NzEsNiArNjcxLDggQEAgYm9vbCBFdmVudEhhbmRsZXI6
OnRyeVRvQmVnaW5EcmFnQXRQb2ludChjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNv
bnN0IEkKICAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBT
ZXRGb3JTY29wZTxib29sPiBzaG91bGRBbGxvd01vdXNlRG93blRvU3RhcnREcmFnIHsgbV9zaG91
bGRBbGxvd01vdXNlRG93blRvU3RhcnREcmFnLCB0cnVlIH07CisKICAgICBkb2N1bWVudC0+dXBk
YXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAKICAgICBGbG9hdFBvaW50IGFk
anVzdGVkQ2xpZW50UG9zaXRpb25Bc0Zsb2F0UG9pbnQoY2xpZW50UG9zaXRpb24pOwpAQCAtNjk5
LDcgKzcwMSwxNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6dHJ5VG9CZWdpbkRyYWdBdFBvaW50KGNv
bnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSQogICAgIHJldHVybiBoYW5kbGVk
RHJhZzsKIH0KIAotI2VuZGlmCitib29sIEV2ZW50SGFuZGxlcjo6c3VwcG9ydHNTZWxlY3Rpb25V
cGRhdGVzT25Nb3VzZURyYWcoKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9v
bCBFdmVudEhhbmRsZXI6OnNob3VsZEFsbG93TW91c2VEb3duVG9TdGFydERyYWcoKSBjb25zdAor
eworICAgIHJldHVybiBtX3Nob3VsZEFsbG93TW91c2VEb3duVG9TdGFydERyYWc7Cit9CisKKyNl
bmRpZiAvLyBFTkFCTEUoRFJBR19TVVBQT1JUKQogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCmluZGV4IDEzY2NkNWRiOTAyZTc5YmVlZTU5Y2U4YzE5
ZmE1ZDMxOWQyN2Y3MDguLjM5Y2ZmZDU2YTUxZjNmOTViNTE1ZDdjNzM0NWNkMzU4ZjQzN2IxZGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcApAQCAtMTAw
LDYgKzEwMCw3IEBAIEludGVybmFsU2V0dGluZ3M6OkJhY2t1cDo6QmFja3VwKFNldHRpbmdzJiBz
ZXR0aW5ncykKICAgICAsIG1fZGVmZXJyZWRDU1NQYXJzZXJFbmFibGVkKHNldHRpbmdzLmRlZmVy
cmVkQ1NTUGFyc2VyRW5hYmxlZCgpKQogICAgICwgbV9pbnB1dEV2ZW50c0VuYWJsZWQoc2V0dGlu
Z3MuaW5wdXRFdmVudHNFbmFibGVkKCkpCiAgICAgLCBtX2luY29tcGxldGVJbWFnZUJvcmRlckVu
YWJsZWQoc2V0dGluZ3MuaW5jb21wbGV0ZUltYWdlQm9yZGVyRW5hYmxlZCgpKQorICAgICwgbV9z
aG91bGREaXNwYXRjaFN5bnRoZXRpY01vdXNlRXZlbnRzV2hlbk1vZGlmeWluZ1NlbGVjdGlvbihz
ZXR0aW5ncy5zaG91bGREaXNwYXRjaFN5bnRoZXRpY01vdXNlRXZlbnRzV2hlbk1vZGlmeWluZ1Nl
bGVjdGlvbigpKQogICAgICwgbV9zaG91bGREZWFjdGl2YXRlQXVkaW9TZXNzaW9uKFBsYXRmb3Jt
TWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hvdWxkRGVhY3RpdmF0ZUF1ZGlvU2Vzc2lvbigpKQogICAg
ICwgbV91c2VySW50ZXJmYWNlRGlyZWN0aW9uUG9saWN5KHNldHRpbmdzLnVzZXJJbnRlcmZhY2VE
aXJlY3Rpb25Qb2xpY3koKSkKICAgICAsIG1fc3lzdGVtTGF5b3V0RGlyZWN0aW9uKHNldHRpbmdz
LnN5c3RlbUxheW91dERpcmVjdGlvbigpKQpAQCAtMjA3LDYgKzIwOCw3IEBAIHZvaWQgSW50ZXJu
YWxTZXR0aW5nczo6QmFja3VwOjpyZXN0b3JlVG8oU2V0dGluZ3MmIHNldHRpbmdzKQogICAgIEZv
bnRDYWNoZTo6c2luZ2xldG9uKCkuc2V0U2hvdWxkTW9ja0JvbGRTeXN0ZW1Gb250Rm9yQWNjZXNz
aWJpbGl0eShtX3Nob3VsZE1vY2tCb2xkU3lzdGVtRm9udEZvckFjY2Vzc2liaWxpdHkpOwogICAg
IHNldHRpbmdzLnNldEZyYW1lRmxhdHRlbmluZyhtX2ZyYW1lRmxhdHRlbmluZyk7CiAgICAgc2V0
dGluZ3Muc2V0SW5jb21wbGV0ZUltYWdlQm9yZGVyRW5hYmxlZChtX2luY29tcGxldGVJbWFnZUJv
cmRlckVuYWJsZWQpOworICAgIHNldHRpbmdzLnNldFNob3VsZERpc3BhdGNoU3ludGhldGljTW91
c2VFdmVudHNXaGVuTW9kaWZ5aW5nU2VsZWN0aW9uKG1fc2hvdWxkRGlzcGF0Y2hTeW50aGV0aWNN
b3VzZUV2ZW50c1doZW5Nb2RpZnlpbmdTZWxlY3Rpb24pOwogICAgIFBsYXRmb3JtTWVkaWFTZXNz
aW9uTWFuYWdlcjo6c2V0U2hvdWxkRGVhY3RpdmF0ZUF1ZGlvU2Vzc2lvbihtX3Nob3VsZERlYWN0
aXZhdGVBdWRpb1Nlc3Npb24pOwogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0VfSU5fV09S
S0VSUykKQEAgLTkyNiw2ICs5MjgsMTQgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSW50ZXJuYWxTZXR0
aW5nczo6c2V0SW5jb21wbGV0ZUltYWdlQm9yZGVyRW5hYmxlZChib29sIGVuYWJsZWQKICAgICBy
ZXR1cm4geyB9OwogfQogCitFeGNlcHRpb25Pcjx2b2lkPiBJbnRlcm5hbFNldHRpbmdzOjpzZXRT
aG91bGREaXNwYXRjaFN5bnRoZXRpY01vdXNlRXZlbnRzV2hlbk1vZGlmeWluZ1NlbGVjdGlvbihi
b29sIHNob3VsZERpc3BhdGNoKQoreworICAgIGlmICghbV9wYWdlKQorICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yIH07CisgICAgc2V0dGluZ3MoKS5zZXRTaG91
bGREaXNwYXRjaFN5bnRoZXRpY01vdXNlRXZlbnRzV2hlbk1vZGlmeWluZ1NlbGVjdGlvbihzaG91
bGREaXNwYXRjaCk7CisgICAgcmV0dXJuIHsgfTsKK30KKwogc3RhdGljIEludGVybmFsU2V0dGlu
Z3M6OkZvcmNlZEFjY2Vzc2liaWxpdHlWYWx1ZSBzZXR0aW5nc1RvSW50ZXJuYWxTZXR0aW5nc1Zh
bHVlKFNldHRpbmdzOjpGb3JjZWRBY2Nlc3NpYmlsaXR5VmFsdWUgdmFsdWUpCiB7CiAgICAgc3dp
dGNoICh2YWx1ZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bFNldHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaApp
bmRleCA4ZmYwZjRiZGM4YzJjYTAwZGI3YWE3ZjRjNDc2Njg1MzE2YWQwYmQ5Li5mYTczMzk0ZDA2
ZTg3NTFiM2M3M2QwNzI0YWE4YzI4MGM1MGJlZmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFsU2V0dGluZ3MuaApAQCAtMTAzLDYgKzEwMyw3IEBAIHB1YmxpYzoKICAgICBFeGNl
cHRpb25Pcjx2b2lkPiBzZXRTaG91bGRNYW5hZ2VBdWRpb1Nlc3Npb25DYXRlZ29yeShib29sKTsK
ICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRDdXN0b21QYXN0ZWJvYXJkRGF0YUVuYWJsZWQoYm9v
bCk7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0SW5jb21wbGV0ZUltYWdlQm9yZGVyRW5hYmxl
ZChib29sKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRTaG91bGREaXNwYXRjaFN5bnRoZXRp
Y01vdXNlRXZlbnRzV2hlbk1vZGlmeWluZ1NlbGVjdGlvbihib29sKTsKIAogICAgIHVzaW5nIEZy
YW1lRmxhdHRlbmluZ1ZhbHVlID0gRnJhbWVGbGF0dGVuaW5nOwogICAgIEV4Y2VwdGlvbk9yPHZv
aWQ+IHNldEZyYW1lRmxhdHRlbmluZyhGcmFtZUZsYXR0ZW5pbmdWYWx1ZSk7CkBAIC0xOTgsNiAr
MTk5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBtX2RlZmVycmVkQ1NTUGFyc2VyRW5hYmxl
ZDsKICAgICAgICAgYm9vbCBtX2lucHV0RXZlbnRzRW5hYmxlZDsKICAgICAgICAgYm9vbCBtX2lu
Y29tcGxldGVJbWFnZUJvcmRlckVuYWJsZWQ7CisgICAgICAgIGJvb2wgbV9zaG91bGREaXNwYXRj
aFN5bnRoZXRpY01vdXNlRXZlbnRzV2hlbk1vZGlmeWluZ1NlbGVjdGlvbjsKICAgICAgICAgYm9v
bCBtX3Nob3VsZERlYWN0aXZhdGVBdWRpb1Nlc3Npb247CiAgICAgICAgIFVzZXJJbnRlcmZhY2VE
aXJlY3Rpb25Qb2xpY3kgbV91c2VySW50ZXJmYWNlRGlyZWN0aW9uUG9saWN5OwogICAgICAgICBU
ZXh0RGlyZWN0aW9uIG1fc3lzdGVtTGF5b3V0RGlyZWN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGwKaW5kZXggMjBhMzc4NTgzNzY5MmU4OGYxYmUyMTE4
MjkxNDczZmYwYjY1Y2RkYy4uYWFmMjRhOTkyMGJlOWUwZmNhOTdlM2ZiNjU5NTdlNGIzOWMyN2I0
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaWRsCkBAIC04
OCw2ICs4OCw3IEBAIGVudW0gRm9udExvYWRUaW1pbmdPdmVycmlkZSB7ICJCbG9jayIsICJTd2Fw
IiwgIkZhaWx1cmUiIH07CiAgICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldElubGluZU1l
ZGlhUGxheWJhY2tSZXF1aXJlc1BsYXlzSW5saW5lQXR0cmlidXRlKGJvb2xlYW4gcmVxdWlyZXMp
OwogICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRGcmFtZUZsYXR0ZW5pbmcoRnJhbWVG
bGF0dGVuaW5nVmFsdWUgZnJhbWVGbGF0dGVuaW5nKTsKICAgICBbTWF5VGhyb3dFeGNlcHRpb25d
IHZvaWQgc2V0SW5jb21wbGV0ZUltYWdlQm9yZGVyRW5hYmxlZChib29sZWFuIGVuYWJsZWQpOwor
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRTaG91bGREaXNwYXRjaFN5bnRoZXRpY01v
dXNlRXZlbnRzV2hlbk1vZGlmeWluZ1NlbGVjdGlvbihib29sZWFuIHNob3VsZERpc3BhdGNoKTsK
IAogICAgIC8vIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuCiAgICAgdm9pZCBzZXRJbmRleGVkREJX
b3JrZXJzRW5hYmxlZChib29sZWFuIGVuYWJsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKaW5kZXggNGUxYWVmOWE2YjQ0NTJmMzE2NTkwODhiMWU3Y2M5NDkxOWFj
NmU5NC4uMzEzYTlmYWUwNTBiNTM4ZDdiNzU2NDg4MmNhMTVmZjQ0ZDA3YWEwNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0yMDE0LDYgKzIwMTQsMTQgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnNjaGVkdWxlRnVsbEVkaXRvclN0YXRlVXBkYXRlKCkKICAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNjaGVkdWxlRnVsbEVkaXRvclN0YXRl
VXBkYXRlKCksIG1fcGFnZUlEKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdEFsbCgp
Cit7CisgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdEFsbCgpLCBtX3BhZ2VJ
RCk7Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5OjpleGVjdXRlRWRpdENvbW1hbmQoY29uc3QgU3Ry
aW5nJiBjb21tYW5kTmFtZSwgY29uc3QgU3RyaW5nJiBhcmd1bWVudCwgV1RGOjpGdW5jdGlvbjx2
b2lkKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgaWYg
KCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCmluZGV4IDg3MjBlZWJkN2ZiN2NjZjBiMzczODhhYjhiZjJmZGZlZDdiMWMxOWIuLmYyYzQz
MTU1OWEwN2EzYTc0ODkwMjcyMTQxYTVhOTlhMjY4MDYwMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC01OTUsNiArNTk1LDcgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBhZGRNSU1FVHlwZVdpdGhDdXN0b21Db250ZW50UHJvdmlkZXIoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSk7CiAKKyAgICB2b2lkIHNlbGVjdEFsbCgpOwogICAgIHZvaWQgZXhlY3V0ZUVkaXRDb21t
YW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIGNvbnN0IFN0cmluZyYgYXJndW1lbnQgPSBT
dHJpbmcoKSk7CiAgICAgdm9pZCB2YWxpZGF0ZUNvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5k
TmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBib29sLCBpbnQzMl90LCBD
YWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDc3ZGU3YzhhNGMz
MTBlMGM0N2RhZjQ0MTI5MTEwZjA0NmU2NmRmZDAuLjc1YjkzZDYxMDM5ODcyZjQ0ZDk5NDQ1OWVk
ZmY2NDMxY2E2OWYxYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtMzA3OSw3ICszMDc5LDcgQEAgLSAo
dm9pZClzZWxlY3RGb3JXZWJWaWV3OihpZClzZW5kZXIKIC0gKHZvaWQpc2VsZWN0QWxsRm9yV2Vi
VmlldzooaWQpc2VuZGVyCiB7CiAgICAgW190ZXh0U2VsZWN0aW9uQXNzaXN0YW50IHNlbGVjdEFs
bDpzZW5kZXJdOwotICAgIF9wYWdlLT5leGVjdXRlRWRpdENvbW1hbmQoInNlbGVjdEFsbCJfcyk7
CisgICAgX3BhZ2UtPnNlbGVjdEFsbCgpOwogfQogCiAtICh2b2lkKXRvZ2dsZUJvbGRmYWNlRm9y
V2ViVmlldzooaWQpc2VuZGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCmluZGV4IDQzNzAyMjJhZThkMzg3NzY3OTkzMDdmODkwMzkxNjczNWNmODBhODAu
LmZmZjU5ODNhYTA4NDlkYmJhYjc3ZmRiZTUwZjljNGE1MTM1MTQyN2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0xMTA5LDYgKzExMDksMjYg
QEAgdm9pZCBXZWJQYWdlOjpleGVjdXRlRWRpdENvbW1hbmRXaXRoQ2FsbGJhY2soY29uc3QgU3Ry
aW5nJiBjb21tYW5kTmFtZSwgY29uc3QgU3QKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OlZvaWRDYWxsYmFjayhjYWxsYmFja0lEKSk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6c2VsZWN0
QWxsKCkKK3sKKyAgICBleGVjdXRlRWRpdGluZ0NvbW1hbmQoIlNlbGVjdEFsbCJfcywgeyB9KTsK
KyAgICBwbGF0Zm9ybURpZFNlbGVjdEFsbCgpOworfQorCitib29sIFdlYlBhZ2U6OnNob3VsZERp
c3BhdGNoU3ludGhldGljTW91c2VFdmVudHNXaGVuTW9kaWZ5aW5nU2VsZWN0aW9uKCkgY29uc3QK
K3sKKyAgICBhdXRvKiBkb2N1bWVudCA9IG1fcGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKTsK
KyAgICByZXR1cm4gZG9jdW1lbnQgJiYgZG9jdW1lbnQtPnF1aXJrcygpLnNob3VsZERpc3BhdGNo
U3ludGhldGljTW91c2VFdmVudHNXaGVuTW9kaWZ5aW5nU2VsZWN0aW9uKCk7Cit9CisKKyNpZiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKKwordm9pZCBXZWJQYWdlOjpwbGF0Zm9ybURpZFNlbGVjdEFs
bCgpCit7Cit9CisKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKKwogdm9pZCBXZWJQ
YWdlOjp1cGRhdGVFZGl0b3JTdGF0ZUFmdGVyTGF5b3V0SWZFZGl0YWJpbGl0eUNoYW5nZWQoKQog
ewogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdXBkYXRlIEVkaXRvclN0YXRlSXNDb250ZW50RWRp
dGFibGUgdG8gdHJhY2sgd2hldGhlciB0aGUgc3RhdGUgaXMgcmljaGx5CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggZDlkODA0Y2JkNjM3OTkxMDUyYzhj
NmQyYzFjZTIyOWU2N2QzNmE5OC4uNGZmODU5Yzc1NTUwMGI1MWFkMTk0M2I3NWNhZmU5MzhkOWFk
YmE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAt
NTk3LDYgKzU5Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpc2FibGVkQWRhcHRhdGlvbnNEaWRD
aGFuZ2UoY29uc3QgT3B0aW9uU2V0PFdlYkNvcmU6OkRpc2FibGVkQWRhcHRhdGlvbnM+Jik7CiAg
ICAgdm9pZCB2aWV3cG9ydFByb3BlcnRpZXNEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6Vmlld3Bv
cnRBcmd1bWVudHMmKTsKICAgICB2b2lkIGV4ZWN1dGVFZGl0Q29tbWFuZFdpdGhDYWxsYmFjayhj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGFyZ3VtZW50LCBDYWxsYmFja0lEKTsKKyAgICB2
b2lkIHNlbGVjdEFsbCgpOwogCiAgICAgdm9pZCB0ZXh0SW5wdXRDb250ZXh0c0luUmVjdChXZWJD
b3JlOjpGbG9hdFJlY3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFdlYktp
dDo6VGV4dElucHV0Q29udGV4dD4mKT4mJik7CiAgICAgdm9pZCBmb2N1c1RleHRJbnB1dENvbnRl
eHQoY29uc3QgVGV4dElucHV0Q29udGV4dCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYpOwpAQCAtMTIyNyw2ICsxMjI4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc2V0VGV4dEF1
dG9zaXppbmcoKTsKICAgICBXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9u
SW5Gb2N1c2VkTm9kZUZvclBvaW50KGNvbnN0IFdlYkNvcmU6OkZyYW1lJiwgY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmLCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQpOwogICAg
IFJlZlB0cjxXZWJDb3JlOjpSYW5nZT4gcmFuZ2VGb3JHcmFudWxhcml0eUF0UG9pbnQoV2ViQ29y
ZTo6RnJhbWUmLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90IGdyYW51bGFyaXR5
LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQpOworICAgIHZvaWQgZGlzcGF0
Y2hTeW50aGV0aWNNb3VzZUV2ZW50c0ZvclNlbGVjdGlvbkdlc3R1cmUoU2VsZWN0aW9uVG91Y2gs
IGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CiAKICAgICB2b2lkIHNlbmRQb3NpdGlvbkluZm9y
bWF0aW9uKEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJiYpOwogICAgIEludGVyYWN0
aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uIHBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJh
Y3Rpb25JbmZvcm1hdGlvblJlcXVlc3QmKTsKQEAgLTE0NjUsNiArMTQ2Nyw5IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBjYXBpdGFsaXplV29yZCgpOwogI2VuZGlmCiAKKyAgICBib29sIHNob3VsZERp
c3BhdGNoU3ludGhldGljTW91c2VFdmVudHNXaGVuTW9kaWZ5aW5nU2VsZWN0aW9uKCkgY29uc3Q7
CisgICAgdm9pZCBwbGF0Zm9ybURpZFNlbGVjdEFsbCgpOworCiAjaWYgRU5BQkxFKENPTlRFWFRf
TUVOVVMpCiAgICAgdm9pZCBkaWRTZWxlY3RJdGVtRnJvbUFjdGl2ZUNvbnRleHRNZW51KGNvbnN0
IFdlYkNvbnRleHRNZW51SXRlbURhdGEmKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggMDEyM2ZkOWQ0
ZmI0YjBhMTkwOTc2NzcwNDZjNGRjZWVkNmM5ODBhYy4uYzAxMjYzMWYwYzgyYmMyYmJkNDJkNWM1
MzhhYmUzNmI1Njg5NzAzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0yMDIsNiArMjAyLDcgQEAgbWVzc2FnZXMg
LT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgUnVuSmF2YVNjcmlwdEluRnJhbWUodWlu
dDY0X3QgZnJhbWVJRCwgU3RyaW5nIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBXZWJL
aXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBGb3JjZVJlcGFpbnQoV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCiAKKyAgICBTZWxlY3RBbGwoKQogICAgIFNjaGVkdWxlRnVsbEVk
aXRvclN0YXRlVXBkYXRlKCkKIAogI2lmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCBjMmRiMWY1
YjMwYjNjNzBlMTk5M2ZlNjVkNjNlMTM1ODFjMmY4NTY4Li4wZDA1NzQ0YzliZWI2ZjAyZjA0Yzdh
ZmMxY2Y0Yzk4MmY2MzgxMzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMTQ3OSwxMiArMTQ3OSw2MSBAQCBzdGF0aWMg
UmVmUHRyPFJhbmdlPiByYW5nZUF0V29yZEJvdW5kYXJ5Rm9yUG9zaXRpb24oRnJhbWUqIGZyYW1l
LCBjb25zdCBWaXNpYmxlUAogICAgIHJldHVybiAoYmFzZSA8IGV4dGVudCkgPyBSYW5nZTo6Y3Jl
YXRlKCpmcmFtZS0+ZG9jdW1lbnQoKSwgYmFzZSwgZXh0ZW50KSA6IFJhbmdlOjpjcmVhdGUoKmZy
YW1lLT5kb2N1bWVudCgpLCBleHRlbnQsIGJhc2UpOwogfQogCi12b2lkIFdlYlBhZ2U6OmNsZWFy
U2VsZWN0aW9uKCl7CitzdGF0aWMgSW50UmVjdCBlbGVtZW50UmVjdEluUm9vdFZpZXdDb29yZGlu
YXRlcyhjb25zdCBFbGVtZW50JiBlbGVtZW50KQoreworICAgIGF1dG8qIGZyYW1lID0gZWxlbWVu
dC5kb2N1bWVudCgpLmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIHsg
fTsKKworICAgIGF1dG8qIHZpZXcgPSBmcmFtZS0+dmlldygpOworICAgIGlmICghdmlldykKKyAg
ICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1dG8qIHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJl
cigpOworICAgIGlmICghcmVuZGVyZXIpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICByZXR1
cm4gdmlldy0+Y29udGVudHNUb1Jvb3RWaWV3KHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94
UmVjdCgpKTsKK30KKwordm9pZCBXZWJQYWdlOjpjbGVhclNlbGVjdGlvbigpCit7CiAgICAgbV9z
dGFydGluZ0dlc3R1cmVSYW5nZSA9IG51bGxwdHI7CiAgICAgbV9jdXJyZW50QmxvY2tTZWxlY3Rp
b24gPSBudWxscHRyOwogICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFp
bkZyYW1lKCkuc2VsZWN0aW9uKCkuY2xlYXIoKTsKIH0KIAordm9pZCBXZWJQYWdlOjpkaXNwYXRj
aFN5bnRoZXRpY01vdXNlRXZlbnRzRm9yU2VsZWN0aW9uR2VzdHVyZShTZWxlY3Rpb25Ub3VjaCB0
b3VjaCwgY29uc3QgSW50UG9pbnQmIHBvaW50KQoreworICAgIGF1dG8gZnJhbWUgPSBtYWtlUmVm
KG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkpOworICAgIGlm
ICghZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzQ29udGVudEVkaXRhYmxlKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIEludFJlY3QgZm9jdXNlZEVsZW1lbnRSZWN0OworICAgIGlm
IChtX2ZvY3VzZWRFbGVtZW50KQorICAgICAgICBmb2N1c2VkRWxlbWVudFJlY3QgPSBlbGVtZW50
UmVjdEluUm9vdFZpZXdDb29yZGluYXRlcygqbV9mb2N1c2VkRWxlbWVudCk7CisKKyAgICBpZiAo
Zm9jdXNlZEVsZW1lbnRSZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0
byBhZGp1c3RlZFBvaW50ID0gcG9pbnQuY29uc3RyYWluZWRCZXR3ZWVuKGZvY3VzZWRFbGVtZW50
UmVjdC5taW5YTWluWUNvcm5lcigpLCBmb2N1c2VkRWxlbWVudFJlY3QubWF4WE1heFlDb3JuZXIo
KSk7CisgICAgYXV0byYgZXZlbnRIYW5kbGVyID0gbV9wYWdlLT5tYWluRnJhbWUoKS5ldmVudEhh
bmRsZXIoKTsKKyAgICBzd2l0Y2ggKHRvdWNoKSB7CisgICAgY2FzZSBTZWxlY3Rpb25Ub3VjaDo6
U3RhcnRlZDoKKyAgICAgICAgZXZlbnRIYW5kbGVyLmhhbmRsZU1vdXNlUHJlc3NFdmVudCh7IGFk
anVzdGVkUG9pbnQsIGFkanVzdGVkUG9pbnQsIExlZnRCdXR0b24sIFBsYXRmb3JtRXZlbnQ6Ok1v
dXNlUHJlc3NlZCwgMSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIFdhbGxUaW1lOjpub3co
KSwgV2ViQ29yZTo6Rm9yY2VBdENsaWNrLCBOb1RhcCB9KTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBTZWxlY3Rpb25Ub3VjaDo6TW92ZWQ6CisgICAgICAgIGV2ZW50SGFuZGxlci5kaXNwYXRj
aFN5bnRoZXRpY01vdXNlTW92ZSh7IGFkanVzdGVkUG9pbnQsIGFkanVzdGVkUG9pbnQsIExlZnRC
dXR0b24sIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IGZhbHNlLCBXYWxsVGltZTo6bm93KCksIFdlYkNvcmU6OkZvcmNlQXRDbGljaywgTm9UYXAgfSk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2VsZWN0aW9uVG91Y2g6OkVuZGVkOgorICAgIGNh
c2UgU2VsZWN0aW9uVG91Y2g6OkVuZGVkTW92aW5nRm9yd2FyZDoKKyAgICBjYXNlIFNlbGVjdGlv
blRvdWNoOjpFbmRlZE1vdmluZ0JhY2t3YXJkOgorICAgIGNhc2UgU2VsZWN0aW9uVG91Y2g6OkVu
ZGVkTm90TW92aW5nOgorICAgICAgICBldmVudEhhbmRsZXIuaGFuZGxlTW91c2VSZWxlYXNlRXZl
bnQoeyBhZGp1c3RlZFBvaW50LCBhZGp1c3RlZFBvaW50LCBMZWZ0QnV0dG9uLCBQbGF0Zm9ybUV2
ZW50OjpNb3VzZVJlbGVhc2VkLCAxLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgV2FsbFRp
bWU6Om5vdygpLCBXZWJDb3JlOjpGb3JjZUF0Q2xpY2ssIE5vVGFwIH0pOworICAgICAgICBicmVh
azsKKyAgICB9Cit9CisKIHZvaWQgV2ViUGFnZTo6dXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMo
Y29uc3QgSW50UG9pbnQmIHBvaW50LCB1aW50MzJfdCB0b3VjaGVzLCBib29sIGJhc2VJc1N0YXJ0
LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5m
b2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKQEAgLTE0OTksNyArMTU0OCwx
MSBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzKGNvbnN0IEludFBv
aW50JiBwb2ludCwgdWludDMyX3QgdG91Y2hlcwogICAgIFZpc2libGVQb3NpdGlvbiByZXN1bHQ7
CiAgICAgU2VsZWN0aW9uRmxhZ3MgZmxhZ3MgPSBOb25lOwogCi0gICAgc3dpdGNoIChzdGF0aWNf
Y2FzdDxTZWxlY3Rpb25Ub3VjaD4odG91Y2hlcykpIHsKKyAgICBhdXRvIHNlbGVjdGlvblRvdWNo
ID0gc3RhdGljX2Nhc3Q8U2VsZWN0aW9uVG91Y2g+KHRvdWNoZXMpOworICAgIGlmIChzaG91bGRE
aXNwYXRjaFN5bnRoZXRpY01vdXNlRXZlbnRzV2hlbk1vZGlmeWluZ1NlbGVjdGlvbigpKQorICAg
ICAgICBkaXNwYXRjaFN5bnRoZXRpY01vdXNlRXZlbnRzRm9yU2VsZWN0aW9uR2VzdHVyZShzZWxl
Y3Rpb25Ub3VjaCwgcG9pbnQpOworCisgICAgc3dpdGNoIChzZWxlY3Rpb25Ub3VjaCkgewogICAg
IGNhc2UgU2VsZWN0aW9uVG91Y2g6OlN0YXJ0ZWQ6CiAgICAgY2FzZSBTZWxlY3Rpb25Ub3VjaDo6
RW5kZWROb3RNb3Zpbmc6CiAgICAgICAgIGJyZWFrOwpAQCAtMTU1Nyw3ICsxNjEwLDM2IEBAIHZv
aWQgV2ViUGFnZTo6ZXh0ZW5kU2VsZWN0aW9uKHVpbnQzMl90IGdyYW51bGFyaXR5KQogICAgICAg
ICByZXR1cm47CiAKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb24gPSBmcmFtZS5zZWxlY3Rp
b24oKS5zZWxlY3Rpb24oKS5zdGFydCgpOwotICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVj
dGVkUmFuZ2Uod29yZFJhbmdlRnJvbVBvc2l0aW9uKHBvc2l0aW9uKS5nZXQoKSwgcG9zaXRpb24u
YWZmaW5pdHkoKSwgV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZ
ZXMsIFVzZXJUcmlnZ2VyZWQpOworICAgIGF1dG8gd29yZFJhbmdlID0gd29yZFJhbmdlRnJvbVBv
c2l0aW9uKHBvc2l0aW9uKTsKKyAgICBpZiAoIXdvcmRSYW5nZSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgSW50UG9pbnQgZW5kTG9jYXRpb25Gb3JTeW50aGV0aWNNb3VzZUV2ZW50czsKKyAgICBi
b29sIHNob3VsZERpc3BhdGNoTW91c2VFdmVudHMgPSBzaG91bGREaXNwYXRjaFN5bnRoZXRpY01v
dXNlRXZlbnRzV2hlbk1vZGlmeWluZ1NlbGVjdGlvbigpOworICAgIGlmIChzaG91bGREaXNwYXRj
aE1vdXNlRXZlbnRzKSB7CisgICAgICAgIGF1dG8gc3RhcnRMb2NhdGlvbkZvclN5bnRoZXRpY01v
dXNlRXZlbnRzID0gZnJhbWUudmlldygpLT5jb250ZW50c1RvUm9vdFZpZXcoVmlzaWJsZVBvc2l0
aW9uKHdvcmRSYW5nZS0+c3RhcnRQb3NpdGlvbigpKS5hYnNvbHV0ZUNhcmV0Qm91bmRzKCkpLmNl
bnRlcigpOworICAgICAgICBlbmRMb2NhdGlvbkZvclN5bnRoZXRpY01vdXNlRXZlbnRzID0gZnJh
bWUudmlldygpLT5jb250ZW50c1RvUm9vdFZpZXcoVmlzaWJsZVBvc2l0aW9uKHdvcmRSYW5nZS0+
ZW5kUG9zaXRpb24oKSkuYWJzb2x1dGVDYXJldEJvdW5kcygpKS5jZW50ZXIoKTsKKyAgICAgICAg
ZGlzcGF0Y2hTeW50aGV0aWNNb3VzZUV2ZW50c0ZvclNlbGVjdGlvbkdlc3R1cmUoU2VsZWN0aW9u
VG91Y2g6OlN0YXJ0ZWQsIHN0YXJ0TG9jYXRpb25Gb3JTeW50aGV0aWNNb3VzZUV2ZW50cyk7Cisg
ICAgICAgIGRpc3BhdGNoU3ludGhldGljTW91c2VFdmVudHNGb3JTZWxlY3Rpb25HZXN0dXJlKFNl
bGVjdGlvblRvdWNoOjpNb3ZlZCwgZW5kTG9jYXRpb25Gb3JTeW50aGV0aWNNb3VzZUV2ZW50cyk7
CisgICAgfQorCisgICAgZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZSh3b3JkUmFu
Z2UuZ2V0KCksIHBvc2l0aW9uLmFmZmluaXR5KCksIFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpT
aG91bGRDbG9zZVR5cGluZzo6WWVzLCBVc2VyVHJpZ2dlcmVkKTsKKworICAgIGlmIChzaG91bGRE
aXNwYXRjaE1vdXNlRXZlbnRzKQorICAgICAgICBkaXNwYXRjaFN5bnRoZXRpY01vdXNlRXZlbnRz
Rm9yU2VsZWN0aW9uR2VzdHVyZShTZWxlY3Rpb25Ub3VjaDo6RW5kZWQsIGVuZExvY2F0aW9uRm9y
U3ludGhldGljTW91c2VFdmVudHMpOworfQorCit2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRGlkU2Vs
ZWN0QWxsKCkKK3sKKyAgICBpZiAoIXNob3VsZERpc3BhdGNoU3ludGhldGljTW91c2VFdmVudHNX
aGVuTW9kaWZ5aW5nU2VsZWN0aW9uKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gZnJh
bWUgPSBtYWtlUmVmKG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1l
KCkpOworICAgIGF1dG8gc3RhcnRDYXJldFJlY3QgPSBmcmFtZS0+dmlldygpLT5jb250ZW50c1Rv
Um9vdFZpZXcoVmlzaWJsZVBvc2l0aW9uKGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5z
dGFydCgpKS5hYnNvbHV0ZUNhcmV0Qm91bmRzKCkpOworICAgIGF1dG8gZW5kQ2FyZXRSZWN0ID0g
ZnJhbWUtPnZpZXcoKS0+Y29udGVudHNUb1Jvb3RWaWV3KFZpc2libGVQb3NpdGlvbihmcmFtZS0+
c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuZW5kKCkpLmFic29sdXRlQ2FyZXRCb3VuZHMoKSk7Cisg
ICAgZGlzcGF0Y2hTeW50aGV0aWNNb3VzZUV2ZW50c0ZvclNlbGVjdGlvbkdlc3R1cmUoU2VsZWN0
aW9uVG91Y2g6OlN0YXJ0ZWQsIHN0YXJ0Q2FyZXRSZWN0LmNlbnRlcigpKTsKKyAgICBkaXNwYXRj
aFN5bnRoZXRpY01vdXNlRXZlbnRzRm9yU2VsZWN0aW9uR2VzdHVyZShTZWxlY3Rpb25Ub3VjaDo6
TW92ZWQsIGVuZENhcmV0UmVjdC5jZW50ZXIoKSk7CisgICAgZGlzcGF0Y2hTeW50aGV0aWNNb3Vz
ZUV2ZW50c0ZvclNlbGVjdGlvbkdlc3R1cmUoU2VsZWN0aW9uVG91Y2g6OkVuZGVkLCBlbmRDYXJl
dFJlY3QuY2VudGVyKCkpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnNlbGVjdFdvcmRCYWNrd2FyZCgp
CkBAIC0yNTg0LDE5ICsyNjY2LDYgQEAgdm9pZCBXZWJQYWdlOjpmb2N1c05leHRGb2N1c2VkRWxl
bWVudChib29sIGlzRm9yd2FyZCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6Vm9pZENhbGxiYWNrKGNhbGxiYWNrSUQpKTsKIH0KIAotc3Rh
dGljIEludFJlY3QgZWxlbWVudFJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMoY29uc3QgTm9kZSYg
bm9kZSwgY29uc3QgRnJhbWUmIGZyYW1lKQotewotICAgIGF1dG8qIHZpZXcgPSBmcmFtZS52aWV3
KCk7Ci0gICAgaWYgKCF2aWV3KQotICAgICAgICByZXR1cm4geyB9OwotCi0gICAgYXV0byogcmVu
ZGVyZXIgPSBub2RlLnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFyZW5kZXJlcikKLSAgICAgICAgcmV0
dXJuIHsgfTsKLQotICAgIHJldHVybiB2aWV3LT5jb250ZW50c1RvUm9vdFZpZXcocmVuZGVyZXIt
PmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkpOwotfQotCiB2b2lkIFdlYlBhZ2U6OmdldEZvY3Vz
ZWRFbGVtZW50SW5mb3JtYXRpb24oRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbiYgaW5mb3JtYXRp
b24pCiB7CiAgICAgbGF5b3V0SWZOZWVkZWQoKTsKQEAgLTI2MDQsOCArMjY3Myw3IEBAIHZvaWQg
V2ViUGFnZTo6Z2V0Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbihGb2N1c2VkRWxlbWVudEluZm9y
bWF0aW9uJiBpbmZvcm1hdGlvCiAgICAgaW5mb3JtYXRpb24ubGFzdEludGVyYWN0aW9uTG9jYXRp
b24gPSBtX2xhc3RJbnRlcmFjdGlvbkxvY2F0aW9uOwogCiAgICAgaWYgKGF1dG8qIHJlbmRlcmVy
ID0gbV9mb2N1c2VkRWxlbWVudC0+cmVuZGVyZXIoKSkgewotICAgICAgICBhdXRvJiBlbGVtZW50
RnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwot
ICAgICAgICBpbmZvcm1hdGlvbi5lbGVtZW50UmVjdCA9IGVsZW1lbnRSZWN0SW5Sb290Vmlld0Nv
b3JkaW5hdGVzKCptX2ZvY3VzZWRFbGVtZW50LCBlbGVtZW50RnJhbWUpOworICAgICAgICBpbmZv
cm1hdGlvbi5lbGVtZW50UmVjdCA9IGVsZW1lbnRSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKCpt
X2ZvY3VzZWRFbGVtZW50KTsKICAgICAgICAgaW5mb3JtYXRpb24ubm9kZUZvbnRTaXplID0gcmVu
ZGVyZXItPnN0eWxlKCkuZm9udERlc2NyaXB0aW9uKCkuY29tcHV0ZWRTaXplKCk7CiAKICAgICAg
ICAgYm9vbCBpbkZpeGVkID0gZmFsc2U7CkBAIC0yNjIxLDEzICsyNjg5LDExIEBAIHZvaWQgV2Vi
UGFnZTo6Z2V0Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbihGb2N1c2VkRWxlbWVudEluZm9ybWF0
aW9uJiBpbmZvcm1hdGlvCiAgICAgaW5mb3JtYXRpb24uYWxsb3dzVXNlclNjYWxpbmcgPSBtX3Zp
ZXdwb3J0Q29uZmlndXJhdGlvbi5hbGxvd3NVc2VyU2NhbGluZygpOwogICAgIGluZm9ybWF0aW9u
LmFsbG93c1VzZXJTY2FsaW5nSWdub3JpbmdBbHdheXNTY2FsYWJsZSA9IG1fdmlld3BvcnRDb25m
aWd1cmF0aW9uLmFsbG93c1VzZXJTY2FsaW5nSWdub3JpbmdBbHdheXNTY2FsYWJsZSgpOwogICAg
IGlmIChhdXRvKiBuZXh0RWxlbWVudCA9IG5leHRBc3Npc3RhYmxlRWxlbWVudChtX2ZvY3VzZWRF
bGVtZW50LmdldCgpLCAqbV9wYWdlLCB0cnVlKSkgewotICAgICAgICBpZiAoYXV0byogZnJhbWUg
PSBuZXh0RWxlbWVudC0+ZG9jdW1lbnQoKS5mcmFtZSgpKQotICAgICAgICAgICAgaW5mb3JtYXRp
b24ubmV4dE5vZGVSZWN0ID0gZWxlbWVudFJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMoKm5leHRF
bGVtZW50LCAqZnJhbWUpOworICAgICAgICBpbmZvcm1hdGlvbi5uZXh0Tm9kZVJlY3QgPSBlbGVt
ZW50UmVjdEluUm9vdFZpZXdDb29yZGluYXRlcygqbmV4dEVsZW1lbnQpOwogICAgICAgICBpbmZv
cm1hdGlvbi5oYXNOZXh0Tm9kZSA9IHRydWU7CiAgICAgfQogICAgIGlmIChhdXRvKiBwcmV2aW91
c0VsZW1lbnQgPSBuZXh0QXNzaXN0YWJsZUVsZW1lbnQobV9mb2N1c2VkRWxlbWVudC5nZXQoKSwg
Km1fcGFnZSwgZmFsc2UpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBmcmFtZSA9IHByZXZpb3VzRWxl
bWVudC0+ZG9jdW1lbnQoKS5mcmFtZSgpKQotICAgICAgICAgICAgaW5mb3JtYXRpb24ucHJldmlv
dXNOb2RlUmVjdCA9IGVsZW1lbnRSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKCpwcmV2aW91c0Vs
ZW1lbnQsICpmcmFtZSk7CisgICAgICAgIGluZm9ybWF0aW9uLnByZXZpb3VzTm9kZVJlY3QgPSBl
bGVtZW50UmVjdEluUm9vdFZpZXdDb29yZGluYXRlcygqcHJldmlvdXNFbGVtZW50KTsKICAgICAg
ICAgaW5mb3JtYXRpb24uaGFzUHJldmlvdXNOb2RlID0gdHJ1ZTsKICAgICB9CiAgICAgaW5mb3Jt
YXRpb24uZm9jdXNlZEVsZW1lbnRJZGVudGlmaWVyID0gbV9jdXJyZW50Rm9jdXNlZEVsZW1lbnRJ
ZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IGRiN2RmMTJjMTVhMzI4ODNkZDc0ODRhYjFkOWMzMjRmZDYyN2E2
YTYuLjliMjFjMzNkNDdmNjY1MjgxNmM2ZDdhM2ZiOTQwNDYxNmQxZjJlNTYgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMiBAQAorMjAxOS0wNS0wNyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxl
LmNvbT4KKworICAgICAgICBbaU9TXSBBZGQgYSBxdWlyayB0byBzeW50aGVzaXplIG1vdXNlIGV2
ZW50cyB3aGVuIG1vZGlmeWluZyB0aGUgc2VsZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTc2ODMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzQ4MDAzOTgwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZHMgYSBuZXcgbGF5b3V0IHRlc3QgdG8gZW5hYmxlIHRoZSBzaXRlLXNwZWNpZmljIHF1
aXJrIGFuZCB2ZXJpZnkgdGhhdCBtb3VzZSBldmVudHMgYXJlIGRpc3BhdGNoZWQgd2hlbgorICAg
ICAgICBjaGFuZ2luZyBzZWxlY3Rpb24sIGJvdGggdmlhIHRoZSBjYWxsb3V0IG1lbnUgYW5kIGJ5
IG1vdmluZyB0aGUgc2VsZWN0aW9uIGdyYWJiZXIgdXNpbmcgZ2VzdHVyZXMuCisKKyAgICAgICAg
KiBlZGl0aW5nL3NlbGVjdGlvbi9pb3MvZGlzcGF0Y2gtbW91c2UtZXZlbnRzLXdoZW4tbW9kaWZ5
aW5nLXNlbGVjdGlvbi1xdWlyay1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRp
bmcvc2VsZWN0aW9uL2lvcy9kaXNwYXRjaC1tb3VzZS1ldmVudHMtd2hlbi1tb2RpZnlpbmctc2Vs
ZWN0aW9uLXF1aXJrLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHJlc291cmNlcy91aS1oZWxwZXIu
anM6CisgICAgICAgICh3aW5kb3cuVUlIZWxwZXIud2FpdEZvck1lbnVUb0hpZGUucmV0dXJuLm5l
dy5Qcm9taXNlKToKKyAgICAgICAgKHdpbmRvdy5VSUhlbHBlci53YWl0Rm9yTWVudVRvSGlkZSk6
CisKKyAgICAgICAgSW50cm9kdWNlIGEgbmV3IGhlbHBlciBtZXRob2QgdG8gd2FpdCBmb3IgdGhl
IG1lbnUgdG8gaGlkZSAob24gaU9TLCB0aGlzIHJlZmVycyB0byB0aGUgY2FsbG91dCBtZW51KS4K
KwogMjAxOS0wNS0wOCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAog
ICAgICAgICBUZXN0UnVubmVyV0tXZWJWaWV3J3MgbWVudSBjYWxsYmFja3Mgc2hvdWxkIGJlIGNs
ZWFyZWQgdXBvbiBVSSBzY3JpcHQgY29tcGxldGlvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZWRpdGluZy9zZWxlY3Rpb24vaW9zL2Rpc3BhdGNoLW1vdXNlLWV2ZW50cy13aGVuLW1vZGlmeWlu
Zy1zZWxlY3Rpb24tcXVpcmstZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxl
Y3Rpb24vaW9zL2Rpc3BhdGNoLW1vdXNlLWV2ZW50cy13aGVuLW1vZGlmeWluZy1zZWxlY3Rpb24t
cXVpcmstZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRmYmRmZGRlYThiMDIyMTQ1M2YyYWI1MjEy
MTBhNDI5MGRhNmMwOTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Nl
bGVjdGlvbi9pb3MvZGlzcGF0Y2gtbW91c2UtZXZlbnRzLXdoZW4tbW9kaWZ5aW5nLXNlbGVjdGlv
bi1xdWlyay1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzMCBAQAorVGhpcyB0ZXN0IHZlcmlmaWVz
IHRoYXQgd2hlbiB0aGUgJ21vdXNlIGV2ZW50IHN5bnRoZXNpcyBvbiBzZWxlY3Rpb24nIHF1aXJr
IGlzIGVuYWJsZWQsIHRleHQgc2VsZWN0aW9uIGRpc3BhdGNoZXMgbW91c2UgZXZlbnRzIHRoYXQg
bWltaWMgdGhlIHVzZXIgc2VsZWN0aW5nIHRleHQuIFRvIHJ1biB0aGUgdGVzdCBtYW51YWxseSwg
dXNlIHRoZSBjYWxsb3V0IG1lbnUgdG8gc2VsZWN0IHRleHQgb3Igc2VsZWN0aW9uIGhhbmRsZXMs
IGFuZCB2ZXJpZnkgdGhhdCBtb3VzZWRvd24sIG1vdXNlbW92ZSBhbmQgbW91c2V1cCBhcmUgZGlz
cGF0Y2hlZCBhbmQgbG9nZ2VkIGluIHRoZSBvdXRwdXQgYXJlYSBiZWxvdy4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK0F0dGVtcHRpbmcgdG8gc2hvdyB0aGUgY2FsbG91dCBiYXIu
CitPYnNlcnZlZCBldmVudCB0eXBlOiBtb3VzZWRvd24KK09ic2VydmVkIGV2ZW50IHR5cGU6IG1v
dXNldXAKK09ic2VydmVkIGV2ZW50IHR5cGU6IG1vdXNlZG93bgorT2JzZXJ2ZWQgZXZlbnQgdHlw
ZTogbW91c2V1cAorUEFTUyBEaXNwbGF5ZWQgdGhlIGNhbGxvdXQgYmFyLgorCitBdHRlbXB0aW5n
IHRvIHNlbGVjdCB0aGUgbGFzdCB3b3JkLgorT2JzZXJ2ZWQgZXZlbnQgdHlwZTogbW91c2Vkb3du
CitPYnNlcnZlZCBldmVudCB0eXBlOiBtb3VzZW1vdmUKK09ic2VydmVkIGV2ZW50IHR5cGU6IG1v
dXNldXAKK1BBU1MgU2VsZWN0ZWQgdGhlIGxhc3Qgd29yZC4KKworQXR0ZW1wdGluZyB0byBkaXNt
aXNzIHRoZSBjYWxsb3V0IGJhciBieSBleGVjdXRpbmcgJ1NlbGVjdEFsbCcuCitQQVNTIERpc21p
c3NlZCB0aGUgY2FsbG91dCBiYXIuCisKK0F0dGVtcHRpbmcgdG8gbW92ZSB0aGUgc2VsZWN0aW9u
IGdyYWJiZXIuCitPYnNlcnZlZCBldmVudCB0eXBlOiBtb3VzZWRvd24KK09ic2VydmVkIGV2ZW50
IHR5cGU6IG1vdXNlbW92ZQorT2JzZXJ2ZWQgZXZlbnQgdHlwZTogbW91c2V1cAorUEFTUyBNb3Zl
ZCB0aGUgc2VsZWN0aW9uIGdyYWJiZXIuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxl
Y3Rpb24vaW9zL2Rpc3BhdGNoLW1vdXNlLWV2ZW50cy13aGVuLW1vZGlmeWluZy1zZWxlY3Rpb24t
cXVpcmsuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9kaXNwYXRjaC1t
b3VzZS1ldmVudHMtd2hlbi1tb2RpZnlpbmctc2VsZWN0aW9uLXF1aXJrLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMGEyZmI5NWE1ZGZhNGMyNDdhZGZhYjQ1YmUxZjExYjViNTljYmY4OAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9kaXNwYXRjaC1tb3VzZS1l
dmVudHMtd2hlbi1tb2RpZnlpbmctc2VsZWN0aW9uLXF1aXJrLmh0bWwKQEAgLTAsMCArMSw5OCBA
QAorPCFET0NUWVBFIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZp
ZXdwb3J0PXRydWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
cmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
cmVzb3VyY2VzL2Jhc2ljLWdlc3R1cmVzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8bWV0YSBuYW1lPSJ2aWV3cG9y
dCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEsIHVzZXItc2Nh
bGFibGU9bm8iPgorPHN0eWxlPgorYm9keSwgaHRtbCB7CisgICAgbWFyZ2luOiAwOworfQorLmVk
aXRvciB7CisgICAgYm9yZGVyOiAycHggc29saWQgdG9tYXRvOworICAgIHdpZHRoOiAzMDBweDsK
KyAgICBoZWlnaHQ6IDMwMHB4OworICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CisgICAgZm9u
dC1zaXplOiAzMnB4OworICAgIHBhZGRpbmc6IDEwcHg7Cit9CisKKyNjb25zb2xlLCAjZGVzY3Jp
cHRpb24geworICAgIHdpZHRoOiAzMDBweDsKKyAgICBoZWlnaHQ6IDEwMHB4OworICAgIG92ZXJm
bG93OiBzY3JvbGw7Cit9Cis8L3N0eWxlPgorPHNjcmlwdD4KK2lmICh3aW5kb3cuaW50ZXJuYWxz
KQorICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRTaG91bGREaXNwYXRjaFN5bnRoZXRpY01vdXNl
RXZlbnRzV2hlbk1vZGlmeWluZ1NlbGVjdGlvbih0cnVlKTsKKworbGFzdEV2ZW50ID0gbnVsbDsK
K2pzVGVzdElzQXN5bmMgPSB0cnVlOworCitmdW5jdGlvbiByZWNvcmRFdmVudCgpIHsKKyAgICBp
ZiAoIWxhc3RFdmVudCB8fCBldmVudC50eXBlICE9PSBsYXN0RXZlbnQudHlwZSkKKyAgICAgICAg
ZGVidWcoYE9ic2VydmVkIGV2ZW50IHR5cGU6ICR7ZXZlbnQudHlwZX1gKTsKKyAgICBsYXN0RXZl
bnQgPSBldmVudDsKK30KKworYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgcmVjb3JkRXZl
bnQpOworYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIiwgcmVjb3JkRXZlbnQpOworYWRkRXZl
bnRMaXN0ZW5lcigibW91c2V1cCIsIHJlY29yZEV2ZW50KTsKKworYXN5bmMgZnVuY3Rpb24gd2Fp
dEZvclNlbGVjdGlvblRvQXBwZWFyKCkKK3sKKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBj
b25zdCByZWN0cyA9IGF3YWl0IFVJSGVscGVyLmdldFVJU2VsZWN0aW9uVmlld1JlY3RzKCk7Cisg
ICAgICAgIGlmIChyZWN0cy5sZW5ndGgpCisgICAgICAgICAgICByZXR1cm4gcmVjdHM7CisgICAg
fQorfQorCitmdW5jdGlvbiBtaWRQb2ludE9mUmVjdChyZWN0KSB7CisgICAgcmV0dXJuIFtyZWN0
LmxlZnQgKyAocmVjdC53aWR0aCAvIDIpLCByZWN0LnRvcCArIChyZWN0LmhlaWdodCAvIDIpXTsK
K30KKworYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGFzeW5jICgpID0+IHsKKyAgICBpZiAoIXdp
bmRvdy50ZXN0UnVubmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBkZXNjcmlwdGlvbigiVGhp
cyB0ZXN0IHZlcmlmaWVzIHRoYXQgd2hlbiB0aGUgJ21vdXNlIGV2ZW50IHN5bnRoZXNpcyBvbiBz
ZWxlY3Rpb24nIHF1aXJrIGlzIGVuYWJsZWQsIHRleHQgc2VsZWN0aW9uIGRpc3BhdGNoZXMgbW91
c2UgZXZlbnRzIHRoYXQgbWltaWMgdGhlIHVzZXIgc2VsZWN0aW5nIHRleHQuIFRvIHJ1biB0aGUg
dGVzdCBtYW51YWxseSwgdXNlIHRoZSBjYWxsb3V0IG1lbnUgdG8gc2VsZWN0IHRleHQgb3Igc2Vs
ZWN0aW9uIGhhbmRsZXMsIGFuZCB2ZXJpZnkgdGhhdCBtb3VzZWRvd24sIG1vdXNlbW92ZSBhbmQg
bW91c2V1cCBhcmUgZGlzcGF0Y2hlZCBhbmQgbG9nZ2VkIGluIHRoZSBvdXRwdXQgYXJlYSBiZWxv
dy4iKTsKKworICAgIGRlYnVnKCJcbkF0dGVtcHRpbmcgdG8gc2hvdyB0aGUgY2FsbG91dCBiYXIu
Iik7CisgICAgY29uc3QgZWRpdG9yID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLmVkaXRvciIp
OworICAgIGF3YWl0IFVJSGVscGVyLmFjdGl2YXRlRWxlbWVudEFuZFdhaXRGb3JJbnB1dFNlc3Np
b24oZWRpdG9yKTsKKyAgICBhd2FpdCBVSUhlbHBlci5hY3RpdmF0ZUVsZW1lbnQoZWRpdG9yKTsK
KyAgICBhd2FpdCBVSUhlbHBlci53YWl0Rm9yTWVudVRvU2hvdygpOworICAgIHRlc3RQYXNzZWQo
IkRpc3BsYXllZCB0aGUgY2FsbG91dCBiYXIuIik7CisKKyAgICBkZWJ1ZygiXG5BdHRlbXB0aW5n
IHRvIHNlbGVjdCB0aGUgbGFzdCB3b3JkLiIpOworICAgIGF3YWl0IFVJSGVscGVyLmNob29zZU1l
bnVBY3Rpb24oIlNlbGVjdCIpOworICAgIGNvbnN0IHJlY3RzID0gYXdhaXQgd2FpdEZvclNlbGVj
dGlvblRvQXBwZWFyKCk7CisgICAgdGVzdFBhc3NlZCgiU2VsZWN0ZWQgdGhlIGxhc3Qgd29yZC4i
KTsKKworICAgIGRlYnVnKCJcbkF0dGVtcHRpbmcgdG8gZGlzbWlzcyB0aGUgY2FsbG91dCBiYXIg
YnkgZXhlY3V0aW5nICdTZWxlY3RBbGwnLiIpOworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJT
ZWxlY3RBbGwiKTsKKyAgICBhd2FpdCBVSUhlbHBlci53YWl0Rm9yTWVudVRvSGlkZSgpOworICAg
IHRlc3RQYXNzZWQoIkRpc21pc3NlZCB0aGUgY2FsbG91dCBiYXIuIik7CisKKyAgICBkZWJ1Zygi
XG5BdHRlbXB0aW5nIHRvIG1vdmUgdGhlIHNlbGVjdGlvbiBncmFiYmVyLiIpOworICAgIGNvbnN0
IFtncmFiYmVyWCwgZ3JhYmJlclldID0gbWlkUG9pbnRPZlJlY3QoYXdhaXQgVUlIZWxwZXIuZ2V0
U2VsZWN0aW9uRW5kR3JhYmJlclZpZXdSZWN0KCkpOworICAgIGNvbnN0IHRvdWNoRGVzdGluYXRp
b25YID0gZ3JhYmJlclggLSByZWN0c1swXS53aWR0aDsKKworICAgIGF3YWl0IHRvdWNoQW5kRHJh
Z0Zyb21Qb2ludFRvUG9pbnQoZ3JhYmJlclgsIGdyYWJiZXJZLCB0b3VjaERlc3RpbmF0aW9uWCwg
Z3JhYmJlclkpOworICAgIGF3YWl0IGxpZnRVcEF0UG9pbnQodG91Y2hEZXN0aW5hdGlvblgsIGdy
YWJiZXJZKTsKKyAgICB0ZXN0UGFzc2VkKCJNb3ZlZCB0aGUgc2VsZWN0aW9uIGdyYWJiZXIuIik7
CisKKyAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuZWRpdG9yIikucmVtb3ZlKCk7CisgICAg
ZmluaXNoSlNUZXN0KCk7Cit9KTsKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGNs
YXNzPSJlZGl0b3IiIGNvbnRlbnRlZGl0YWJsZT5UaGUgcXVpY2sgYnJvd24gZm94IGp1bXBlZCBv
dmVyIHRoZSBsYXp5IGRvZy48L2Rpdj4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcmVzb3VyY2VzL3VpLWhlbHBlci5qcyBiL0xheW91dFRlc3RzL3Jlc291cmNlcy91
aS1oZWxwZXIuanMKaW5kZXggMzBhYjhiNTIxZTYwZGFhN2Y4Y2RlMjljZGY5MGFkZGY2ODRhZjNj
YS4uZWVhMTkzZTM4ZWM4ZTdlZDg1M2EwOTM2ODkzOGMyZDRiMTNlZTM2MCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvcmVzb3VyY2VzL3VpLWhlbHBlci5qcworKysgYi9MYXlvdXRUZXN0cy9yZXNv
dXJjZXMvdWktaGVscGVyLmpzCkBAIC04MjcsNiArODI3LDE5IEBAIHdpbmRvdy5VSUhlbHBlciA9
IGNsYXNzIFVJSGVscGVyIHsKICAgICAgICAgfSk7CiAgICAgfQogCisgICAgc3RhdGljIHdhaXRG
b3JNZW51VG9IaWRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZl
ID0+IHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoYAorICAgICAgICAgICAg
ICAgIChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHVpQ29udHJvbGxlci5p
c1Nob3dpbmdNZW51KQorICAgICAgICAgICAgICAgICAgICAgICAgdWlDb250cm9sbGVyLmRpZEhp
ZGVNZW51Q2FsbGJhY2sgPSAoKSA9PiB1aUNvbnRyb2xsZXIudWlTY3JpcHRDb21wbGV0ZSgpOwor
ICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICB1aUNvbnRy
b2xsZXIudWlTY3JpcHRDb21wbGV0ZSgpOworICAgICAgICAgICAgICAgIH0pKClgLCByZXNvbHZl
KTsKKyAgICAgICAgfSk7CisgICAgfQorCiAgICAgc3RhdGljIGlzU2hvd2luZ01lbnUoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gewo=
</data>

          </attachment>
      

    </bug>

</bugzilla>