<?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>177662</bug_id>
          
          <creation_ts>2017-09-29 09:23:48 -0700</creation_ts>
          <short_desc>[iOS WK2] Implement -[WKContentView hasText] for compatibility with the UITextInput protocol</short_desc>
          <delta_ts>2017-09-30 11:52:26 -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>WebKit2</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>rniwa</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1354543</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-09-29 09:23:48 -0700</bug_when>
    <thetext>Technically, -hasText is already implemented on WKContentView, but it currently always returns a bogus value of YES. Semantically, -hasText should only be YES if the content being edited is represented by a &quot;non-zero-length string&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354544</commentid>
    <comment_count>1</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-09-29 09:24:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/33410373&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354564</commentid>
    <comment_count>2</comment_count>
      <attachid>322191</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-09-29 10:10:14 -0700</bug_when>
    <thetext>Created attachment 322191
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354565</commentid>
    <comment_count>3</comment_count>
      <attachid>322192</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-09-29 10:14:30 -0700</bug_when>
    <thetext>Created attachment 322192
Remove unnecessary UIKit.h import</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354604</commentid>
    <comment_count>4</comment_count>
      <attachid>322192</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-09-29 11:02:54 -0700</bug_when>
    <thetext>Comment on attachment 322192
Remove unnecessary UIKit.h import

Thanks Tim!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354615</commentid>
    <comment_count>5</comment_count>
      <attachid>322192</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-29 11:33:36 -0700</bug_when>
    <thetext>Comment on attachment 322192
Remove unnecessary UIKit.h import

Clearing flags on attachment: 322192

Committed r222654: &lt;http://trac.webkit.org/changeset/222654&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354616</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-29 11:33:38 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354909</commentid>
    <comment_count>7</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-09-30 11:52:26 -0700</bug_when>
    <thetext>It looks like one of the API tests added here is flaky due to a latent bug. Fixing in https://bugs.webkit.org/show_bug.cgi?id=177698</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322191</attachid>
            <date>2017-09-29 10:10:14 -0700</date>
            <delta_ts>2017-09-29 10:14:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177662-20170929101013.patch</filename>
            <type>text/plain</type>
            <size>20459</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyNjA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTJiYTQ2NTFmYTFlNTJi
NTU1NmM4ODM3NDgyMTcyYzFkNDM1OGQ2Yy4uYTJkYzk3OTc1Nzk0NjUwZWYzNjkxMzhmZDRjYTJj
NmE4OTcwYjg3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE3LTA5LTI5ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1MgV0syXSBJ
bXBsZW1lbnQgLVtXS0NvbnRlbnRWaWV3IGhhc1RleHRdIGZvciBjb21wYXRpYmlsaXR5IHdpdGgg
dGhlIFVJVGV4dElucHV0IHByb3RvY29sCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzc2NjIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMzNDEwMzcz
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZHMg
YSBuZXcgVGV4dEl0ZXJhdG9yIGhlbHBlciBmdW5jdGlvbiB0byBkZXRlcm1pbmUgd2hldGhlciBh
IFJhbmdlIGhhcyBhbnkgcGxhaW4gdGV4dC4KKworICAgICAgICBUZXN0czogRWRpdG9yU3RhdGVU
ZXN0cy5Db250ZW50Vmlld0hhc1RleHRJbkNvbnRlbnRFZGl0YWJsZUVsZW1lbnQKKyAgICAgICAg
ICAgICAgIEVkaXRvclN0YXRlVGVzdHMuQ29udGVudFZpZXdIYXNUZXh0SW5UZXh0YXJlYQorCisg
ICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aGFz
QW55UGxhaW5UZXh0KToKKworICAgICAgICBBZGQgYSBuZXcgaGVscGVyIHRvIGRldGVybWluZSB3
aGV0aGVyIGEgUmFuZ2UgY29udGFpbnMgYW55IHBsYWluIHRleHQuIFdoaWxlIGluc3BpcmVkIGJ5
IGFuZCB2ZXJ5IHNpbWlsYXIgdG8gdGhlCisgICAgICAgIHBsYWluVGV4dCgpIGhlbHBlciBmdW5j
dGlvbiwgdGhpcyB2YXJpYW50IGRvZXMgbm90IGNyZWF0ZSBhIG5ldyBzdHJpbmcgYnVmZmVyIHdo
ZW4gaW52b2tlZCwgYW5kIGlzIHRoZXJlZm9yZQorICAgICAgICBtb3JlIGVmZmljaWVudCBmb3Ig
dGhlIHB1cnBvc2VzIG9mIGRldGVybWluaW5nIHdoZXRoZXIgdGhlcmUgaXMgYW55IHBsYWluIHRl
eHQgYXQgYWxsLgorCisgICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3IuaDoKKwogMjAxNy0w
OS0yOCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLCByb2xsaW5nIG91dCByMjIyNjA2LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAyNGNiYjkxZDM1ODY5
YmRmZjQyMGU5YWUyMmEyMjM1ZjMyMmM1MzZmLi41YzY4NDdkMjllNTM1MzRiYjQ2MWFlYmVjZjYw
ZDEyNjYyNzBhNTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDE3LTA5LTI5ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1MgV0syXSBJ
bXBsZW1lbnQgLVtXS0NvbnRlbnRWaWV3IGhhc1RleHRdIGZvciBjb21wYXRpYmlsaXR5IHdpdGgg
dGhlIFVJVGV4dElucHV0IHByb3RvY29sCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzc2NjIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMzNDEwMzcz
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxl
bWVudHMgLVtXS0NvbnRlbnRWaWV3IGhhc1RleHRdIGJ5IHByb3BhZ2F0aW5nIGEgZmxhZyB0aHJv
dWdoIHBvc3QtbGF5b3V0IGVkaXRvciBzdGF0ZS4KKworICAgICAgICAqIFNoYXJlZC9FZGl0b3JT
dGF0ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkVkaXRvclN0YXRlOjpQb3N0TGF5b3V0RGF0YTo6
ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6RWRpdG9yU3RhdGU6OlBvc3RMYXlvdXRE
YXRhOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9FZGl0b3JTdGF0ZS5oOgorCisgICAgICAg
IEFkZCBhIG5ldyBmbGFnIHRvIEVkaXRvclN0YXRlIGluZGljYXRpbmcgd2hldGhlciBvciBub3Qg
dGhlIGN1cnJlbnQgZWRpdGFibGUgcm9vdCBjb250YWluaW5nIHRoZSBzZWxlY3Rpb24gaGFzCisg
ICAgICAgIGFueSBwbGFpbiB0ZXh0LiBBZGQgSVBDIHN1cHBvcnQgZm9yIHRoaXMgbmV3IGZsYWcu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToK
KyAgICAgICAgKC1bV0tDb250ZW50VmlldyBoYXNUZXh0XSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0Ojpjb21wdXRlRWRp
dGFibGVSb290SGFzQ29udGVudEFuZFBsYWluVGV4dCk6CisKKyAgICAgICAgQWRkIGEgbmV3IGhl
bHBlciB0byBjb21wdXRlIHdoZXRoZXIgb3Igbm90IHRoZSBlZGl0YWJsZSByb290IGhhcyBhbnkg
Y29udGVudCwgYW5kIGFueSBwbGFpbiB0ZXh0LiBUaGlzCisgICAgICAgIGlzIHVzZWQgYXMgdGhl
IGxhc3QgY2FjaGVkIHZhbHVlIGZvciAtaGFzVGV4dCBvbiBXS0NvbnRlbnRWaWV3IHRoYXQgd2Ug
d2lsbCBkZWxpdmVyIHRvIFVJS2l0LiBTb21lIGltcG9ydGFudAorICAgICAgICB0aGluZ3MgdG8g
bm90ZSBoZXJlOgorICAgICAgICAtIElmIHBvc3QgbGF5b3V0IGRhdGEgYWxyZWFkeSBpbmRpY2F0
ZXMgdGhhdCB3ZSBoYXZlIHNlbGVjdGVkIHNvbWUgcGxhaW4gdGV4dCwgb3IgdGhhdCB0aGVyZSBp
cyBhIHBsYWluIHRleHQKKyAgICAgICAgICBjaGFyYWN0ZXIgbmVhciB0aGUgc2VsZWN0aW9uLCBq
dXN0IHNldCB0aGUgZmxhZ3MgdG8gdHJ1ZSBhbmQgYmFpbCwgc2luY2UgdGhlIGVkaXRhYmxlIHJv
b3QgbmVjZXNzYXJpbHkgaGFzCisgICAgICAgICAgY29udGVudCB0aGF0IGlzIHBsYWluIHRleHQu
CisgICAgICAgIC0gSWYgaGFzQ29udGVudCBpcyBmYWxzZSwgZG9uJ3QgZXZlbiBib3RoZXIgY29t
cHV0aW5nIGhhc1BsYWluVGV4dCwgYmVjYXVzZSBpdCBtdXN0IGFsc28gYmUgZmFsc2UuCisgICAg
ICAgIC0gT3RoZXJ3aXNlLCB1c2UgaGFzQW55UGxhaW5UZXh0IHRvIGNvbXB1dGUgdGhlIHZhbHVl
IG9mIGhhc1BsYWluVGV4dCwgd2hpY2ggaXMgYSBmYXN0ZXIgdmFyaWFudCBvZiBwbGFpblRleHQu
CisgICAgICAgIFRoZXNlIG9wdGltaXphdGlvbnMgaGVscCB1cyBhdm9pZCBkb2luZyBleHRyYSB3
b3JrIGF0IGFsbCB3aGVuIHJ1bm5pbmcgU3BlZWRvbWV0ZXIsIGFwYXJ0IGZyb20gY2hlY2tpbmcg
dGhlCisgICAgICAgIHZhbHVlcyBvZiBhIGZldyBQb3N0TGF5b3V0RGF0YSBmbGFncy4gVGhpcyBh
bHNvIGZpeGVzIHRoZSB2YWx1ZSBvZiBoYXNDb250ZW50LCB3aGljaCB3YXMgcHJldmlvdXNseSBh
bHdheXMgZmFsc2UKKyAgICAgICAgaWYgd2UgaGFkIGEgcmFuZ2Ugc2VsZWN0aW9uIHJhdGhlciB0
aGFuIGEgY2FyZXQgc2VsZWN0aW9uIGV2ZW4gd2hlbiB0aGUgZWRpdGFibGUgcm9vdCBoYXMgY29u
dGVudCwgYmVjYXVzZSB0aGUKKyAgICAgICAgbG9naWMgdG8gY29tcHV0ZSB0aGUgdmFsdWUgb2Yg
aGFzQ29udGVudCBvbmx5IGV4aXN0ZWQgaW4gdGhlIGJyYW5jaCB3aGVyZSB3ZSBoYXZlIGEgY2Fy
ZXQgc2VsZWN0aW9uLgorCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtRWRpdG9y
U3RhdGUgY29uc3QpOgorCiAyMDE3LTA5LTI3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIFdLQ29udGVudFJ1bGVMaXN0IG5vdGlmeSBh
Y3Rpb24gdHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCmluZGV4IDU1
MmRhNjUyYmEzNzJiODY3NjUwN2QxYzI3MzliZWIyZDhiOThhMGUuLmQ1MjgzMDVhMjM4ZmZhMzI3
MjNjOTI0YjBlYTM0ODIxZDBiY2Q5OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVGV4dEl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVy
YXRvci5jcHAKQEAgLTI2MzQsNiArMjYzNCwxNSBAQCBib29sIFRleHRJdGVyYXRvcjo6Z2V0TG9j
YXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UoTm9kZSogc2NvcGUsIGNvbnN0IFJhbmdlKiByYW5nZQog
CiAvLyAtLS0tLS0tLQogCitib29sIGhhc0FueVBsYWluVGV4dChjb25zdCBSYW5nZSYgcmFuZ2Us
IFRleHRJdGVyYXRvckJlaGF2aW9yIGJlaGF2aW9yKQoreworICAgIGZvciAoVGV4dEl0ZXJhdG9y
IGl0ZXJhdG9yIHsgJnJhbmdlLCBiZWhhdmlvciB9OyAhaXRlcmF0b3IuYXRFbmQoKTsgaXRlcmF0
b3IuYWR2YW5jZSgpKSB7CisgICAgICAgIGlmICghaXRlcmF0b3IudGV4dCgpLmlzRW1wdHkoKSkK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
IFN0cmluZyBwbGFpblRleHQoY29uc3QgUmFuZ2UqIHIsIFRleHRJdGVyYXRvckJlaGF2aW9yIGRl
ZmF1bHRCZWhhdmlvciwgYm9vbCBpc0Rpc3BsYXlTdHJpbmcpCiB7CiAgICAgLy8gVGhlIGluaXRp
YWwgYnVmZmVyIHNpemUgY2FuIGJlIGNyaXRpY2FsIGZvciBwZXJmb3JtYW5jZTogaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxMTkyCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9U
ZXh0SXRlcmF0b3IuaAppbmRleCA0MDY0NjEyZDU5ZmUyZDFmMDQ2Y2U1MmFhZDVjYTk1NzViNDVh
Zjg1Li4yM2MwYjVlYzc1YjM3MDYzYWZjMjFjYjgzZGVhZDNiYjVhNzgwYjBkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKQEAgLTQ2LDYgKzQ2LDcgQEAgV0VCQ09SRV9FWFBP
UlQgU3RyaW5nIHBsYWluVGV4dChjb25zdCBSYW5nZSosIFRleHRJdGVyYXRvckJlaGF2aW9yID0g
VGV4dEl0ZXJhdG8KIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBwbGFpblRleHRSZXBsYWNpbmdOb0Jy
ZWFrU3BhY2UoY29uc3QgUmFuZ2UqLCBUZXh0SXRlcmF0b3JCZWhhdmlvciA9IFRleHRJdGVyYXRv
ckRlZmF1bHRCZWhhdmlvciwgYm9vbCBpc0Rpc3BsYXlTdHJpbmcgPSBmYWxzZSk7CiBSZWY8UmFu
Z2U+IGZpbmRQbGFpblRleHQoY29uc3QgUmFuZ2UmLCBjb25zdCBTdHJpbmcmLCBGaW5kT3B0aW9u
cyk7CiBXRUJDT1JFX0VYUE9SVCBSZWY8UmFuZ2U+IGZpbmRDbG9zZXN0UGxhaW5UZXh0KGNvbnN0
IFJhbmdlJiwgY29uc3QgU3RyaW5nJiwgRmluZE9wdGlvbnMsIHVuc2lnbmVkKTsKK1dFQkNPUkVf
RVhQT1JUIGJvb2wgaGFzQW55UGxhaW5UZXh0KGNvbnN0IFJhbmdlJiwgVGV4dEl0ZXJhdG9yQmVo
YXZpb3IgPSBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IpOwogCiAvLyBGSVhNRTogTW92ZSB0
aGlzIHNvbWV3aGVyZSBlbHNlIGluIHRoZSBlZGl0aW5nIGRpcmVjdG9yeS4gSXQgZG9lc24ndCBi
ZWxvbmcgaGVyZS4KIGJvb2wgaXNSZW5kZXJlclJlcGxhY2VkRWxlbWVudChSZW5kZXJPYmplY3Qq
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRvclN0YXRlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRvclN0YXRlLmNwcAppbmRleCA2ZjljZjQ4YmViZjBiYjI5
MWQzNjY1NGI5OGYzZjhkMGE1MTQ2MzkxLi41YWZhYzU5YWJlZGJhYWQwMTczMTQ2ZjdjMjAyMTM3
YTRmYWFlMzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9yU3RhdGUuY3BwCkBAIC0xMjcsNiAr
MTI3LDcgQEAgdm9pZCBFZGl0b3JTdGF0ZTo6UG9zdExheW91dERhdGE6OmVuY29kZShJUEM6OkVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBoYXNDb250ZW50OwogICAgIGVu
Y29kZXIgPDwgaXNTdGFibGVTdGF0ZVVwZGF0ZTsKICAgICBlbmNvZGVyIDw8IGluc2lkZUZpeGVk
UG9zaXRpb247CisgICAgZW5jb2RlciA8PCBoYXNQbGFpblRleHQ7CiAjZW5kaWYKICNpZiBQTEFU
Rk9STShNQUMpCiAgICAgZW5jb2RlciA8PCBjYW5kaWRhdGVSZXF1ZXN0U3RhcnRQb3NpdGlvbjsK
QEAgLTE3Niw2ICsxNzcsOCBAQCBib29sIEVkaXRvclN0YXRlOjpQb3N0TGF5b3V0RGF0YTo6ZGVj
b2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgUG9zdExheW91dERhdGEmCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5pbnNpZGVGaXhlZFBvc2l0
aW9uKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVz
dWx0Lmhhc1BsYWluVGV4dCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgogI2lmIFBM
QVRGT1JNKE1BQykKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jYW5kaWRhdGVSZXF1
ZXN0U3RhcnRQb3NpdGlvbikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0
b3JTdGF0ZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9yU3RhdGUuaAppbmRleCAzMzQ1
ZGM0YzRmYWYxNDliM2VhYzQwOTc3OWFhY2JkNTkyZDBkNzFkLi5iNzA1YTZlOThmODM1ZjNiMGYy
MDVhZDA0ZWQzMWIzMzI4MDEzNjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9F
ZGl0b3JTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRvclN0YXRlLmgKQEAg
LTEwMSw2ICsxMDEsNyBAQCBzdHJ1Y3QgRWRpdG9yU3RhdGUgewogICAgICAgICBib29sIGhhc0Nv
bnRlbnQgeyBmYWxzZSB9OwogICAgICAgICBib29sIGlzU3RhYmxlU3RhdGVVcGRhdGUgeyBmYWxz
ZSB9OwogICAgICAgICBib29sIGluc2lkZUZpeGVkUG9zaXRpb24geyBmYWxzZSB9OworICAgICAg
ICBib29sIGhhc1BsYWluVGV4dCB7IGZhbHNlIH07CiAjZW5kaWYKICNpZiBQTEFURk9STShNQUMp
CiAgICAgICAgIHVpbnQ2NF90IGNhbmRpZGF0ZVJlcXVlc3RTdGFydFBvc2l0aW9uIHsgMCB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW0KaW5kZXggOTI5MTc2NGZiNmJmYjE3YmJjYzkxNTNmNWJjNjM1Y2RjYjVhZjc4
NS4uZmE5YTgxMjhhZGMwYTAxYzA3ZThhOTRlMmJlODhjMmJjMGRiNGUwYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lm1tCkBAIC0zMTgyLDcgKzMxODIsOCBAQCAtICh2b2lkKWluc2VydFRleHQ6KE5TU3RyaW5nICop
YVN0cmluZ1ZhbHVlCiAKIC0gKEJPT0wpaGFzVGV4dAogewotICAgIHJldHVybiBZRVM7CisgICAg
YXV0byYgZWRpdG9yU3RhdGUgPSBfcGFnZS0+ZWRpdG9yU3RhdGUoKTsKKyAgICByZXR1cm4gIWVk
aXRvclN0YXRlLmlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhICYmIGVkaXRvclN0YXRlLnBvc3RMYXlv
dXREYXRhKCkuaGFzUGxhaW5UZXh0OwogfQogCiAvLyBlbmQgb2YgVUlUZXh0SW5wdXQgcHJvdG9j
b2wgaW1wbGVtZW50YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggODhkMjFkZmM3MjRiYmY2YTU1MzYwMzJhYjI2MDY5
OTk4ZjNlZjU3OS4uMGIyMmMyMzQxMDRiNGZhNWIwODU1ZDczOTA5ZjNkMGJmODVhZTI4ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW0KQEAgLTE0NSw2ICsxNDUsMjkgQEAgdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybVByZWZlcmVuY2Vz
RGlkQ2hhbmdlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKQogICAgIG5vdEltcGxlbWVudGVk
KCk7CiB9CiAKK3N0YXRpYyB2b2lkIGNvbXB1dGVFZGl0YWJsZVJvb3RIYXNDb250ZW50QW5kUGxh
aW5UZXh0KGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbiwgRWRpdG9yU3RhdGU6OlBv
c3RMYXlvdXREYXRhJiBkYXRhKQoreworICAgIGRhdGEuaGFzQ29udGVudCA9IGZhbHNlOworICAg
IGRhdGEuaGFzUGxhaW5UZXh0ID0gZmFsc2U7CisgICAgaWYgKCFzZWxlY3Rpb24uaXNDb250ZW50
RWRpdGFibGUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGRhdGEuc2VsZWN0ZWRUZXh0
TGVuZ3RoIHx8IGRhdGEuY2hhcmFjdGVyQWZ0ZXJTZWxlY3Rpb24gfHwgZGF0YS5jaGFyYWN0ZXJC
ZWZvcmVTZWxlY3Rpb24gfHwgZGF0YS50d29DaGFyYWN0ZXJCZWZvcmVTZWxlY3Rpb24pIHsKKyAg
ICAgICAgLy8gSWYgYW55IG9mIHRoZXNlIHZhcmlhYmxlcyBoYXZlIGJlZW4gcHJldmlvdXNseSBz
ZXQsIHRoZSBlZGl0YWJsZSByb290IG11c3QgaGF2ZSBwbGFpbiB0ZXh0IGNvbnRlbnQsIHNvIHdl
IGNhbiBiYWlsIGZyb20gdGhlIHJlbWFpbmRlciBvZiB0aGUgY2hlY2suCisgICAgICAgIGRhdGEu
aGFzQ29udGVudCA9IHRydWU7CisgICAgICAgIGRhdGEuaGFzUGxhaW5UZXh0ID0gdHJ1ZTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8qIHJvb3QgPSBzZWxlY3Rpb24ucm9vdEVk
aXRhYmxlRWxlbWVudCgpOworICAgIGlmICghcm9vdCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
YXV0byBzdGFydEluRWRpdGFibGVSb290ID0gZmlyc3RQb3NpdGlvbkluTm9kZShyb290KTsKKyAg
ICBkYXRhLmhhc0NvbnRlbnQgPSByb290LT5oYXNDaGlsZE5vZGVzKCkgJiYgIWlzRW5kT2ZFZGl0
YWJsZU9yTm9uRWRpdGFibGVDb250ZW50KHN0YXJ0SW5FZGl0YWJsZVJvb3QpOworICAgIGRhdGEu
aGFzUGxhaW5UZXh0ID0gZGF0YS5oYXNDb250ZW50ICYmIGhhc0FueVBsYWluVGV4dChSYW5nZTo6
Y3JlYXRlKHJvb3QtPmRvY3VtZW50KCksIFZpc2libGVQb3NpdGlvbiB7IHN0YXJ0SW5FZGl0YWJs
ZVJvb3QgfSwgVmlzaWJsZVBvc2l0aW9uIHsgbGFzdFBvc2l0aW9uSW5Ob2RlKHJvb3QpIH0pKTsK
K30KKwogdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiBmcmFtZSwgRWRp
dG9yU3RhdGUmIHJlc3VsdCwgSW5jbHVkZVBvc3RMYXlvdXREYXRhSGludCBzaG91bGRJbmNsdWRl
UG9zdExheW91dERhdGEpIGNvbnN0CiB7CiAgICAgaWYgKGZyYW1lLmVkaXRvcigpLmhhc0NvbXBv
c2l0aW9uKCkpIHsKQEAgLTE4NSwxMSArMjA4LDggQEAgdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUVk
aXRvclN0YXRlKEZyYW1lJiBmcmFtZSwgRWRpdG9yU3RhdGUmIHJlc3VsdCwgSW5jbHVkZVBvc3QK
ICAgICAgICAgLy8gRklYTUU6IFRoZSBmb2xsb3dpbmcgY2hlY2sgc2hvdWxkIHRha2UgaW50byBh
Y2NvdW50IHdyaXRpbmcgZGlyZWN0aW9uLgogICAgICAgICBwb3N0TGF5b3V0RGF0YS5pc1JlcGxh
Y2VBbGxvd2VkID0gcmVzdWx0LmlzQ29udGVudEVkaXRhYmxlICYmIGF0Qm91bmRhcnlPZkdyYW51
bGFyaXR5KHNlbGVjdGlvbi5zdGFydCgpLCBXb3JkR3JhbnVsYXJpdHksIERpcmVjdGlvbkZvcndh
cmQpOwogICAgICAgICBwb3N0TGF5b3V0RGF0YS53b3JkQXRTZWxlY3Rpb24gPSBwbGFpblRleHRS
ZXBsYWNpbmdOb0JyZWFrU3BhY2Uod29yZFJhbmdlRnJvbVBvc2l0aW9uKHNlbGVjdGlvbi5zdGFy
dCgpKS5nZXQoKSk7Ci0gICAgICAgIGlmIChzZWxlY3Rpb24uaXNDb250ZW50RWRpdGFibGUoKSkg
eworICAgICAgICBpZiAoc2VsZWN0aW9uLmlzQ29udGVudEVkaXRhYmxlKCkpCiAgICAgICAgICAg
ICBjaGFyYWN0ZXJzQXJvdW5kUG9zaXRpb24oc2VsZWN0aW9uLnN0YXJ0KCksIHBvc3RMYXlvdXRE
YXRhLmNoYXJhY3RlckFmdGVyU2VsZWN0aW9uLCBwb3N0TGF5b3V0RGF0YS5jaGFyYWN0ZXJCZWZv
cmVTZWxlY3Rpb24sIHBvc3RMYXlvdXREYXRhLnR3b0NoYXJhY3RlckJlZm9yZVNlbGVjdGlvbik7
Ci0gICAgICAgICAgICBOb2RlKiByb290ID0gc2VsZWN0aW9uLnJvb3RFZGl0YWJsZUVsZW1lbnQo
KTsKLSAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLmhhc0NvbnRlbnQgPSByb290ICYmIHJvb3Qt
Pmhhc0NoaWxkTm9kZXMoKSAmJiAhaXNFbmRPZkVkaXRhYmxlT3JOb25FZGl0YWJsZUNvbnRlbnQo
Zmlyc3RQb3NpdGlvbkluTm9kZShyb290KSk7Ci0gICAgICAgIH0KICAgICB9IGVsc2UgaWYgKHNl
bGVjdGlvbi5pc1JhbmdlKCkpIHsKICAgICAgICAgcG9zdExheW91dERhdGEuY2FyZXRSZWN0QXRT
dGFydCA9IHZpZXctPmNvbnRlbnRzVG9Sb290VmlldyhWaXNpYmxlUG9zaXRpb24oc2VsZWN0aW9u
LnN0YXJ0KCkpLmFic29sdXRlQ2FyZXRCb3VuZHMoJnN0YXJ0Tm9kZUlzSW5zaWRlRml4ZWRQb3Np
dGlvbikpOwogICAgICAgICBwb3N0TGF5b3V0RGF0YS5jYXJldFJlY3RBdEVuZCA9IHZpZXctPmNv
bnRlbnRzVG9Sb290VmlldyhWaXNpYmxlUG9zaXRpb24oc2VsZWN0aW9uLmVuZCgpKS5hYnNvbHV0
ZUNhcmV0Qm91bmRzKCZlbmROb2RlSXNJbnNpZGVGaXhlZFBvc2l0aW9uKSk7CkBAIC0yMTEsNiAr
MjMxLDcgQEAgdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiBmcmFtZSwg
RWRpdG9yU3RhdGUmIHJlc3VsdCwgSW5jbHVkZVBvc3QKICAgICBpZiAoIXNlbGVjdGlvbi5pc05v
bmUoKSkgewogICAgICAgICBpZiAobV9hc3Npc3RlZE5vZGUgJiYgbV9hc3Npc3RlZE5vZGUtPnJl
bmRlcmVyKCkpCiAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS5zZWxlY3Rpb25DbGlwUmVjdCA9
IHZpZXctPmNvbnRlbnRzVG9Sb290VmlldyhtX2Fzc2lzdGVkTm9kZS0+cmVuZGVyZXIoKS0+YWJz
b2x1dGVCb3VuZGluZ0JveFJlY3QoKSk7CisgICAgICAgIGNvbXB1dGVFZGl0YWJsZVJvb3RIYXND
b250ZW50QW5kUGxhaW5UZXh0KHNlbGVjdGlvbiwgcG9zdExheW91dERhdGEpOwogICAgIH0KIH0K
IApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDIz
YjQ3ZmY3MTgyMWU1NmRmNTg3Y2NhZjhiNTE5ODMyOTE1MjgwZTkuLmRmMGE2OTFmY2Y4ODJjZGVk
ZDIwNzRmODJjMzYwZjg3MzY0MGY0ZWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAxNy0wOS0yOSAgV2Vuc29uIEhz
aWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TIFdLMl0gSW1wbGVt
ZW50IC1bV0tDb250ZW50VmlldyBoYXNUZXh0XSBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBV
SVRleHRJbnB1dCBwcm90b2NvbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTc3NjYyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMzQxMDM3Mz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgRWRpdG9y
U3RhdGUgQVBJIHRlc3RzIHRvIGNoZWNrIHRoYXQgdGhlIHZhbHVlIG9mIC1bV0tDb250ZW50Vmll
dyBoYXNUZXh0XSBpcyBjb3JyZWN0IHdoZW4gZWRpdGluZyBib3RoIHBsYWluCisgICAgICAgIGFu
ZCByaWNoIHRleHQgYXJlYXMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0VkaXRpbmdUZXN0
SGFybmVzcy5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvRWRpdGluZ1Rlc3RIYXJuZXNzLm1t
OgorICAgICAgICAoLVtFZGl0aW5nVGVzdEhhcm5lc3MgaW5zZXJ0UGFyYWdyYXBoXSk6CisgICAg
ICAgICgtW0VkaXRpbmdUZXN0SGFybmVzcyBpbnNlcnRUZXh0Ol0pOgorICAgICAgICAoLVtFZGl0
aW5nVGVzdEhhcm5lc3MgaW5zZXJ0SFRNTDpdKToKKyAgICAgICAgKC1bRWRpdGluZ1Rlc3RIYXJu
ZXNzIHNlbGVjdEFsbF0pOgorICAgICAgICAoLVtFZGl0aW5nVGVzdEhhcm5lc3MgZGVsZXRlQmFj
a3dhcmRzXSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9FZGl0
b3JTdGF0ZVRlc3RzLm1tOgorCisgICAgICAgIEFkZCB2ZXJzaW9ucyBvZiBFZGl0aW5nVGVzdEhh
cm5lc3MgaGVscGVycyB0aGF0IGRvbid0IHJlcXVpcmUgdXMgdG8gZXhwZWN0IGFueSBlZGl0b3Ig
c3RhdGUgYWZ0ZXIgZXhlY3V0aW5nIHRoZQorICAgICAgICBlZGl0IGNvbW1hbmQuCisKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OmNoZWNrQ29udGVudFZpZXdIYXNUZXh0V2l0aEZhaWx1cmVEZXNj
cmlwdGlvbik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L2NvY29hL1Rlc3RXS1dlYlZpZXcubW06CisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXcgdGV4dElu
cHV0Q29udGVudFZpZXddKToKKwogMjAxNy0wOS0yNyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBXS0NvbnRlbnRSdWxlTGlzdCBub3Rp
ZnkgYWN0aW9uIHR5cGUKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvRWRpdGluZ1Rl
c3RIYXJuZXNzLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL0VkaXRpbmdUZXN0SGFybmVzcy5oCmlu
ZGV4IGYwNWI2YjJjZGE4NTA0ZDhlYmQ0MjE3NGYwNWJkNzI3NjkxYmQxNDkuLjMzZTI2YzM2MjQ3
MjE0MDBlOTA0MDBkODI1OWVhNzdlMWY0ODQ1NWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvRWRpdGluZ1Rlc3RIYXJuZXNzLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9FZGl0
aW5nVGVzdEhhcm5lc3MuaApAQCAtNDEsNiArNDEsMTEgQEAKIEBwcm9wZXJ0eSAobm9uYXRvbWlj
LCByZWFkb25seSkgTlNEaWN0aW9uYXJ5ICpsYXRlc3RFZGl0b3JTdGF0ZTsKIEBwcm9wZXJ0eSAo
bm9uYXRvbWljLCByZWFkb25seSkgTlNBcnJheTxOU0RpY3Rpb25hcnkgKj4gKmVkaXRvclN0YXRl
SGlzdG9yeTsKIAorLSAodm9pZClpbnNlcnRQYXJhZ3JhcGg7CistICh2b2lkKWluc2VydFRleHQ6
KE5TU3RyaW5nICopdGV4dDsKKy0gKHZvaWQpaW5zZXJ0SFRNTDooTlNTdHJpbmcgKilodG1sOwor
LSAodm9pZClzZWxlY3RBbGw7CistICh2b2lkKWRlbGV0ZUJhY2t3YXJkczsKIC0gKHZvaWQpaW5z
ZXJ0UGFyYWdyYXBoQW5kRXhwZWN0RWRpdG9yU3RhdGVXaXRoOihOU0RpY3Rpb25hcnk8TlNTdHJp
bmcgKiwgaWQ+ICopZW50cmllczsKIC0gKHZvaWQpaW5zZXJ0VGV4dDooTlNTdHJpbmcgKil0ZXh0
IGFuZEV4cGVjdEVkaXRvclN0YXRlV2l0aDooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAq
KWVudHJpZXM7CiAtICh2b2lkKWluc2VydEhUTUw6KE5TU3RyaW5nICopaHRtbCBhbmRFeHBlY3RF
ZGl0b3JTdGF0ZVdpdGg6KE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKillbnRyaWVzOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9FZGl0aW5nVGVzdEhhcm5lc3MubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL0VkaXRpbmdUZXN0SGFybmVzcy5tbQppbmRleCBhYzZhZGMxNTM5
MWVmZjc3MWE2ZWEwNGZmMmJmYzgxNTU5YTBhODY1Li45MmIxYjllZWFlODViZWFiOWVkODU5Zjcy
YmZkY2UyY2U2MDkzMDRjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0VkaXRpbmdU
ZXN0SGFybmVzcy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0VkaXRpbmdUZXN0SGFybmVz
cy5tbQpAQCAtNjcsNiArNjcsMzEgQEAgLSAoTlNBcnJheTxOU0RpY3Rpb25hcnkgKj4gKillZGl0
b3JTdGF0ZUhpc3RvcnkKICAgICByZXR1cm4gX2VkaXRvclN0YXRlSGlzdG9yeS5nZXQoKTsKIH0K
IAorLSAodm9pZClpbnNlcnRQYXJhZ3JhcGgKK3sKKyAgICBbc2VsZiBpbnNlcnRQYXJhZ3JhcGhB
bmRFeHBlY3RFZGl0b3JTdGF0ZVdpdGg6bmlsXTsKK30KKworLSAodm9pZClpbnNlcnRUZXh0OihO
U1N0cmluZyAqKXRleHQKK3sKKyAgICBbc2VsZiBpbnNlcnRUZXh0OnRleHQgYW5kRXhwZWN0RWRp
dG9yU3RhdGVXaXRoOm5pbF07Cit9CisKKy0gKHZvaWQpaW5zZXJ0SFRNTDooTlNTdHJpbmcgKilo
dG1sCit7CisgICAgW3NlbGYgaW5zZXJ0SFRNTDpodG1sIGFuZEV4cGVjdEVkaXRvclN0YXRlV2l0
aDpuaWxdOworfQorCistICh2b2lkKXNlbGVjdEFsbAoreworICAgIFtzZWxmIHNlbGVjdEFsbEFu
ZEV4cGVjdEVkaXRvclN0YXRlV2l0aDpuaWxdOworfQorCistICh2b2lkKWRlbGV0ZUJhY2t3YXJk
cworeworICAgIFtzZWxmIGRlbGV0ZUJhY2t3YXJkQW5kRXhwZWN0RWRpdG9yU3RhdGVXaXRoOm5p
bF07Cit9CisKIC0gKHZvaWQpaW5zZXJ0VGV4dDooTlNTdHJpbmcgKil0ZXh0IGFuZEV4cGVjdEVk
aXRvclN0YXRlV2l0aDooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKWVudHJpZXMKIHsK
ICAgICBbc2VsZiBfZXhlY0NvbW1hbmQ6QCJJbnNlcnRUZXh0IiBhcmd1bWVudDp0ZXh0IGV4cGVj
dEVudHJpZXM6ZW50cmllc107CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0VkaXRvclN0YXRlVGVzdHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0VkaXRvclN0YXRlVGVzdHMubW0KaW5kZXggZmFhNTUyZWRmYWI4ZGIw
MGNhZmJmNjAyNzhlMDFjNTQ4ZDI3NzZmOC4uMDhlOGVlMzEwMzdhY2JmMDMxZWY0Y2FlYmVhNDQ1
MDkwNzQyYWQ4NCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9FZGl0b3JTdGF0ZVRlc3RzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvRWRpdG9yU3RhdGVUZXN0cy5tbQpAQCAtMjI5LDYgKzIyOSw3MyBAQCBURVNU
KEVkaXRvclN0YXRlVGVzdHMsIFR5cGluZ0F0dHJpYnV0ZUxpbmtDb2xvcikKICAgICBFWFBFQ1Rf
V0tfU1RSRVEoImh0dHBzOi8vd3d3LmFwcGxlLmNvbS8iLCBbW3Rlc3RIYXJuZXNzIHdlYlZpZXdd
IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdh
JykuaHJlZiJdKTsKIH0KIAorI2lmIFBMQVRGT1JNKElPUykKKworc3RhdGljIHZvaWQgY2hlY2tD
b250ZW50Vmlld0hhc1RleHRXaXRoRmFpbHVyZURlc2NyaXB0aW9uKFRlc3RXS1dlYlZpZXcgKndl
YlZpZXcsIEJPT0wgZXhwZWN0ZWRUb0hhdmVUZXh0LCBOU1N0cmluZyAqZGVzY3JpcHRpb24pCit7
CisgICAgQk9PTCBoYXNUZXh0ID0gd2ViVmlldy50ZXh0SW5wdXRDb250ZW50Vmlldy5oYXNUZXh0
OworICAgIGlmIChleHBlY3RlZFRvSGF2ZVRleHQpCisgICAgICAgIEVYUEVDVF9UUlVFKGhhc1Rl
eHQpOworICAgIGVsc2UKKyAgICAgICAgRVhQRUNUX0ZBTFNFKGhhc1RleHQpOworCisgICAgaWYg
KGV4cGVjdGVkVG9IYXZlVGV4dCAhPSBoYXNUZXh0KQorICAgICAgICBOU0xvZyhAIkV4cGVjdGVk
IC1bJUAgaGFzVGV4dF0gdG8gYmUgJUAsIGJ1dCBvYnNlcnZlZDogJUAgKCVAKSIsIFt3ZWJWaWV3
LnRleHRJbnB1dENvbnRlbnRWaWV3IGNsYXNzXSwgZXhwZWN0ZWRUb0hhdmVUZXh0ID8gQCJZRVMi
IDogQCJOTyIsIGhhc1RleHQgPyBAIllFUyIgOiBAIk5PIiwgZGVzY3JpcHRpb24pOworfQorCitU
RVNUKEVkaXRvclN0YXRlVGVzdHMsIENvbnRlbnRWaWV3SGFzVGV4dEluQ29udGVudEVkaXRhYmxl
RWxlbWVudCkKK3sKKyAgICBhdXRvIHRlc3RIYXJuZXNzID0gc2V0VXBFZGl0b3JTdGF0ZVRlc3RI
YXJuZXNzKCk7CisgICAgVGVzdFdLV2ViVmlldyAqd2ViVmlldyA9IFt0ZXN0SGFybmVzcyB3ZWJW
aWV3XTsKKworICAgIGNoZWNrQ29udGVudFZpZXdIYXNUZXh0V2l0aEZhaWx1cmVEZXNjcmlwdGlv
bih3ZWJWaWV3LCBOTywgQCJiZWZvcmUgaW5zZXJ0aW5nIGFueSBjb250ZW50Iik7CisgICAgW3Rl
c3RIYXJuZXNzIGluc2VydEhUTUw6QCI8aW1nIHNyYz0naWNvbi5wbmcnPjwvaW1nPiJdOworICAg
IGNoZWNrQ29udGVudFZpZXdIYXNUZXh0V2l0aEZhaWx1cmVEZXNjcmlwdGlvbih3ZWJWaWV3LCBO
TywgQCJhZnRlciBpbnNlcnRpbmcgYW4gaW1hZ2UgZWxlbWVudCIpOworICAgIFt0ZXN0SGFybmVz
cyBpbnNlcnRUZXh0OkAiQSJdOworICAgIGNoZWNrQ29udGVudFZpZXdIYXNUZXh0V2l0aEZhaWx1
cmVEZXNjcmlwdGlvbih3ZWJWaWV3LCBZRVMsIEAiYWZ0ZXIgaW5zZXJ0aW5nIHRleHQiKTsKKyAg
ICBbdGVzdEhhcm5lc3Mgc2VsZWN0QWxsXTsKKyAgICBjaGVja0NvbnRlbnRWaWV3SGFzVGV4dFdp
dGhGYWlsdXJlRGVzY3JpcHRpb24od2ViVmlldywgWUVTLCBAImFmdGVyIHNlbGVjdGluZyBldmVy
eXRoaW5nIik7CisgICAgW3Rlc3RIYXJuZXNzIGRlbGV0ZUJhY2t3YXJkc107CisgICAgY2hlY2tD
b250ZW50Vmlld0hhc1RleHRXaXRoRmFpbHVyZURlc2NyaXB0aW9uKHdlYlZpZXcsIE5PLCBAImFm
dGVyIGRlbGV0aW5nIGV2ZXJ5dGhpbmciKTsKKyAgICBbdGVzdEhhcm5lc3MgaW5zZXJ0UGFyYWdy
YXBoXTsKKyAgICBjaGVja0NvbnRlbnRWaWV3SGFzVGV4dFdpdGhGYWlsdXJlRGVzY3JpcHRpb24o
d2ViVmlldywgWUVTLCBAImFmdGVyIGluc2VydGluZyBhIG5ld2xpbmUiKTsKKyAgICBbdGVzdEhh
cm5lc3MgZGVsZXRlQmFja3dhcmRzXTsKKyAgICBjaGVja0NvbnRlbnRWaWV3SGFzVGV4dFdpdGhG
YWlsdXJlRGVzY3JpcHRpb24od2ViVmlldywgTk8sIEAiYWZ0ZXIgZGVsZXRpbmcgdGhlIG5ld2xp
bmUiKTsKKyAgICBbdGVzdEhhcm5lc3MgaW5zZXJ0VGV4dDpAIkIiXTsKKyAgICBjaGVja0NvbnRl
bnRWaWV3SGFzVGV4dFdpdGhGYWlsdXJlRGVzY3JpcHRpb24od2ViVmlldywgWUVTLCBAImFmdGVy
IGluc2VydGluZyB0ZXh0IGFnYWluIik7CisgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5n
SmF2YVNjcmlwdDpAImRvY3VtZW50LmJvZHkuYmx1cigpIl07CisgICAgW3dlYlZpZXcgd2FpdEZv
ck5leHRQcmVzZW50YXRpb25VcGRhdGVdOworICAgIGNoZWNrQ29udGVudFZpZXdIYXNUZXh0V2l0
aEZhaWx1cmVEZXNjcmlwdGlvbih3ZWJWaWV3LCBOTywgQCJhZnRlciBsb3NpbmcgZm9jdXMiKTsK
K30KKworVEVTVChFZGl0b3JTdGF0ZVRlc3RzLCBDb250ZW50Vmlld0hhc1RleHRJblRleHRhcmVh
KQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgNDAwLCA0MDApXSk7CisgICAgYXV0byB0ZXN0
SGFybmVzcyA9IGFkb3B0TlMoW1tFZGl0aW5nVGVzdEhhcm5lc3MgYWxsb2NdIGluaXRXaXRoV2Vi
Vmlldzp3ZWJWaWV3LmdldCgpXSk7CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1M
U3RyaW5nOkAiPHRleHRhcmVhIGlkPSd0ZXh0YXJlYSc+PC90ZXh0YXJlYT4iXTsKKyAgICBbd2Vi
VmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAidGV4dGFyZWEuZm9jdXMoKSJdOwor
ICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKKworICAgIGNoZWNr
Q29udGVudFZpZXdIYXNUZXh0V2l0aEZhaWx1cmVEZXNjcmlwdGlvbih3ZWJWaWV3LmdldCgpLCBO
TywgQCJiZWZvcmUgaW5zZXJ0aW5nIGFueSBjb250ZW50Iik7CisgICAgW3Rlc3RIYXJuZXNzIGlu
c2VydFRleHQ6QCJBIl07CisgICAgY2hlY2tDb250ZW50Vmlld0hhc1RleHRXaXRoRmFpbHVyZURl
c2NyaXB0aW9uKHdlYlZpZXcuZ2V0KCksIFlFUywgQCJhZnRlciBpbnNlcnRpbmcgdGV4dCIpOwor
ICAgIFt0ZXN0SGFybmVzcyBzZWxlY3RBbGxdOworICAgIGNoZWNrQ29udGVudFZpZXdIYXNUZXh0
V2l0aEZhaWx1cmVEZXNjcmlwdGlvbih3ZWJWaWV3LmdldCgpLCBZRVMsIEAiYWZ0ZXIgc2VsZWN0
aW5nIGV2ZXJ5dGhpbmciKTsKKyAgICBbdGVzdEhhcm5lc3MgZGVsZXRlQmFja3dhcmRzXTsKKyAg
ICBjaGVja0NvbnRlbnRWaWV3SGFzVGV4dFdpdGhGYWlsdXJlRGVzY3JpcHRpb24od2ViVmlldy5n
ZXQoKSwgTk8sIEAiYWZ0ZXIgZGVsZXRpbmcgZXZlcnl0aGluZyIpOworICAgIFt0ZXN0SGFybmVz
cyBpbnNlcnRQYXJhZ3JhcGhdOworICAgIGNoZWNrQ29udGVudFZpZXdIYXNUZXh0V2l0aEZhaWx1
cmVEZXNjcmlwdGlvbih3ZWJWaWV3LmdldCgpLCBZRVMsIEAiYWZ0ZXIgaW5zZXJ0aW5nIGEgbmV3
bGluZSIpOworICAgIFt0ZXN0SGFybmVzcyBkZWxldGVCYWNrd2FyZHNdOworICAgIGNoZWNrQ29u
dGVudFZpZXdIYXNUZXh0V2l0aEZhaWx1cmVEZXNjcmlwdGlvbih3ZWJWaWV3LmdldCgpLCBOTywg
QCJhZnRlciBkZWxldGluZyB0aGUgbmV3bGluZSIpOworICAgIFt0ZXN0SGFybmVzcyBpbnNlcnRU
ZXh0OkAiQiJdOworICAgIGNoZWNrQ29udGVudFZpZXdIYXNUZXh0V2l0aEZhaWx1cmVEZXNjcmlw
dGlvbih3ZWJWaWV3LmdldCgpLCBZRVMsIEAiYWZ0ZXIgaW5zZXJ0aW5nIHRleHQgYWdhaW4iKTsK
KyAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAidGV4dGFyZWEuYmx1
cigpIl07CisgICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOworICAg
IGNoZWNrQ29udGVudFZpZXdIYXNUZXh0V2l0aEZhaWx1cmVEZXNjcmlwdGlvbih3ZWJWaWV3Lmdl
dCgpLCBOTywgQCJhZnRlciBsb3NpbmcgZm9jdXMiKTsKK30KKworI2VuZGlmCisKIH0gLy8gbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkKIAogI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oCmluZGV4IGQ2ZjY1NzhlNjllYzZiMTc4
NzQyMDlkODVjMDQ3OWYyOTNkMTZkOTMuLjgzNWE1OTgwMzFmNjA4ZGEwODZjNDY1MTQwNzNiNzJk
NjE0NmZhYTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2Vi
Vmlldy5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oCkBA
IC0yMywxMCArMjMsMTQgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCisjaWYgV0tfQVBJX0VOQUJMRUQKKwogI2ltcG9ydCA8V2ViS2l0L1dlYktpdC5oPgogI2lt
cG9ydCA8d3RmL1JldGFpblB0ci5oPgogCi0jaWYgV0tfQVBJX0VOQUJMRUQKKyNpZiBQTEFURk9S
TShJT1MpCisjaW1wb3J0IDxVSUtpdC9VSUtpdC5oPgorI2VuZGlmCiAKIEBjbGFzcyBfV0tQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb247CiAKQEAgLTUzLDYgKzU3LDcgQEAKIAogI2lmIFBMQVRGT1JN
KElPUykKIEBpbnRlcmZhY2UgVGVzdFdLV2ViVmlldyAoSU9TT25seSkKK0Bwcm9wZXJ0eSAobm9u
YXRvbWljLCByZWFkb25seSkgVUlWaWV3IDxVSVRleHRJbnB1dD4gKnRleHRJbnB1dENvbnRlbnRW
aWV3OwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBSZXRhaW5QdHI8TlNBcnJheT4g
c2VsZWN0aW9uUmVjdHNBZnRlclByZXNlbnRhdGlvblVwZGF0ZTsKIC0gKF9XS0FjdGl2YXRlZEVs
ZW1lbnRJbmZvICopYWN0aXZhdGVkRWxlbWVudEF0UG9zaXRpb246KENHUG9pbnQpcG9zaXRpb247
CiBAZW5kCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZp
ZXcubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KaW5kZXgg
ZGMxYTQ1ZDQwNjNjOWU2ZTVjZGE5N2RlZjNmMzQyZTIwNDFlY2U3MC4uODlmZjY1ZmRkODU1MzY5
M2VlYjU5ZGE1ZThmNTkzNmJiOTNhODA3MCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2Ev
VGVzdFdLV2ViVmlldy5tbQpAQCAtMjkyLDYgKzI5MiwxMSBAQCBAZW5kCiAKIEBpbXBsZW1lbnRh
dGlvbiBUZXN0V0tXZWJWaWV3IChJT1NPbmx5KQogCistIChVSVZpZXcgPFVJVGV4dElucHV0PiAq
KXRleHRJbnB1dENvbnRlbnRWaWV3Cit7CisgICAgcmV0dXJuIChVSVZpZXcgPFVJVGV4dElucHV0
PiAqKVtzZWxmIHZhbHVlRm9yS2V5OkAiX2N1cnJlbnRDb250ZW50VmlldyJdOworfQorCiAtIChS
ZXRhaW5QdHI8TlNBcnJheT4pc2VsZWN0aW9uUmVjdHNBZnRlclByZXNlbnRhdGlvblVwZGF0ZQog
ewogICAgIFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiByZXRhaW5lZFNlbGYgPSBzZWxmOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322192</attachid>
            <date>2017-09-29 10:14:30 -0700</date>
            <delta_ts>2017-09-29 11:33:36 -0700</delta_ts>
            <desc>Remove unnecessary UIKit.h import</desc>
            <filename>bug-177662-20170929101429.patch</filename>
            <type>text/plain</type>
            <size>20825</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyNjA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTJiYTQ2NTFmYTFlNTJi
NTU1NmM4ODM3NDgyMTcyYzFkNDM1OGQ2Yy4uYTJkYzk3OTc1Nzk0NjUwZWYzNjkxMzhmZDRjYTJj
NmE4OTcwYjg3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE3LTA5LTI5ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1MgV0syXSBJ
bXBsZW1lbnQgLVtXS0NvbnRlbnRWaWV3IGhhc1RleHRdIGZvciBjb21wYXRpYmlsaXR5IHdpdGgg
dGhlIFVJVGV4dElucHV0IHByb3RvY29sCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzc2NjIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMzNDEwMzcz
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZHMg
YSBuZXcgVGV4dEl0ZXJhdG9yIGhlbHBlciBmdW5jdGlvbiB0byBkZXRlcm1pbmUgd2hldGhlciBh
IFJhbmdlIGhhcyBhbnkgcGxhaW4gdGV4dC4KKworICAgICAgICBUZXN0czogRWRpdG9yU3RhdGVU
ZXN0cy5Db250ZW50Vmlld0hhc1RleHRJbkNvbnRlbnRFZGl0YWJsZUVsZW1lbnQKKyAgICAgICAg
ICAgICAgIEVkaXRvclN0YXRlVGVzdHMuQ29udGVudFZpZXdIYXNUZXh0SW5UZXh0YXJlYQorCisg
ICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aGFz
QW55UGxhaW5UZXh0KToKKworICAgICAgICBBZGQgYSBuZXcgaGVscGVyIHRvIGRldGVybWluZSB3
aGV0aGVyIGEgUmFuZ2UgY29udGFpbnMgYW55IHBsYWluIHRleHQuIFdoaWxlIGluc3BpcmVkIGJ5
IGFuZCB2ZXJ5IHNpbWlsYXIgdG8gdGhlCisgICAgICAgIHBsYWluVGV4dCgpIGhlbHBlciBmdW5j
dGlvbiwgdGhpcyB2YXJpYW50IGRvZXMgbm90IGNyZWF0ZSBhIG5ldyBzdHJpbmcgYnVmZmVyIHdo
ZW4gaW52b2tlZCwgYW5kIGlzIHRoZXJlZm9yZQorICAgICAgICBtb3JlIGVmZmljaWVudCBmb3Ig
dGhlIHB1cnBvc2VzIG9mIGRldGVybWluaW5nIHdoZXRoZXIgdGhlcmUgaXMgYW55IHBsYWluIHRl
eHQgYXQgYWxsLgorCisgICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3IuaDoKKwogMjAxNy0w
OS0yOCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLCByb2xsaW5nIG91dCByMjIyNjA2LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAyNGNiYjkxZDM1ODY5
YmRmZjQyMGU5YWUyMmEyMjM1ZjMyMmM1MzZmLi41YzY4NDdkMjllNTM1MzRiYjQ2MWFlYmVjZjYw
ZDEyNjYyNzBhNTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDE3LTA5LTI5ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1MgV0syXSBJ
bXBsZW1lbnQgLVtXS0NvbnRlbnRWaWV3IGhhc1RleHRdIGZvciBjb21wYXRpYmlsaXR5IHdpdGgg
dGhlIFVJVGV4dElucHV0IHByb3RvY29sCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzc2NjIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMzNDEwMzcz
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxl
bWVudHMgLVtXS0NvbnRlbnRWaWV3IGhhc1RleHRdIGJ5IHByb3BhZ2F0aW5nIGEgZmxhZyB0aHJv
dWdoIHBvc3QtbGF5b3V0IGVkaXRvciBzdGF0ZS4KKworICAgICAgICAqIFNoYXJlZC9FZGl0b3JT
dGF0ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkVkaXRvclN0YXRlOjpQb3N0TGF5b3V0RGF0YTo6
ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6RWRpdG9yU3RhdGU6OlBvc3RMYXlvdXRE
YXRhOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9FZGl0b3JTdGF0ZS5oOgorCisgICAgICAg
IEFkZCBhIG5ldyBmbGFnIHRvIEVkaXRvclN0YXRlIGluZGljYXRpbmcgd2hldGhlciBvciBub3Qg
dGhlIGN1cnJlbnQgZWRpdGFibGUgcm9vdCBjb250YWluaW5nIHRoZSBzZWxlY3Rpb24gaGFzCisg
ICAgICAgIGFueSBwbGFpbiB0ZXh0LiBBZGQgSVBDIHN1cHBvcnQgZm9yIHRoaXMgbmV3IGZsYWcu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToK
KyAgICAgICAgKC1bV0tDb250ZW50VmlldyBoYXNUZXh0XSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0Ojpjb21wdXRlRWRp
dGFibGVSb290SGFzQ29udGVudEFuZFBsYWluVGV4dCk6CisKKyAgICAgICAgQWRkIGEgbmV3IGhl
bHBlciB0byBjb21wdXRlIHdoZXRoZXIgb3Igbm90IHRoZSBlZGl0YWJsZSByb290IGhhcyBhbnkg
Y29udGVudCwgYW5kIGFueSBwbGFpbiB0ZXh0LiBUaGlzCisgICAgICAgIGlzIHVzZWQgYXMgdGhl
IGxhc3QgY2FjaGVkIHZhbHVlIGZvciAtaGFzVGV4dCBvbiBXS0NvbnRlbnRWaWV3IHRoYXQgd2Ug
d2lsbCBkZWxpdmVyIHRvIFVJS2l0LiBTb21lIGltcG9ydGFudAorICAgICAgICB0aGluZ3MgdG8g
bm90ZSBoZXJlOgorICAgICAgICAtIElmIHBvc3QgbGF5b3V0IGRhdGEgYWxyZWFkeSBpbmRpY2F0
ZXMgdGhhdCB3ZSBoYXZlIHNlbGVjdGVkIHNvbWUgcGxhaW4gdGV4dCwgb3IgdGhhdCB0aGVyZSBp
cyBhIHBsYWluIHRleHQKKyAgICAgICAgICBjaGFyYWN0ZXIgbmVhciB0aGUgc2VsZWN0aW9uLCBq
dXN0IHNldCB0aGUgZmxhZ3MgdG8gdHJ1ZSBhbmQgYmFpbCwgc2luY2UgdGhlIGVkaXRhYmxlIHJv
b3QgbmVjZXNzYXJpbHkgaGFzCisgICAgICAgICAgY29udGVudCB0aGF0IGlzIHBsYWluIHRleHQu
CisgICAgICAgIC0gSWYgaGFzQ29udGVudCBpcyBmYWxzZSwgZG9uJ3QgZXZlbiBib3RoZXIgY29t
cHV0aW5nIGhhc1BsYWluVGV4dCwgYmVjYXVzZSBpdCBtdXN0IGFsc28gYmUgZmFsc2UuCisgICAg
ICAgIC0gT3RoZXJ3aXNlLCB1c2UgaGFzQW55UGxhaW5UZXh0IHRvIGNvbXB1dGUgdGhlIHZhbHVl
IG9mIGhhc1BsYWluVGV4dCwgd2hpY2ggaXMgYSBmYXN0ZXIgdmFyaWFudCBvZiBwbGFpblRleHQu
CisgICAgICAgIFRoZXNlIG9wdGltaXphdGlvbnMgaGVscCB1cyBhdm9pZCBkb2luZyBleHRyYSB3
b3JrIGF0IGFsbCB3aGVuIHJ1bm5pbmcgU3BlZWRvbWV0ZXIsIGFwYXJ0IGZyb20gY2hlY2tpbmcg
dGhlCisgICAgICAgIHZhbHVlcyBvZiBhIGZldyBQb3N0TGF5b3V0RGF0YSBmbGFncy4gVGhpcyBh
bHNvIGZpeGVzIHRoZSB2YWx1ZSBvZiBoYXNDb250ZW50LCB3aGljaCB3YXMgcHJldmlvdXNseSBh
bHdheXMgZmFsc2UKKyAgICAgICAgaWYgd2UgaGFkIGEgcmFuZ2Ugc2VsZWN0aW9uIHJhdGhlciB0
aGFuIGEgY2FyZXQgc2VsZWN0aW9uIGV2ZW4gd2hlbiB0aGUgZWRpdGFibGUgcm9vdCBoYXMgY29u
dGVudCwgYmVjYXVzZSB0aGUKKyAgICAgICAgbG9naWMgdG8gY29tcHV0ZSB0aGUgdmFsdWUgb2Yg
aGFzQ29udGVudCBvbmx5IGV4aXN0ZWQgaW4gdGhlIGJyYW5jaCB3aGVyZSB3ZSBoYXZlIGEgY2Fy
ZXQgc2VsZWN0aW9uLgorCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtRWRpdG9y
U3RhdGUgY29uc3QpOgorCiAyMDE3LTA5LTI3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIFdLQ29udGVudFJ1bGVMaXN0IG5vdGlmeSBh
Y3Rpb24gdHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCmluZGV4IDU1
MmRhNjUyYmEzNzJiODY3NjUwN2QxYzI3MzliZWIyZDhiOThhMGUuLmQ1MjgzMDVhMjM4ZmZhMzI3
MjNjOTI0YjBlYTM0ODIxZDBiY2Q5OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVGV4dEl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVy
YXRvci5jcHAKQEAgLTI2MzQsNiArMjYzNCwxNSBAQCBib29sIFRleHRJdGVyYXRvcjo6Z2V0TG9j
YXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UoTm9kZSogc2NvcGUsIGNvbnN0IFJhbmdlKiByYW5nZQog
CiAvLyAtLS0tLS0tLQogCitib29sIGhhc0FueVBsYWluVGV4dChjb25zdCBSYW5nZSYgcmFuZ2Us
IFRleHRJdGVyYXRvckJlaGF2aW9yIGJlaGF2aW9yKQoreworICAgIGZvciAoVGV4dEl0ZXJhdG9y
IGl0ZXJhdG9yIHsgJnJhbmdlLCBiZWhhdmlvciB9OyAhaXRlcmF0b3IuYXRFbmQoKTsgaXRlcmF0
b3IuYWR2YW5jZSgpKSB7CisgICAgICAgIGlmICghaXRlcmF0b3IudGV4dCgpLmlzRW1wdHkoKSkK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
IFN0cmluZyBwbGFpblRleHQoY29uc3QgUmFuZ2UqIHIsIFRleHRJdGVyYXRvckJlaGF2aW9yIGRl
ZmF1bHRCZWhhdmlvciwgYm9vbCBpc0Rpc3BsYXlTdHJpbmcpCiB7CiAgICAgLy8gVGhlIGluaXRp
YWwgYnVmZmVyIHNpemUgY2FuIGJlIGNyaXRpY2FsIGZvciBwZXJmb3JtYW5jZTogaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxMTkyCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9U
ZXh0SXRlcmF0b3IuaAppbmRleCA0MDY0NjEyZDU5ZmUyZDFmMDQ2Y2U1MmFhZDVjYTk1NzViNDVh
Zjg1Li4yM2MwYjVlYzc1YjM3MDYzYWZjMjFjYjgzZGVhZDNiYjVhNzgwYjBkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKQEAgLTQ2LDYgKzQ2LDcgQEAgV0VCQ09SRV9FWFBP
UlQgU3RyaW5nIHBsYWluVGV4dChjb25zdCBSYW5nZSosIFRleHRJdGVyYXRvckJlaGF2aW9yID0g
VGV4dEl0ZXJhdG8KIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBwbGFpblRleHRSZXBsYWNpbmdOb0Jy
ZWFrU3BhY2UoY29uc3QgUmFuZ2UqLCBUZXh0SXRlcmF0b3JCZWhhdmlvciA9IFRleHRJdGVyYXRv
ckRlZmF1bHRCZWhhdmlvciwgYm9vbCBpc0Rpc3BsYXlTdHJpbmcgPSBmYWxzZSk7CiBSZWY8UmFu
Z2U+IGZpbmRQbGFpblRleHQoY29uc3QgUmFuZ2UmLCBjb25zdCBTdHJpbmcmLCBGaW5kT3B0aW9u
cyk7CiBXRUJDT1JFX0VYUE9SVCBSZWY8UmFuZ2U+IGZpbmRDbG9zZXN0UGxhaW5UZXh0KGNvbnN0
IFJhbmdlJiwgY29uc3QgU3RyaW5nJiwgRmluZE9wdGlvbnMsIHVuc2lnbmVkKTsKK1dFQkNPUkVf
RVhQT1JUIGJvb2wgaGFzQW55UGxhaW5UZXh0KGNvbnN0IFJhbmdlJiwgVGV4dEl0ZXJhdG9yQmVo
YXZpb3IgPSBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IpOwogCiAvLyBGSVhNRTogTW92ZSB0
aGlzIHNvbWV3aGVyZSBlbHNlIGluIHRoZSBlZGl0aW5nIGRpcmVjdG9yeS4gSXQgZG9lc24ndCBi
ZWxvbmcgaGVyZS4KIGJvb2wgaXNSZW5kZXJlclJlcGxhY2VkRWxlbWVudChSZW5kZXJPYmplY3Qq
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRvclN0YXRlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRvclN0YXRlLmNwcAppbmRleCA2ZjljZjQ4YmViZjBiYjI5
MWQzNjY1NGI5OGYzZjhkMGE1MTQ2MzkxLi41YWZhYzU5YWJlZGJhYWQwMTczMTQ2ZjdjMjAyMTM3
YTRmYWFlMzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9yU3RhdGUuY3BwCkBAIC0xMjcsNiAr
MTI3LDcgQEAgdm9pZCBFZGl0b3JTdGF0ZTo6UG9zdExheW91dERhdGE6OmVuY29kZShJUEM6OkVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBoYXNDb250ZW50OwogICAgIGVu
Y29kZXIgPDwgaXNTdGFibGVTdGF0ZVVwZGF0ZTsKICAgICBlbmNvZGVyIDw8IGluc2lkZUZpeGVk
UG9zaXRpb247CisgICAgZW5jb2RlciA8PCBoYXNQbGFpblRleHQ7CiAjZW5kaWYKICNpZiBQTEFU
Rk9STShNQUMpCiAgICAgZW5jb2RlciA8PCBjYW5kaWRhdGVSZXF1ZXN0U3RhcnRQb3NpdGlvbjsK
QEAgLTE3Niw2ICsxNzcsOCBAQCBib29sIEVkaXRvclN0YXRlOjpQb3N0TGF5b3V0RGF0YTo6ZGVj
b2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgUG9zdExheW91dERhdGEmCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5pbnNpZGVGaXhlZFBvc2l0
aW9uKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVz
dWx0Lmhhc1BsYWluVGV4dCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgogI2lmIFBM
QVRGT1JNKE1BQykKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jYW5kaWRhdGVSZXF1
ZXN0U3RhcnRQb3NpdGlvbikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0
b3JTdGF0ZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9yU3RhdGUuaAppbmRleCAzMzQ1
ZGM0YzRmYWYxNDliM2VhYzQwOTc3OWFhY2JkNTkyZDBkNzFkLi5iNzA1YTZlOThmODM1ZjNiMGYy
MDVhZDA0ZWQzMWIzMzI4MDEzNjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9F
ZGl0b3JTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRvclN0YXRlLmgKQEAg
LTEwMSw2ICsxMDEsNyBAQCBzdHJ1Y3QgRWRpdG9yU3RhdGUgewogICAgICAgICBib29sIGhhc0Nv
bnRlbnQgeyBmYWxzZSB9OwogICAgICAgICBib29sIGlzU3RhYmxlU3RhdGVVcGRhdGUgeyBmYWxz
ZSB9OwogICAgICAgICBib29sIGluc2lkZUZpeGVkUG9zaXRpb24geyBmYWxzZSB9OworICAgICAg
ICBib29sIGhhc1BsYWluVGV4dCB7IGZhbHNlIH07CiAjZW5kaWYKICNpZiBQTEFURk9STShNQUMp
CiAgICAgICAgIHVpbnQ2NF90IGNhbmRpZGF0ZVJlcXVlc3RTdGFydFBvc2l0aW9uIHsgMCB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW0KaW5kZXggOTI5MTc2NGZiNmJmYjE3YmJjYzkxNTNmNWJjNjM1Y2RjYjVhZjc4
NS4uZmE5YTgxMjhhZGMwYTAxYzA3ZThhOTRlMmJlODhjMmJjMGRiNGUwYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lm1tCkBAIC0zMTgyLDcgKzMxODIsOCBAQCAtICh2b2lkKWluc2VydFRleHQ6KE5TU3RyaW5nICop
YVN0cmluZ1ZhbHVlCiAKIC0gKEJPT0wpaGFzVGV4dAogewotICAgIHJldHVybiBZRVM7CisgICAg
YXV0byYgZWRpdG9yU3RhdGUgPSBfcGFnZS0+ZWRpdG9yU3RhdGUoKTsKKyAgICByZXR1cm4gIWVk
aXRvclN0YXRlLmlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhICYmIGVkaXRvclN0YXRlLnBvc3RMYXlv
dXREYXRhKCkuaGFzUGxhaW5UZXh0OwogfQogCiAvLyBlbmQgb2YgVUlUZXh0SW5wdXQgcHJvdG9j
b2wgaW1wbGVtZW50YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggODhkMjFkZmM3MjRiYmY2YTU1MzYwMzJhYjI2MDY5
OTk4ZjNlZjU3OS4uMGIyMmMyMzQxMDRiNGZhNWIwODU1ZDczOTA5ZjNkMGJmODVhZTI4ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW0KQEAgLTE0NSw2ICsxNDUsMjkgQEAgdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybVByZWZlcmVuY2Vz
RGlkQ2hhbmdlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKQogICAgIG5vdEltcGxlbWVudGVk
KCk7CiB9CiAKK3N0YXRpYyB2b2lkIGNvbXB1dGVFZGl0YWJsZVJvb3RIYXNDb250ZW50QW5kUGxh
aW5UZXh0KGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbiwgRWRpdG9yU3RhdGU6OlBv
c3RMYXlvdXREYXRhJiBkYXRhKQoreworICAgIGRhdGEuaGFzQ29udGVudCA9IGZhbHNlOworICAg
IGRhdGEuaGFzUGxhaW5UZXh0ID0gZmFsc2U7CisgICAgaWYgKCFzZWxlY3Rpb24uaXNDb250ZW50
RWRpdGFibGUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGRhdGEuc2VsZWN0ZWRUZXh0
TGVuZ3RoIHx8IGRhdGEuY2hhcmFjdGVyQWZ0ZXJTZWxlY3Rpb24gfHwgZGF0YS5jaGFyYWN0ZXJC
ZWZvcmVTZWxlY3Rpb24gfHwgZGF0YS50d29DaGFyYWN0ZXJCZWZvcmVTZWxlY3Rpb24pIHsKKyAg
ICAgICAgLy8gSWYgYW55IG9mIHRoZXNlIHZhcmlhYmxlcyBoYXZlIGJlZW4gcHJldmlvdXNseSBz
ZXQsIHRoZSBlZGl0YWJsZSByb290IG11c3QgaGF2ZSBwbGFpbiB0ZXh0IGNvbnRlbnQsIHNvIHdl
IGNhbiBiYWlsIGZyb20gdGhlIHJlbWFpbmRlciBvZiB0aGUgY2hlY2suCisgICAgICAgIGRhdGEu
aGFzQ29udGVudCA9IHRydWU7CisgICAgICAgIGRhdGEuaGFzUGxhaW5UZXh0ID0gdHJ1ZTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8qIHJvb3QgPSBzZWxlY3Rpb24ucm9vdEVk
aXRhYmxlRWxlbWVudCgpOworICAgIGlmICghcm9vdCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
YXV0byBzdGFydEluRWRpdGFibGVSb290ID0gZmlyc3RQb3NpdGlvbkluTm9kZShyb290KTsKKyAg
ICBkYXRhLmhhc0NvbnRlbnQgPSByb290LT5oYXNDaGlsZE5vZGVzKCkgJiYgIWlzRW5kT2ZFZGl0
YWJsZU9yTm9uRWRpdGFibGVDb250ZW50KHN0YXJ0SW5FZGl0YWJsZVJvb3QpOworICAgIGRhdGEu
aGFzUGxhaW5UZXh0ID0gZGF0YS5oYXNDb250ZW50ICYmIGhhc0FueVBsYWluVGV4dChSYW5nZTo6
Y3JlYXRlKHJvb3QtPmRvY3VtZW50KCksIFZpc2libGVQb3NpdGlvbiB7IHN0YXJ0SW5FZGl0YWJs
ZVJvb3QgfSwgVmlzaWJsZVBvc2l0aW9uIHsgbGFzdFBvc2l0aW9uSW5Ob2RlKHJvb3QpIH0pKTsK
K30KKwogdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiBmcmFtZSwgRWRp
dG9yU3RhdGUmIHJlc3VsdCwgSW5jbHVkZVBvc3RMYXlvdXREYXRhSGludCBzaG91bGRJbmNsdWRl
UG9zdExheW91dERhdGEpIGNvbnN0CiB7CiAgICAgaWYgKGZyYW1lLmVkaXRvcigpLmhhc0NvbXBv
c2l0aW9uKCkpIHsKQEAgLTE4NSwxMSArMjA4LDggQEAgdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUVk
aXRvclN0YXRlKEZyYW1lJiBmcmFtZSwgRWRpdG9yU3RhdGUmIHJlc3VsdCwgSW5jbHVkZVBvc3QK
ICAgICAgICAgLy8gRklYTUU6IFRoZSBmb2xsb3dpbmcgY2hlY2sgc2hvdWxkIHRha2UgaW50byBh
Y2NvdW50IHdyaXRpbmcgZGlyZWN0aW9uLgogICAgICAgICBwb3N0TGF5b3V0RGF0YS5pc1JlcGxh
Y2VBbGxvd2VkID0gcmVzdWx0LmlzQ29udGVudEVkaXRhYmxlICYmIGF0Qm91bmRhcnlPZkdyYW51
bGFyaXR5KHNlbGVjdGlvbi5zdGFydCgpLCBXb3JkR3JhbnVsYXJpdHksIERpcmVjdGlvbkZvcndh
cmQpOwogICAgICAgICBwb3N0TGF5b3V0RGF0YS53b3JkQXRTZWxlY3Rpb24gPSBwbGFpblRleHRS
ZXBsYWNpbmdOb0JyZWFrU3BhY2Uod29yZFJhbmdlRnJvbVBvc2l0aW9uKHNlbGVjdGlvbi5zdGFy
dCgpKS5nZXQoKSk7Ci0gICAgICAgIGlmIChzZWxlY3Rpb24uaXNDb250ZW50RWRpdGFibGUoKSkg
eworICAgICAgICBpZiAoc2VsZWN0aW9uLmlzQ29udGVudEVkaXRhYmxlKCkpCiAgICAgICAgICAg
ICBjaGFyYWN0ZXJzQXJvdW5kUG9zaXRpb24oc2VsZWN0aW9uLnN0YXJ0KCksIHBvc3RMYXlvdXRE
YXRhLmNoYXJhY3RlckFmdGVyU2VsZWN0aW9uLCBwb3N0TGF5b3V0RGF0YS5jaGFyYWN0ZXJCZWZv
cmVTZWxlY3Rpb24sIHBvc3RMYXlvdXREYXRhLnR3b0NoYXJhY3RlckJlZm9yZVNlbGVjdGlvbik7
Ci0gICAgICAgICAgICBOb2RlKiByb290ID0gc2VsZWN0aW9uLnJvb3RFZGl0YWJsZUVsZW1lbnQo
KTsKLSAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLmhhc0NvbnRlbnQgPSByb290ICYmIHJvb3Qt
Pmhhc0NoaWxkTm9kZXMoKSAmJiAhaXNFbmRPZkVkaXRhYmxlT3JOb25FZGl0YWJsZUNvbnRlbnQo
Zmlyc3RQb3NpdGlvbkluTm9kZShyb290KSk7Ci0gICAgICAgIH0KICAgICB9IGVsc2UgaWYgKHNl
bGVjdGlvbi5pc1JhbmdlKCkpIHsKICAgICAgICAgcG9zdExheW91dERhdGEuY2FyZXRSZWN0QXRT
dGFydCA9IHZpZXctPmNvbnRlbnRzVG9Sb290VmlldyhWaXNpYmxlUG9zaXRpb24oc2VsZWN0aW9u
LnN0YXJ0KCkpLmFic29sdXRlQ2FyZXRCb3VuZHMoJnN0YXJ0Tm9kZUlzSW5zaWRlRml4ZWRQb3Np
dGlvbikpOwogICAgICAgICBwb3N0TGF5b3V0RGF0YS5jYXJldFJlY3RBdEVuZCA9IHZpZXctPmNv
bnRlbnRzVG9Sb290VmlldyhWaXNpYmxlUG9zaXRpb24oc2VsZWN0aW9uLmVuZCgpKS5hYnNvbHV0
ZUNhcmV0Qm91bmRzKCZlbmROb2RlSXNJbnNpZGVGaXhlZFBvc2l0aW9uKSk7CkBAIC0yMTEsNiAr
MjMxLDcgQEAgdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiBmcmFtZSwg
RWRpdG9yU3RhdGUmIHJlc3VsdCwgSW5jbHVkZVBvc3QKICAgICBpZiAoIXNlbGVjdGlvbi5pc05v
bmUoKSkgewogICAgICAgICBpZiAobV9hc3Npc3RlZE5vZGUgJiYgbV9hc3Npc3RlZE5vZGUtPnJl
bmRlcmVyKCkpCiAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS5zZWxlY3Rpb25DbGlwUmVjdCA9
IHZpZXctPmNvbnRlbnRzVG9Sb290VmlldyhtX2Fzc2lzdGVkTm9kZS0+cmVuZGVyZXIoKS0+YWJz
b2x1dGVCb3VuZGluZ0JveFJlY3QoKSk7CisgICAgICAgIGNvbXB1dGVFZGl0YWJsZVJvb3RIYXND
b250ZW50QW5kUGxhaW5UZXh0KHNlbGVjdGlvbiwgcG9zdExheW91dERhdGEpOwogICAgIH0KIH0K
IApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDIz
YjQ3ZmY3MTgyMWU1NmRmNTg3Y2NhZjhiNTE5ODMyOTE1MjgwZTkuLmRmMGE2OTFmY2Y4ODJjZGVk
ZDIwNzRmODJjMzYwZjg3MzY0MGY0ZWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAxNy0wOS0yOSAgV2Vuc29uIEhz
aWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TIFdLMl0gSW1wbGVt
ZW50IC1bV0tDb250ZW50VmlldyBoYXNUZXh0XSBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBV
SVRleHRJbnB1dCBwcm90b2NvbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTc3NjYyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMzQxMDM3Mz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgRWRpdG9y
U3RhdGUgQVBJIHRlc3RzIHRvIGNoZWNrIHRoYXQgdGhlIHZhbHVlIG9mIC1bV0tDb250ZW50Vmll
dyBoYXNUZXh0XSBpcyBjb3JyZWN0IHdoZW4gZWRpdGluZyBib3RoIHBsYWluCisgICAgICAgIGFu
ZCByaWNoIHRleHQgYXJlYXMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0VkaXRpbmdUZXN0
SGFybmVzcy5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvRWRpdGluZ1Rlc3RIYXJuZXNzLm1t
OgorICAgICAgICAoLVtFZGl0aW5nVGVzdEhhcm5lc3MgaW5zZXJ0UGFyYWdyYXBoXSk6CisgICAg
ICAgICgtW0VkaXRpbmdUZXN0SGFybmVzcyBpbnNlcnRUZXh0Ol0pOgorICAgICAgICAoLVtFZGl0
aW5nVGVzdEhhcm5lc3MgaW5zZXJ0SFRNTDpdKToKKyAgICAgICAgKC1bRWRpdGluZ1Rlc3RIYXJu
ZXNzIHNlbGVjdEFsbF0pOgorICAgICAgICAoLVtFZGl0aW5nVGVzdEhhcm5lc3MgZGVsZXRlQmFj
a3dhcmRzXSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9FZGl0
b3JTdGF0ZVRlc3RzLm1tOgorCisgICAgICAgIEFkZCB2ZXJzaW9ucyBvZiBFZGl0aW5nVGVzdEhh
cm5lc3MgaGVscGVycyB0aGF0IGRvbid0IHJlcXVpcmUgdXMgdG8gZXhwZWN0IGFueSBlZGl0b3Ig
c3RhdGUgYWZ0ZXIgZXhlY3V0aW5nIHRoZQorICAgICAgICBlZGl0IGNvbW1hbmQuCisKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OmNoZWNrQ29udGVudFZpZXdIYXNUZXh0V2l0aEZhaWx1cmVEZXNj
cmlwdGlvbik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L2NvY29hL1Rlc3RXS1dlYlZpZXcubW06CisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXcgdGV4dElu
cHV0Q29udGVudFZpZXddKToKKwogMjAxNy0wOS0yNyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBXS0NvbnRlbnRSdWxlTGlzdCBub3Rp
ZnkgYWN0aW9uIHR5cGUKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvRWRpdGluZ1Rl
c3RIYXJuZXNzLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL0VkaXRpbmdUZXN0SGFybmVzcy5oCmlu
ZGV4IGYwNWI2YjJjZGE4NTA0ZDhlYmQ0MjE3NGYwNWJkNzI3NjkxYmQxNDkuLjMzZTI2YzM2MjQ3
MjE0MDBlOTA0MDBkODI1OWVhNzdlMWY0ODQ1NWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvRWRpdGluZ1Rlc3RIYXJuZXNzLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9FZGl0
aW5nVGVzdEhhcm5lc3MuaApAQCAtNDEsNiArNDEsMTEgQEAKIEBwcm9wZXJ0eSAobm9uYXRvbWlj
LCByZWFkb25seSkgTlNEaWN0aW9uYXJ5ICpsYXRlc3RFZGl0b3JTdGF0ZTsKIEBwcm9wZXJ0eSAo
bm9uYXRvbWljLCByZWFkb25seSkgTlNBcnJheTxOU0RpY3Rpb25hcnkgKj4gKmVkaXRvclN0YXRl
SGlzdG9yeTsKIAorLSAodm9pZClpbnNlcnRQYXJhZ3JhcGg7CistICh2b2lkKWluc2VydFRleHQ6
KE5TU3RyaW5nICopdGV4dDsKKy0gKHZvaWQpaW5zZXJ0SFRNTDooTlNTdHJpbmcgKilodG1sOwor
LSAodm9pZClzZWxlY3RBbGw7CistICh2b2lkKWRlbGV0ZUJhY2t3YXJkczsKIC0gKHZvaWQpaW5z
ZXJ0UGFyYWdyYXBoQW5kRXhwZWN0RWRpdG9yU3RhdGVXaXRoOihOU0RpY3Rpb25hcnk8TlNTdHJp
bmcgKiwgaWQ+ICopZW50cmllczsKIC0gKHZvaWQpaW5zZXJ0VGV4dDooTlNTdHJpbmcgKil0ZXh0
IGFuZEV4cGVjdEVkaXRvclN0YXRlV2l0aDooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAq
KWVudHJpZXM7CiAtICh2b2lkKWluc2VydEhUTUw6KE5TU3RyaW5nICopaHRtbCBhbmRFeHBlY3RF
ZGl0b3JTdGF0ZVdpdGg6KE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKillbnRyaWVzOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9FZGl0aW5nVGVzdEhhcm5lc3MubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL0VkaXRpbmdUZXN0SGFybmVzcy5tbQppbmRleCBhYzZhZGMxNTM5
MWVmZjc3MWE2ZWEwNGZmMmJmYzgxNTU5YTBhODY1Li45MmIxYjllZWFlODViZWFiOWVkODU5Zjcy
YmZkY2UyY2U2MDkzMDRjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0VkaXRpbmdU
ZXN0SGFybmVzcy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0VkaXRpbmdUZXN0SGFybmVz
cy5tbQpAQCAtNjcsNiArNjcsMzEgQEAgLSAoTlNBcnJheTxOU0RpY3Rpb25hcnkgKj4gKillZGl0
b3JTdGF0ZUhpc3RvcnkKICAgICByZXR1cm4gX2VkaXRvclN0YXRlSGlzdG9yeS5nZXQoKTsKIH0K
IAorLSAodm9pZClpbnNlcnRQYXJhZ3JhcGgKK3sKKyAgICBbc2VsZiBpbnNlcnRQYXJhZ3JhcGhB
bmRFeHBlY3RFZGl0b3JTdGF0ZVdpdGg6bmlsXTsKK30KKworLSAodm9pZClpbnNlcnRUZXh0OihO
U1N0cmluZyAqKXRleHQKK3sKKyAgICBbc2VsZiBpbnNlcnRUZXh0OnRleHQgYW5kRXhwZWN0RWRp
dG9yU3RhdGVXaXRoOm5pbF07Cit9CisKKy0gKHZvaWQpaW5zZXJ0SFRNTDooTlNTdHJpbmcgKilo
dG1sCit7CisgICAgW3NlbGYgaW5zZXJ0SFRNTDpodG1sIGFuZEV4cGVjdEVkaXRvclN0YXRlV2l0
aDpuaWxdOworfQorCistICh2b2lkKXNlbGVjdEFsbAoreworICAgIFtzZWxmIHNlbGVjdEFsbEFu
ZEV4cGVjdEVkaXRvclN0YXRlV2l0aDpuaWxdOworfQorCistICh2b2lkKWRlbGV0ZUJhY2t3YXJk
cworeworICAgIFtzZWxmIGRlbGV0ZUJhY2t3YXJkQW5kRXhwZWN0RWRpdG9yU3RhdGVXaXRoOm5p
bF07Cit9CisKIC0gKHZvaWQpaW5zZXJ0VGV4dDooTlNTdHJpbmcgKil0ZXh0IGFuZEV4cGVjdEVk
aXRvclN0YXRlV2l0aDooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKWVudHJpZXMKIHsK
ICAgICBbc2VsZiBfZXhlY0NvbW1hbmQ6QCJJbnNlcnRUZXh0IiBhcmd1bWVudDp0ZXh0IGV4cGVj
dEVudHJpZXM6ZW50cmllc107CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0VkaXRvclN0YXRlVGVzdHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0VkaXRvclN0YXRlVGVzdHMubW0KaW5kZXggZmFhNTUyZWRmYWI4ZGIw
MGNhZmJmNjAyNzhlMDFjNTQ4ZDI3NzZmOC4uOGVmYmI5MGU4MmEyNTY1ODc3NDk3NzAwNzY3YWY0
ZGFhNjY2NzI5MiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9FZGl0b3JTdGF0ZVRlc3RzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvRWRpdG9yU3RhdGVUZXN0cy5tbQpAQCAtMzIsNiArMzIsMTAgQEAKICNpbXBv
cnQgIlRlc3RXS1dlYlZpZXcuaCIKICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+
CiAKKyNpZiBQTEFURk9STShJT1MpCisjaW1wb3J0IDxVSUtpdC9VSUtpdC5oPgorI2VuZGlmCisK
IG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogc3RhdGljIFJldGFpblB0cjxFZGl0aW5nVGVz
dEhhcm5lc3M+IHNldFVwRWRpdG9yU3RhdGVUZXN0SGFybmVzcygpCkBAIC0yMjksNiArMjMzLDcz
IEBAIFRFU1QoRWRpdG9yU3RhdGVUZXN0cywgVHlwaW5nQXR0cmlidXRlTGlua0NvbG9yKQogICAg
IEVYUEVDVF9XS19TVFJFUSgiaHR0cHM6Ly93d3cuYXBwbGUuY29tLyIsIFtbdGVzdEhhcm5lc3Mg
d2ViVmlld10gc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2Vs
ZWN0b3IoJ2EnKS5ocmVmIl0pOwogfQogCisjaWYgUExBVEZPUk0oSU9TKQorCitzdGF0aWMgdm9p
ZCBjaGVja0NvbnRlbnRWaWV3SGFzVGV4dFdpdGhGYWlsdXJlRGVzY3JpcHRpb24oVGVzdFdLV2Vi
VmlldyAqd2ViVmlldywgQk9PTCBleHBlY3RlZFRvSGF2ZVRleHQsIE5TU3RyaW5nICpkZXNjcmlw
dGlvbikKK3sKKyAgICBCT09MIGhhc1RleHQgPSB3ZWJWaWV3LnRleHRJbnB1dENvbnRlbnRWaWV3
Lmhhc1RleHQ7CisgICAgaWYgKGV4cGVjdGVkVG9IYXZlVGV4dCkKKyAgICAgICAgRVhQRUNUX1RS
VUUoaGFzVGV4dCk7CisgICAgZWxzZQorICAgICAgICBFWFBFQ1RfRkFMU0UoaGFzVGV4dCk7CisK
KyAgICBpZiAoZXhwZWN0ZWRUb0hhdmVUZXh0ICE9IGhhc1RleHQpCisgICAgICAgIE5TTG9nKEAi
RXhwZWN0ZWQgLVslQCBoYXNUZXh0XSB0byBiZSAlQCwgYnV0IG9ic2VydmVkOiAlQCAoJUApIiwg
W3dlYlZpZXcudGV4dElucHV0Q29udGVudFZpZXcgY2xhc3NdLCBleHBlY3RlZFRvSGF2ZVRleHQg
PyBAIllFUyIgOiBAIk5PIiwgaGFzVGV4dCA/IEAiWUVTIiA6IEAiTk8iLCBkZXNjcmlwdGlvbik7
Cit9CisKK1RFU1QoRWRpdG9yU3RhdGVUZXN0cywgQ29udGVudFZpZXdIYXNUZXh0SW5Db250ZW50
RWRpdGFibGVFbGVtZW50KQoreworICAgIGF1dG8gdGVzdEhhcm5lc3MgPSBzZXRVcEVkaXRvclN0
YXRlVGVzdEhhcm5lc3MoKTsKKyAgICBUZXN0V0tXZWJWaWV3ICp3ZWJWaWV3ID0gW3Rlc3RIYXJu
ZXNzIHdlYlZpZXddOworCisgICAgY2hlY2tDb250ZW50Vmlld0hhc1RleHRXaXRoRmFpbHVyZURl
c2NyaXB0aW9uKHdlYlZpZXcsIE5PLCBAImJlZm9yZSBpbnNlcnRpbmcgYW55IGNvbnRlbnQiKTsK
KyAgICBbdGVzdEhhcm5lc3MgaW5zZXJ0SFRNTDpAIjxpbWcgc3JjPSdpY29uLnBuZyc+PC9pbWc+
Il07CisgICAgY2hlY2tDb250ZW50Vmlld0hhc1RleHRXaXRoRmFpbHVyZURlc2NyaXB0aW9uKHdl
YlZpZXcsIE5PLCBAImFmdGVyIGluc2VydGluZyBhbiBpbWFnZSBlbGVtZW50Iik7CisgICAgW3Rl
c3RIYXJuZXNzIGluc2VydFRleHQ6QCJBIl07CisgICAgY2hlY2tDb250ZW50Vmlld0hhc1RleHRX
aXRoRmFpbHVyZURlc2NyaXB0aW9uKHdlYlZpZXcsIFlFUywgQCJhZnRlciBpbnNlcnRpbmcgdGV4
dCIpOworICAgIFt0ZXN0SGFybmVzcyBzZWxlY3RBbGxdOworICAgIGNoZWNrQ29udGVudFZpZXdI
YXNUZXh0V2l0aEZhaWx1cmVEZXNjcmlwdGlvbih3ZWJWaWV3LCBZRVMsIEAiYWZ0ZXIgc2VsZWN0
aW5nIGV2ZXJ5dGhpbmciKTsKKyAgICBbdGVzdEhhcm5lc3MgZGVsZXRlQmFja3dhcmRzXTsKKyAg
ICBjaGVja0NvbnRlbnRWaWV3SGFzVGV4dFdpdGhGYWlsdXJlRGVzY3JpcHRpb24od2ViVmlldywg
Tk8sIEAiYWZ0ZXIgZGVsZXRpbmcgZXZlcnl0aGluZyIpOworICAgIFt0ZXN0SGFybmVzcyBpbnNl
cnRQYXJhZ3JhcGhdOworICAgIGNoZWNrQ29udGVudFZpZXdIYXNUZXh0V2l0aEZhaWx1cmVEZXNj
cmlwdGlvbih3ZWJWaWV3LCBZRVMsIEAiYWZ0ZXIgaW5zZXJ0aW5nIGEgbmV3bGluZSIpOworICAg
IFt0ZXN0SGFybmVzcyBkZWxldGVCYWNrd2FyZHNdOworICAgIGNoZWNrQ29udGVudFZpZXdIYXNU
ZXh0V2l0aEZhaWx1cmVEZXNjcmlwdGlvbih3ZWJWaWV3LCBOTywgQCJhZnRlciBkZWxldGluZyB0
aGUgbmV3bGluZSIpOworICAgIFt0ZXN0SGFybmVzcyBpbnNlcnRUZXh0OkAiQiJdOworICAgIGNo
ZWNrQ29udGVudFZpZXdIYXNUZXh0V2l0aEZhaWx1cmVEZXNjcmlwdGlvbih3ZWJWaWV3LCBZRVMs
IEAiYWZ0ZXIgaW5zZXJ0aW5nIHRleHQgYWdhaW4iKTsKKyAgICBbd2ViVmlldyBzdHJpbmdCeUV2
YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYm9keS5ibHVyKCkiXTsKKyAgICBbd2ViVmll
dyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07CisgICAgY2hlY2tDb250ZW50Vmlld0hh
c1RleHRXaXRoRmFpbHVyZURlc2NyaXB0aW9uKHdlYlZpZXcsIE5PLCBAImFmdGVyIGxvc2luZyBm
b2N1cyIpOworfQorCitURVNUKEVkaXRvclN0YXRlVGVzdHMsIENvbnRlbnRWaWV3SGFzVGV4dElu
VGV4dGFyZWEpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA0MDAsIDQwMCldKTsKKyAgICBh
dXRvIHRlc3RIYXJuZXNzID0gYWRvcHROUyhbW0VkaXRpbmdUZXN0SGFybmVzcyBhbGxvY10gaW5p
dFdpdGhXZWJWaWV3OndlYlZpZXcuZ2V0KCldKTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5
TG9hZEhUTUxTdHJpbmc6QCI8dGV4dGFyZWEgaWQ9J3RleHRhcmVhJz48L3RleHRhcmVhPiJdOwor
ICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ0ZXh0YXJlYS5mb2N1
cygpIl07CisgICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOworCisg
ICAgY2hlY2tDb250ZW50Vmlld0hhc1RleHRXaXRoRmFpbHVyZURlc2NyaXB0aW9uKHdlYlZpZXcu
Z2V0KCksIE5PLCBAImJlZm9yZSBpbnNlcnRpbmcgYW55IGNvbnRlbnQiKTsKKyAgICBbdGVzdEhh
cm5lc3MgaW5zZXJ0VGV4dDpAIkEiXTsKKyAgICBjaGVja0NvbnRlbnRWaWV3SGFzVGV4dFdpdGhG
YWlsdXJlRGVzY3JpcHRpb24od2ViVmlldy5nZXQoKSwgWUVTLCBAImFmdGVyIGluc2VydGluZyB0
ZXh0Iik7CisgICAgW3Rlc3RIYXJuZXNzIHNlbGVjdEFsbF07CisgICAgY2hlY2tDb250ZW50Vmll
d0hhc1RleHRXaXRoRmFpbHVyZURlc2NyaXB0aW9uKHdlYlZpZXcuZ2V0KCksIFlFUywgQCJhZnRl
ciBzZWxlY3RpbmcgZXZlcnl0aGluZyIpOworICAgIFt0ZXN0SGFybmVzcyBkZWxldGVCYWNrd2Fy
ZHNdOworICAgIGNoZWNrQ29udGVudFZpZXdIYXNUZXh0V2l0aEZhaWx1cmVEZXNjcmlwdGlvbih3
ZWJWaWV3LmdldCgpLCBOTywgQCJhZnRlciBkZWxldGluZyBldmVyeXRoaW5nIik7CisgICAgW3Rl
c3RIYXJuZXNzIGluc2VydFBhcmFncmFwaF07CisgICAgY2hlY2tDb250ZW50Vmlld0hhc1RleHRX
aXRoRmFpbHVyZURlc2NyaXB0aW9uKHdlYlZpZXcuZ2V0KCksIFlFUywgQCJhZnRlciBpbnNlcnRp
bmcgYSBuZXdsaW5lIik7CisgICAgW3Rlc3RIYXJuZXNzIGRlbGV0ZUJhY2t3YXJkc107CisgICAg
Y2hlY2tDb250ZW50Vmlld0hhc1RleHRXaXRoRmFpbHVyZURlc2NyaXB0aW9uKHdlYlZpZXcuZ2V0
KCksIE5PLCBAImFmdGVyIGRlbGV0aW5nIHRoZSBuZXdsaW5lIik7CisgICAgW3Rlc3RIYXJuZXNz
IGluc2VydFRleHQ6QCJCIl07CisgICAgY2hlY2tDb250ZW50Vmlld0hhc1RleHRXaXRoRmFpbHVy
ZURlc2NyaXB0aW9uKHdlYlZpZXcuZ2V0KCksIFlFUywgQCJhZnRlciBpbnNlcnRpbmcgdGV4dCBh
Z2FpbiIpOworICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ0ZXh0
YXJlYS5ibHVyKCkiXTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0
ZV07CisgICAgY2hlY2tDb250ZW50Vmlld0hhc1RleHRXaXRoRmFpbHVyZURlc2NyaXB0aW9uKHdl
YlZpZXcuZ2V0KCksIE5PLCBAImFmdGVyIGxvc2luZyBmb2N1cyIpOworfQorCisjZW5kaWYKKwog
fSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQogCiAjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmgKaW5kZXggZDZmNjU3OGU2
OWVjNmIxNzg3NDIwOWQ4NWMwNDc5ZjI5M2QxNmQ5My4uZTU1MmQ5NmFiZmE3YTJhNDJjYWJkZjM4
MjU1YzNjYTA1MTU4NzdlOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9U
ZXN0V0tXZWJWaWV3LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJW
aWV3LmgKQEAgLTIzLDExICsyMywxMSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCiAKKyNpZiBXS19BUElfRU5BQkxFRAorCiAjaW1wb3J0IDxXZWJLaXQvV2ViS2l0
Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKLSNpZiBXS19BUElfRU5BQkxFRAotCiBA
Y2xhc3MgX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOwogCiAjaWYgUExBVEZPUk0oSU9TKQpA
QCAtNTMsNiArNTMsNyBAQAogCiAjaWYgUExBVEZPUk0oSU9TKQogQGludGVyZmFjZSBUZXN0V0tX
ZWJWaWV3IChJT1NPbmx5KQorQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBVSVZpZXcg
PFVJVGV4dElucHV0PiAqdGV4dElucHV0Q29udGVudFZpZXc7CiBAcHJvcGVydHkgKG5vbmF0b21p
YywgcmVhZG9ubHkpIFJldGFpblB0cjxOU0FycmF5PiBzZWxlY3Rpb25SZWN0c0FmdGVyUHJlc2Vu
dGF0aW9uVXBkYXRlOwogLSAoX1dLQWN0aXZhdGVkRWxlbWVudEluZm8gKilhY3RpdmF0ZWRFbGVt
ZW50QXRQb3NpdGlvbjooQ0dQb2ludClwb3NpdGlvbjsKIEBlbmQKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQppbmRleCBkYzFhNDVkNDA2M2M5ZTZlNWNkYTk3ZGVm
M2YzNDJlMjA0MWVjZTcwLi5lZjQxN2ZiOTdhZDRhYzk4Y2U0MDc5NDQ4MTkzMTU1OTkwZDA3OTYx
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0K
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCkBAIC00NSw2
ICs0NSw3IEBACiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPUykKKyNpbXBvcnQgPFVJS2l0L1VJ
S2l0Lmg+CiAjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KIFNPRlRfTElOS19GUkFNRVdPUkso
VUlLaXQpCiBTT0ZUX0xJTktfQ0xBU1MoVUlLaXQsIFVJV2luZG93KQpAQCAtMjkyLDYgKzI5Mywx
MSBAQCBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBUZXN0V0tXZWJWaWV3IChJT1NPbmx5KQogCist
IChVSVZpZXcgPFVJVGV4dElucHV0PiAqKXRleHRJbnB1dENvbnRlbnRWaWV3Cit7CisgICAgcmV0
dXJuIChVSVZpZXcgPFVJVGV4dElucHV0PiAqKVtzZWxmIHZhbHVlRm9yS2V5OkAiX2N1cnJlbnRD
b250ZW50VmlldyJdOworfQorCiAtIChSZXRhaW5QdHI8TlNBcnJheT4pc2VsZWN0aW9uUmVjdHNB
ZnRlclByZXNlbnRhdGlvblVwZGF0ZQogewogICAgIFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiBy
ZXRhaW5lZFNlbGYgPSBzZWxmOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>