<?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>139560</bug_id>
          
          <creation_ts>2014-12-11 13:42:03 -0800</creation_ts>
          <short_desc>Move the preview popover to WKImmediateActionController</short_desc>
          <delta_ts>2014-12-11 14:02:07 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>andersca</cc>
    
    <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>conrad_shultz</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1054606</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-12-11 13:42:03 -0800</bug_when>
    <thetext>Move the preview popover to WKImmediateActionController</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1054607</commentid>
    <comment_count>1</comment_count>
      <attachid>243144</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-12-11 13:42:46 -0800</bug_when>
    <thetext>Created attachment 243144
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1054608</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-12-11 13:44:16 -0800</bug_when>
    <thetext>Attachment 243144 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/mac/WKImmediateActionController.mm:358:  The parameter name &quot;url&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1054614</commentid>
    <comment_count>3</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-12-11 14:02:07 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/177180</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>243144</attachid>
            <date>2014-12-11 13:42:46 -0800</date>
            <delta_ts>2014-12-11 13:49:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-139560-20141211134326.patch</filename>
            <type>text/plain</type>
            <size>60016</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc3MTYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmMxMmVlNDQxZTUxMGIx
M2E5MWNhOWYyMTRlZDU5NDMwOTk2YTZlYy4uNGI5YjVkOWExY2JhYTU1ZGE1ZTM1MmFjMTg0Yzkw
ODNlMWVjNWU0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE0LTEyLTExICBUaW1v
dGh5IEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIHRo
ZSBwcmV2aWV3IHBvcG92ZXIgdG8gV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzk1NjAKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzE5MjA4MjkxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vc3BpL21hYy9OU0ltbWVkaWF0ZUFjdGlvbkdl
c3R1cmVSZWNvZ25pemVyU1BJLmg6CisgICAgICAgIEFkZCBzb21lIHJlcXVpc2l0ZSBTUEkuCisK
IDIwMTQtMTItMTEgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZW1vdmUgdW51c2VkIHN0b3JhZ2UgaGVhZGVyIGluY2x1ZGVzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXgg
NTFkM2M5YmRkZWIzNmMwZjE3YjI1NjNkNjk3ZGYwN2EyYjVhMjZmMy4uNWQwNzU5MTc0OWM3Mjgx
OGU1MzIzYjlmYWFhY2FmYTdjNGFiMjA1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisy
MDE0LTEyLTExICBUaW1vdGh5IEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKwor
ICAgICAgICBNb3ZlIHRoZSBwcmV2aWV3IHBvcG92ZXIgdG8gV0tJbW1lZGlhdGVBY3Rpb25Db250
cm9sbGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
Mzk1NjAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE5MjA4MjkxPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLSW1tZWRp
YXRlQWN0aW9uVHlwZXMuaDoKKyAgICAgICAgQWRkIGEgbGluayBwcmV2aWV3IHR5cGUuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW06CisgICAgICAgICgtW1dLVmlldyBp
bml0V2l0aEZyYW1lOmNvbnRleHQ6Y29uZmlndXJhdGlvbjp3ZWJWaWV3Ol0pOgorICAgICAgICBQ
YXNzIHRoZSBnZXN0dXJlIHJlY29nbml6ZXIgdG8gdGhlIFdLSW1tZWRpYXRlQWN0aW9uQ29udHJv
bGxlci4KKworICAgICAgICAoLVtXS1ZpZXcgX3NldFByZXZpZXdUaXRsZTpdKToKKyAgICAgICAg
Rm9yd2FyZCBwcmV2aWV3IHRpdGxlIGNoYW5nZXMgdG8gdGhlIFdLSW1tZWRpYXRlQWN0aW9uQ29u
dHJvbGxlciwKKyAgICAgICAgYmVjYXVzZSB0aGF0J3Mgd2hlcmUgdGhlIHByZXZpZXcgcG9wb3Zl
ciBsaXZlcyBub3cuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dLQWN0aW9uTWVudUNvbnRy
b2xsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dLQWN0aW9uTWVudUNvbnRyb2xsZXIu
bW06CisgICAgICAgIE1vdmUgV0tQYWdlUHJldmlld1ZpZXdDb250cm9sbGVyIGludG8gaXRzIG93
biBmaWxlLgorICAgICAgICBNb3ZlIHBhZ2UgcHJldmlldyBwb3BvdmVyIHJlbGF0ZWQgY29kZSB0
byBXS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFj
L1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMv
V0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tOgorICAgICAgICBDb21wYXJlIHRoZSBnZXN0
dXJlIHJlY29nbml6ZXJzIGRpcmVjdGx5IGluc3RlYWQgb2YgdGhlaXIgdmlld3MsIGZvciBhY2N1
cmFjeS4KKyAgICAgICAgTW92ZSBwYWdlIHByZXZpZXcgcG9wb3ZlciByZWxhdGVkIGNvZGUgaW4g
ZnJvbSBXS0FjdGlvbk1lbnVDb250cm9sbGVyLgorICAgICAgICBTb21lIG9mIHRoaXMgc2hvdWxk
IGV2ZW50dWFsbHkgbW92ZSB0byBXS1BhZ2VQcmV2aWV3Vmlld0NvbnRyb2xsZXIsIGJ1dAorICAg
ICAgICBmb3Igbm93IGZvciBlYXNlIG9mIHRyYW5zaXRpb24gd2Ugd2lsbCBtb3ZlIGl0IGhlcmUu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dLUGFnZVByZXZpZXdWaWV3Q29udHJvbGxlci5o
OiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dLUGFnZVByZXZpZXdWaWV3Q29udHJv
bGxlci5tbTogQWRkZWQuCisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICBNb3ZlIFdLUGFnZVByZXZpZXdWaWV3Q29udHJvbGxlciBpbnRvIGl0cyBv
d24gZmlsZS4KKwogMjAxNC0xMi0wOSAgSmVyZW15IEpvbmVzICA8amVyZW15akBhcHBsZS5jb20+
CiAKICAgICAgICAgUmVzdG9yZSBpbnRlcmZhY2Ugc3RhdGUgd2hlbiBzdG9wcGluZyBvcHRpbWl6
ZWQgZnVsbHNjcmVlbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9t
YWMvTlNJbW1lZGlhdGVBY3Rpb25HZXN0dXJlUmVjb2duaXplclNQSS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vc3BpL21hYy9OU0ltbWVkaWF0ZUFjdGlvbkdlc3R1cmVSZWNvZ25pemVyU1BJ
LmgKaW5kZXggYmQ1YTRmZDg5ZGIwMDlmMWFmMmQ5NTlmMDFmOWJhM2FjZjVmMzRhNi4uOTViYTM5
ZDkzMWVkYzViYmE0NzJkODk3NDM1ZjI2ZmU4YWFjZjAxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc3BpL21hYy9OU0ltbWVkaWF0ZUFjdGlvbkdlc3R1cmVSZWNvZ25pemVy
U1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL21hYy9OU0ltbWVkaWF0ZUFj
dGlvbkdlc3R1cmVSZWNvZ25pemVyU1BJLmgKQEAgLTI3LDEzICsyNywyNiBAQAogCiAjaW1wb3J0
IDxBcHBLaXQvTlNHZXN0dXJlUmVjb2duaXplci5oPgogCi0jaWYgX19oYXNfaW5jbHVkZSg8QXBw
S2l0L05TSW1tZWRpYXRlQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIuaD4pCisjaWYgX19oYXNfaW5j
bHVkZSg8QXBwS2l0L05TSW1tZWRpYXRlQWN0aW9uR2VzdHVyZVJlY29nbml6ZXJfUHJpdmF0ZS5o
PikKIAotI2ltcG9ydCA8QXBwS2l0L05TSW1tZWRpYXRlQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIu
aD4KKyNpbXBvcnQgPEFwcEtpdC9OU0ltbWVkaWF0ZUFjdGlvbkdlc3R1cmVSZWNvZ25pemVyX1By
aXZhdGUuaD4KIAogI2Vsc2UKIAorQHByb3RvY29sIE5TSW1tZWRpYXRlQWN0aW9uQW5pbWF0aW9u
Q29udHJvbGxlciA8TlNPYmplY3Q+CitAb3B0aW9uYWwKKworLSAodm9pZClyZWNvZ25pemVyV2ls
bEJlZ2luQW5pbWF0aW9uOihOU0ltbWVkaWF0ZUFjdGlvbkdlc3R1cmVSZWNvZ25pemVyICopcmVj
b2duaXplcjsKKy0gKHZvaWQpcmVjb2duaXplckRpZFVwZGF0ZUFuaW1hdGlvbjooTlNJbW1lZGlh
dGVBY3Rpb25HZXN0dXJlUmVjb2duaXplciAqKXJlY29nbml6ZXI7CistICh2b2lkKXJlY29nbml6
ZXJEaWRDYW5jZWxBbmltYXRpb246KE5TSW1tZWRpYXRlQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIg
KilyZWNvZ25pemVyOworLSAodm9pZClyZWNvZ25pemVyRGlkQ29tcGxldGVBbmltYXRpb246KE5T
SW1tZWRpYXRlQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIgKilyZWNvZ25pemVyOworLSAodm9pZCly
ZWNvZ25pemVyRGlkRGlzbWlzc0FuaW1hdGlvbjooTlNJbW1lZGlhdGVBY3Rpb25HZXN0dXJlUmVj
b2duaXplciAqKXJlY29nbml6ZXI7CitAZW5kCisKIEBpbnRlcmZhY2UgTlNJbW1lZGlhdGVBY3Rp
b25HZXN0dXJlUmVjb2duaXplciA6IE5TR2VzdHVyZVJlY29nbml6ZXIKKworQHByb3BlcnR5IChz
dHJvbmcpIGlkPE5TSW1tZWRpYXRlQWN0aW9uQW5pbWF0aW9uQ29udHJvbGxlcj4gYW5pbWF0aW9u
Q29udHJvbGxlcjsKKwogQGVuZAogCiAjZW5kaWYgLy8gX19oYXNfaW5jbHVkZSg8QXBwS2l0L05T
SW1tZWRpYXRlQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIuaD4pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tJbW1lZGlhdGVBY3Rpb25UeXBlcy5oIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSS9jL1dLSW1tZWRpYXRlQWN0aW9uVHlwZXMuaAppbmRleCA4N2RmZDkz
ZmZjZmM4MmU1MWZjYWY3ZWIwMDgwMTQzODA2OGM4YjZiLi4xN2U1YTkyMTFkZmQ2YWIzNzBmY2Q3
ZjdmZDE1NTM3ZTg0NDZhMmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJ
L2MvV0tJbW1lZGlhdGVBY3Rpb25UeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
UEkvYy9XS0ltbWVkaWF0ZUFjdGlvblR5cGVzLmgKQEAgLTM0LDYgKzM0LDcgQEAgZXh0ZXJuICJD
IiB7CiAKIGVudW0gewogICAgIGtXS0ltbWVkaWF0ZUFjdGlvbk5vbmUgPSAwLAorICAgIGtXS0lt
bWVkaWF0ZUFjdGlvbkxpbmtQcmV2aWV3LAogfTsKIHR5cGVkZWYgdWludDMyX3QgX1dLSW1tZWRp
YXRlQWN0aW9uVHlwZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9tYWMvV0tWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3
Lm1tCmluZGV4IDg3MzE0ZTUyYzI5ZWRhOGRkZjE3ZmI2ODU5ZTZlYzcyYmViMGRiZjkuLmMxODZh
NDdiMDE4NjE2ZmZjMWU5MDIwYzA0MTZhYWZjMzM3NmJmYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KQEAgLTM2MjYsNyArMzYyNiw3IEBAIHN0YXRpYyBO
U1N0cmluZyAqcGF0aFdpdGhVbmlxdWVGaWxlbmFtZUZvclBhdGgoTlNTdHJpbmcgKnBhdGgpCiAK
ICAgICBpZiAoQ2xhc3MgZ2VzdHVyZUNsYXNzID0gTlNDbGFzc0Zyb21TdHJpbmcoQCJOU0ltbWVk
aWF0ZUFjdGlvbkdlc3R1cmVSZWNvZ25pemVyIikpIHsKICAgICAgICAgUmV0YWluUHRyPE5TSW1t
ZWRpYXRlQWN0aW9uR2VzdHVyZVJlY29nbml6ZXI+IHJlY29nbml6ZXIgPSBhZG9wdE5TKFsoTlNJ
bW1lZGlhdGVBY3Rpb25HZXN0dXJlUmVjb2duaXplciAqKVtnZXN0dXJlQ2xhc3MgYWxsb2NdIGlu
aXRXaXRoVGFyZ2V0Om5pbCBhY3Rpb246TlVMTF0pOwotICAgICAgICBfZGF0YS0+X2ltbWVkaWF0
ZUFjdGlvbkNvbnRyb2xsZXIgPSBhZG9wdE5TKFtbV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVy
IGFsbG9jXSBpbml0V2l0aFBhZ2U6Kl9kYXRhLT5fcGFnZSB2aWV3OnNlbGZdKTsKKyAgICAgICAg
X2RhdGEtPl9pbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyID0gYWRvcHROUyhbW1dLSW1tZWRpYXRl
QWN0aW9uQ29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhQYWdlOipfZGF0YS0+X3BhZ2Ugdmlldzpz
ZWxmIHJlY29nbml6ZXI6cmVjb2duaXplci5nZXQoKV0pOwogICAgICAgICBbcmVjb2duaXplciBz
ZXREZWxlZ2F0ZTpfZGF0YS0+X2ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIuZ2V0KCldOwogICAg
ICAgICBbc2VsZiBhZGRHZXN0dXJlUmVjb2duaXplcjpyZWNvZ25pemVyLmdldCgpXTsKICAgICB9
CkBAIC00MzMwLDcgKzQzMzAsNyBAQCBzdGF0aWMgTlNTdHJpbmcgKnBhdGhXaXRoVW5pcXVlRmls
ZW5hbWVGb3JQYXRoKE5TU3RyaW5nICpwYXRoKQogLSAodm9pZClfc2V0UHJldmlld1RpdGxlOihO
U1N0cmluZyAqKXByZXZpZXdUaXRsZQogewogI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTAxMDAwCi0gICAgW19kYXRhLT5fYWN0aW9uTWVudUNvbnRyb2xsZXIgc2V0UHJl
dmlld1RpdGxlOnByZXZpZXdUaXRsZV07CisgICAgW19kYXRhLT5faW1tZWRpYXRlQWN0aW9uQ29u
dHJvbGxlciBzZXRQcmV2aWV3VGl0bGU6cHJldmlld1RpdGxlXTsKICNlbmRpZgogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLQWN0aW9uTWVudUNvbnRyb2xs
ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tBY3Rpb25NZW51Q29udHJvbGxl
ci5oCmluZGV4IGQ4YmE0ZWM5MmUxNWQ0NmNkM2ZlODcwZDJiNjRmY2ZmZDZiMmU0MTIuLjgyOTlj
YWI4ZjBhZDVjYTQ3Njk4NGI5MmRlYzViZTZlYTNjN2E2YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tBY3Rpb25NZW51Q29udHJvbGxlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tBY3Rpb25NZW51Q29udHJvbGxlci5oCkBAIC00OCwx
MCArNDgsNiBAQCBlbnVtIGNsYXNzIEFjdGlvbk1lbnVTdGF0ZSB7CiBAY2xhc3MgRERBY3Rpb25D
b250ZXh0OwogQGNsYXNzIFdLVmlldzsKIAotI2lmIFdLX0FQSV9FTkFCTEVECi1AY2xhc3MgV0tQ
YWdlUHJldmlld1ZpZXdDb250cm9sbGVyOwotI2VuZGlmCi0KIEBpbnRlcmZhY2UgV0tBY3Rpb25N
ZW51Q29udHJvbGxlciA6IE5TT2JqZWN0IDxOU01lbnVEZWxlZ2F0ZT4gewogQHByaXZhdGUKICAg
ICBXZWJLaXQ6OldlYlBhZ2VQcm94eSAqX3BhZ2U7CkBAIC02MywxOCArNTksOSBAQCBlbnVtIGNs
YXNzIEFjdGlvbk1lbnVTdGF0ZSB7CiAgICAgX1dLQWN0aW9uTWVudVR5cGUgX3R5cGU7CiAgICAg
UmV0YWluUHRyPE5TU2hhcmluZ1NlcnZpY2VQaWNrZXI+IF9zaGFyaW5nU2VydmljZVBpY2tlcjsK
IAotICAgIFJldGFpblB0cjxOU1BvcG92ZXI+IF9wcmV2aWV3UG9wb3ZlcjsKLSAgICBOU1BvaW50
IF9ldmVudExvY2F0aW9uSW5WaWV3OwotICAgIE5TUmVjdCBfcG9wb3Zlck9yaWdpblJlY3Q7Ci0K
ICAgICBCT09MIF9pc1Nob3dpbmdUZXh0SW5kaWNhdG9yOwotICAgIEJPT0wgX3Nob3VsZEtlZXBQ
cmV2aWV3UG9wb3Zlck9wZW47CiAgICAgQk9PTCBfaGFzQWN0aXZhdGVkQWN0aW9uQ29udGV4dDsK
IAotI2lmIFdLX0FQSV9FTkFCTEVECi0gICAgUmV0YWluUHRyPFdLUGFnZVByZXZpZXdWaWV3Q29u
dHJvbGxlcj4gX3ByZXZpZXdWaWV3Q29udHJvbGxlcjsKLSNlbmRpZgotCiAgICAgUmV0YWluUHRy
PEREQWN0aW9uQ29udGV4dD4gX2N1cnJlbnRBY3Rpb25Db250ZXh0OwogfQogCkBAIC04OSw3ICs3
Niw2IEBAIGVudW0gY2xhc3MgQWN0aW9uTWVudVN0YXRlIHsKIC0gKHZvaWQpZGlkUGVyZm9ybUFj
dGlvbk1lbnVIaXRUZXN0Oihjb25zdCBXZWJLaXQ6OkFjdGlvbk1lbnVIaXRUZXN0UmVzdWx0Jilo
aXRUZXN0UmVzdWx0IHVzZXJEYXRhOihBUEk6Ok9iamVjdCopdXNlckRhdGE7CiAKIC0gKHZvaWQp
ZGlzbWlzc0FjdGlvbk1lbnVQb3BvdmVyczsKLS0gKHZvaWQpc2V0UHJldmlld1RpdGxlOihOU1N0
cmluZyAqKXByZXZpZXdUaXRsZTsKIAogQGVuZAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvbWFjL1dLQWN0aW9uTWVudUNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvbWFjL1dLQWN0aW9uTWVudUNvbnRyb2xsZXIubW0KaW5kZXggNWJlNGMwMzBk
NzViMjkxMWYzNzZkNzZjNTVjZmFjYTc2YmQzMDdkNy4uODU1OGU5NDI1NDg0OWE2MGNiMDQyYWMz
YjAyZjM4MzQ0MDc5MWRjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21h
Yy9XS0FjdGlvbk1lbnVDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvV0tBY3Rpb25NZW51Q29udHJvbGxlci5tbQpAQCAtMzAsOCArMzAsNiBAQAogCiAjaW1w
b3J0ICJXS05TVVJMRXh0cmFzLmgiCiAjaW1wb3J0ICJXS1ZpZXdJbnRlcm5hbC5oIgotI2ltcG9y
dCAiV0tXZWJWaWV3LmgiCi0jaW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCAi
V2ViQ29udGV4dC5oIgogI2ltcG9ydCAiV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmgiCiAjaW1wb3J0
ICJXZWJQYWdlTWVzc2FnZXMuaCIKQEAgLTQyLDI4ICs0MCwyMyBAQAogI2ltcG9ydCA8SW1hZ2VJ
Ty9JbWFnZUlPLmg+CiAjaW1wb3J0IDxJbWFnZUtpdC9JbWFnZUtpdC5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9EYXRhRGV0ZWN0b3JzU1BJLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0dlb21ldHJ5VXRpbGl0
aWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KICNpbXBvcnQgPFdl
YkNvcmUvTG9va3VwU1BJLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05TTWVudVNQSS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9OU1NoYXJpbmdTZXJ2aWNlU1BJLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05TU2hh
cmluZ1NlcnZpY2VQaWNrZXJTUEkuaD4KICNpbXBvcnQgPFdlYkNvcmUvTlNWaWV3U1BJLmg+Ci0j
aW1wb3J0IDxXZWJDb3JlL1F1aWNrTG9va01hY1NQSS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Tb2Z0
TGlua2luZy5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0SW5kaWNhdG9yLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1VSTC5oPgogCi1TT0ZUX0xJTktfRlJBTUVXT1JLX0lOX1VNQlJFTExBKFF1YXJ0eiwg
UXVpY2tMb29rVUkpCi1TT0ZUX0xJTktfQ0xBU1MoUXVpY2tMb29rVUksIFFMUHJldmlld01lbnVJ
dGVtKQotCiBTT0ZUX0xJTktfRlJBTUVXT1JLX0lOX1VNQlJFTExBKFF1YXJ0eiwgSW1hZ2VLaXQp
CiBTT0ZUX0xJTktfQ0xBU1MoSW1hZ2VLaXQsIElLU2xpZGVzaG93KQogCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKLUBpbnRlcmZhY2UgV0tBY3Rp
b25NZW51Q29udHJvbGxlciAoKSA8TlNTaGFyaW5nU2VydmljZURlbGVnYXRlLCBOU1NoYXJpbmdT
ZXJ2aWNlUGlja2VyRGVsZWdhdGUsIE5TUG9wb3ZlckRlbGVnYXRlLCBRTFByZXZpZXdNZW51SXRl
bURlbGVnYXRlPgorQGludGVyZmFjZSBXS0FjdGlvbk1lbnVDb250cm9sbGVyICgpIDxOU1NoYXJp
bmdTZXJ2aWNlRGVsZWdhdGUsIE5TU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZT4KIC0gKHZv
aWQpX3VwZGF0ZUFjdGlvbk1lbnVJdGVtczsKIC0gKEJPT0wpX2NhbkFkZE1lZGlhVG9QaG90b3M7
CiAtICh2b2lkKV9zaG93VGV4dEluZGljYXRvcjsKQEAgLTc1LDE1MCArNjgsNiBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OwogLSAoTlNBcnJheSAqKV9hY3Rpb25NZW51SXRlbXNGb3JIaXRUZXN0
UmVzdWx0OihXS0hpdFRlc3RSZXN1bHRSZWYpaGl0VGVzdFJlc3VsdCBkZWZhdWx0QWN0aW9uTWVu
dUl0ZW1zOihOU0FycmF5ICopZGVmYXVsdE1lbnVJdGVtczsKIEBlbmQKIAotI2lmIFdLX0FQSV9F
TkFCTEVECi0KLXN0YXRpYyBjb25zdCBDR0Zsb2F0IHByZXZpZXdWaWV3SW5zZXQgPSAzOwotc3Rh
dGljIGNvbnN0IENHRmxvYXQgcHJldmlld1ZpZXdUaXRsZUhlaWdodCA9IDM0OwotCi1AY2xhc3Mg
V0tQYWdlUHJldmlld1ZpZXdDb250cm9sbGVyOwotCi1AcHJvdG9jb2wgV0tQYWdlUHJldmlld1Zp
ZXdDb250cm9sbGVyRGVsZWdhdGUgPE5TT2JqZWN0PgotLSAoTlNWaWV3ICopcGFnZVByZXZpZXdW
aWV3Q29udHJvbGxlcjooV0tQYWdlUHJldmlld1ZpZXdDb250cm9sbGVyICopcGFnZVByZXZpZXdW
aWV3Q29udHJvbGxlciB2aWV3Rm9yUHJldmlld2luZ1VSTDooTlNVUkwgKil1cmwgaW5pdGlhbEZy
YW1lU2l6ZTooTlNTaXplKWluaXRpYWxGcmFtZVNpemU7Ci0tIChOU1N0cmluZyAqKXBhZ2VQcmV2
aWV3Vmlld0NvbnRyb2xsZXI6KFdLUGFnZVByZXZpZXdWaWV3Q29udHJvbGxlciAqKXBhZ2VQcmV2
aWV3Vmlld0NvbnRyb2xsZXIgdGl0bGVGb3JQcmV2aWV3T2ZVUkw6KE5TVVJMICopdXJsOwotLSAo
dm9pZClwYWdlUHJldmlld1ZpZXdDb250cm9sbGVyV2FzQ2xpY2tlZDooV0tQYWdlUHJldmlld1Zp
ZXdDb250cm9sbGVyICopcGFnZVByZXZpZXdWaWV3Q29udHJvbGxlcjsKLUBlbmQKLQotQGludGVy
ZmFjZSBXS1BhZ2VQcmV2aWV3Vmlld0NvbnRyb2xsZXIgOiBOU1ZpZXdDb250cm9sbGVyIHsKLUBw
dWJsaWMKLSAgICBOU1NpemUgX21haW5WaWV3U2l6ZTsKLSAgICBSZXRhaW5QdHI8TlNVUkw+IF91
cmw7Ci0gICAgUmV0YWluUHRyPE5TVmlldz4gX3ByZXZpZXdWaWV3OwotICAgIFJldGFpblB0cjxO
U1RleHRGaWVsZD4gX3RpdGxlVGV4dEZpZWxkOwotICAgIFJldGFpblB0cjxOU1N0cmluZz4gX3By
ZXZpZXdUaXRsZTsKLSAgICBpZCA8V0tQYWdlUHJldmlld1ZpZXdDb250cm9sbGVyRGVsZWdhdGU+
IF9kZWxlZ2F0ZTsKLSAgICBDR0Zsb2F0IF9wb3BvdmVyVG9WaWV3U2NhbGU7Ci19Ci0KLUBwcm9w
ZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU1N0cmluZyAqcHJldmlld1RpdGxlOwotCi0tIChpbnN0
YW5jZXR5cGUpaW5pdFdpdGhQYWdlVVJMOihOU1VSTCAqKVVSTCBtYWluVmlld1NpemU6KE5TU2l6
ZSlzaXplIHBvcG92ZXJUb1ZpZXdTY2FsZTooQ0dGbG9hdClzY2FsZTsKLQotKyAoTlNTaXplKXBy
ZXZpZXdQYWRkaW5nOwotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBXS1BhZ2VQcmV2aWV3Vmll
d0NvbnRyb2xsZXIKLQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUGFnZVVSTDooTlNVUkwgKilV
UkwgbWFpblZpZXdTaXplOihOU1NpemUpc2l6ZSBwb3BvdmVyVG9WaWV3U2NhbGU6KENHRmxvYXQp
c2NhbGUKLXsKLSAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKLSAgICAgICAgcmV0dXJu
IG5pbDsKLQotICAgIF91cmwgPSBVUkw7Ci0gICAgX21haW5WaWV3U2l6ZSA9IHNpemU7Ci0gICAg
X3BvcG92ZXJUb1ZpZXdTY2FsZSA9IHNjYWxlOwotCi0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0g
KE5TU3RyaW5nICopcHJldmlld1RpdGxlCi17Ci0gICAgcmV0dXJuIF9wcmV2aWV3VGl0bGUuZ2V0
KCk7Ci19Ci0KLS0gKHZvaWQpc2V0UHJldmlld1RpdGxlOihOU1N0cmluZyAqKXByZXZpZXdUaXRs
ZQotewotICAgIGlmIChbX3ByZXZpZXdUaXRsZSBpc0VxdWFsVG9TdHJpbmc6cHJldmlld1RpdGxl
XSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gS2VlcCBhIHNlcGFyYXRlIGNvcHkgYXJvdW5k
IGluIGNhc2UgdGhpcyBpcyByZWNlaXZlZCBiZWZvcmUgdGhlIHZpZXcgaGllcmFyY2h5IGlzIGNy
ZWF0ZWQuCi0gICAgX3ByZXZpZXdUaXRsZSA9IGFkb3B0TlMoW3ByZXZpZXdUaXRsZSBjb3B5XSk7
Ci0gICAgW190aXRsZVRleHRGaWVsZCBzZXRTdHJpbmdWYWx1ZTpwcmV2aWV3VGl0bGUgPyBwcmV2
aWV3VGl0bGUgOiBAIiJdOwotfQotCi0rIChOU1NpemUpcHJldmlld1BhZGRpbmcKLXsKLSAgICBy
ZXR1cm4gTlNNYWtlU2l6ZSgyICogcHJldmlld1ZpZXdJbnNldCwgcHJldmlld1ZpZXdUaXRsZUhl
aWdodCArIDIgKiBwcmV2aWV3Vmlld0luc2V0KTsKLX0KLQotLSAodm9pZClsb2FkVmlldwotewot
ICAgIE5TUmVjdCBkZWZhdWx0RnJhbWUgPSBOU01ha2VSZWN0KDAsIDAsIF9tYWluVmlld1NpemUu
d2lkdGgsIF9tYWluVmlld1NpemUuaGVpZ2h0KTsKLSAgICBfcHJldmlld1ZpZXcgPSBbX2RlbGVn
YXRlIHBhZ2VQcmV2aWV3Vmlld0NvbnRyb2xsZXI6c2VsZiB2aWV3Rm9yUHJldmlld2luZ1VSTDpf
dXJsLmdldCgpIGluaXRpYWxGcmFtZVNpemU6ZGVmYXVsdEZyYW1lLnNpemVdOwotICAgIGlmICgh
X3ByZXZpZXdWaWV3KSB7Ci0gICAgICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBh
ZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOmRlZmF1bHRGcmFtZV0pOwot
ICAgICAgICBbd2ViVmlldyBfc2V0SWdub3Jlc05vbldoZWVsRXZlbnRzOllFU107Ci0gICAgICAg
IGlmIChfdXJsKSB7Ci0gICAgICAgICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxS
ZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOl91cmwuZ2V0KCldOwotICAgICAgICAgICAgW3dlYlZpZXcg
bG9hZFJlcXVlc3Q6cmVxdWVzdF07Ci0gICAgICAgIH0KLSAgICAgICAgX3ByZXZpZXdWaWV3ID0g
d2ViVmlldzsKLSAgICB9Ci0KLSAgICBSZXRhaW5QdHI8TlNDbGlja0dlc3R1cmVSZWNvZ25pemVy
PiBjbGlja1JlY29nbml6ZXIgPSBhZG9wdE5TKFtbTlNDbGlja0dlc3R1cmVSZWNvZ25pemVyIGFs
bG9jXSBpbml0V2l0aFRhcmdldDpzZWxmIGFjdGlvbjpAc2VsZWN0b3IoX2NsaWNrUmVjb2duaXpl
ZDopXSk7Ci0gICAgW19wcmV2aWV3VmlldyBhZGRHZXN0dXJlUmVjb2duaXplcjpjbGlja1JlY29n
bml6ZXIuZ2V0KCldOwotCi0gICAgTlNSZWN0IHByZXZpZXdGcmFtZSA9IFtfcHJldmlld1ZpZXcg
ZnJhbWVdOwotICAgIE5TUmVjdCBjb250YWluZXJGcmFtZSA9IHByZXZpZXdGcmFtZTsKLSAgICBO
U1NpemUgdG90YWxQYWRkaW5nID0gW1tzZWxmIGNsYXNzXSBwcmV2aWV3UGFkZGluZ107Ci0gICAg
Y29udGFpbmVyRnJhbWUuc2l6ZS53aWR0aCArPSB0b3RhbFBhZGRpbmcud2lkdGg7Ci0gICAgY29u
dGFpbmVyRnJhbWUuc2l6ZS5oZWlnaHQgKz0gdG90YWxQYWRkaW5nLmhlaWdodDsKLSAgICBwcmV2
aWV3RnJhbWUgPSBOU09mZnNldFJlY3QocHJldmlld0ZyYW1lLCBwcmV2aWV3Vmlld0luc2V0LCBw
cmV2aWV3Vmlld0luc2V0KTsKLQotICAgIFJldGFpblB0cjxOU1ZpZXc+IGNvbnRhaW5lclZpZXcg
PSBhZG9wdE5TKFtbTlNWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOmNvbnRhaW5lckZyYW1lXSk7
Ci0gICAgW2NvbnRhaW5lclZpZXcgc2V0QXV0b3Jlc2l6aW5nTWFzazpOU1ZpZXdXaWR0aFNpemFi
bGUgfCBOU1ZpZXdIZWlnaHRTaXphYmxlXTsKLSAgICBbY29udGFpbmVyVmlldyBhZGRTdWJ2aWV3
Ol9wcmV2aWV3Vmlldy5nZXQoKV07Ci0gICAgW19wcmV2aWV3VmlldyBzZXRGcmFtZTpwcmV2aWV3
RnJhbWVdOwotICAgIFtfcHJldmlld1ZpZXcgc2V0QXV0b3Jlc2l6aW5nTWFzazpOU1ZpZXdXaWR0
aFNpemFibGUgfCBOU1ZpZXdIZWlnaHRTaXphYmxlXTsKLQotICAgIF90aXRsZVRleHRGaWVsZCA9
IGFkb3B0TlMoW1tOU1RleHRGaWVsZCBhbGxvY10gaW5pdF0pOwotICAgIFtfdGl0bGVUZXh0Rmll
bGQgc2V0V2FudHNMYXllcjpZRVNdOwotICAgIFtfdGl0bGVUZXh0RmllbGQgc2V0QXV0b3Jlc2l6
aW5nTWFzazpOU1ZpZXdXaWR0aFNpemFibGUgfCBOU1ZpZXdNaW5ZTWFyZ2luXTsKLSAgICBbX3Rp
dGxlVGV4dEZpZWxkIHNldEVkaXRhYmxlOk5PXTsKLSAgICBbX3RpdGxlVGV4dEZpZWxkIHNldEJl
emVsZWQ6Tk9dOwotICAgIFtfdGl0bGVUZXh0RmllbGQgc2V0RHJhd3NCYWNrZ3JvdW5kOk5PXTsK
LSAgICBbX3RpdGxlVGV4dEZpZWxkIHNldEFsaWdubWVudDpOU0NlbnRlclRleHRBbGlnbm1lbnRd
OwotICAgIFtfdGl0bGVUZXh0RmllbGQgc2V0VXNlc1NpbmdsZUxpbmVNb2RlOllFU107Ci0gICAg
W190aXRsZVRleHRGaWVsZCBzZXRMaW5lQnJlYWtNb2RlOk5TTGluZUJyZWFrQnlUcnVuY2F0aW5n
VGFpbF07Ci0gICAgW190aXRsZVRleHRGaWVsZCBzZXRUZXh0Q29sb3I6W05TQ29sb3IgbGFiZWxD
b2xvcl1dOwotCi0gICAgTlNTdHJpbmcgKnRpdGxlID0gX3ByZXZpZXdUaXRsZS5nZXQoKTsKLSAg
ICBpZiAoIXRpdGxlKQotICAgICAgICB0aXRsZSA9IFtfZGVsZWdhdGUgcGFnZVByZXZpZXdWaWV3
Q29udHJvbGxlcjpzZWxmIHRpdGxlRm9yUHJldmlld09mVVJMOl91cmwuZ2V0KCldOwotICAgIGlm
ICghdGl0bGUpCi0gICAgICAgIHRpdGxlID0gW191cmwgYWJzb2x1dGVTdHJpbmddOwotCi0gICAg
W190aXRsZVRleHRGaWVsZCBzZXRTdHJpbmdWYWx1ZTp0aXRsZSA/IHRpdGxlIDogQCIiXTsKLQot
ICAgIFtfdGl0bGVUZXh0RmllbGQgc2l6ZVRvRml0XTsKLSAgICBOU1NpemUgdGl0bGVGaXR0aW5n
U2l6ZSA9IFtfdGl0bGVUZXh0RmllbGQgZnJhbWVdLnNpemU7Ci0gICAgQ0dGbG9hdCB0ZXh0Rmll
bGRDZW50ZXJpbmdPZmZzZXQgPSAoTlNNYXhZKGNvbnRhaW5lckZyYW1lKSAtIE5TTWF4WShwcmV2
aWV3RnJhbWUpIC0gdGl0bGVGaXR0aW5nU2l6ZS5oZWlnaHQpIC8gMjsKLQotICAgIE5TUmVjdCB0
aXRsZUZyYW1lID0gcHJldmlld0ZyYW1lOwotICAgIHRpdGxlRnJhbWUuc2l6ZS5oZWlnaHQgPSB0
aXRsZUZpdHRpbmdTaXplLmhlaWdodDsKLSAgICB0aXRsZUZyYW1lLm9yaWdpbi55ID0gTlNNYXhZ
KHByZXZpZXdGcmFtZSkgKyB0ZXh0RmllbGRDZW50ZXJpbmdPZmZzZXQ7Ci0gICAgW190aXRsZVRl
eHRGaWVsZCBzZXRGcmFtZTp0aXRsZUZyYW1lXTsKLSAgICBbY29udGFpbmVyVmlldyBhZGRTdWJ2
aWV3Ol90aXRsZVRleHRGaWVsZC5nZXQoKV07Ci0KLSAgICAvLyBTZXR0aW5nIHRoZSB3ZWJWaWV3
IGJvdW5kcyB3aWxsIHNjYWxlIGl0IHRvIDc1JSBvZiB0aGUgX21haW5WaWV3U2l6ZS4KLSAgICBb
X3ByZXZpZXdWaWV3IHNldEJvdW5kczpOU01ha2VSZWN0KDAsIDAsIF9tYWluVmlld1NpemUud2lk
dGggLyBfcG9wb3ZlclRvVmlld1NjYWxlLCBfbWFpblZpZXdTaXplLmhlaWdodCAvIF9wb3BvdmVy
VG9WaWV3U2NhbGUpXTsKLQotICAgIHNlbGYudmlldyA9IGNvbnRhaW5lclZpZXcuZ2V0KCk7Ci19
Ci0KLS0gKHZvaWQpX2NsaWNrUmVjb2duaXplZDooTlNHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1
cmVSZWNvZ25pemVyCi17Ci0gICAgaWYgKGdlc3R1cmVSZWNvZ25pemVyLnN0YXRlID09IE5TR2Vz
dHVyZVJlY29nbml6ZXJTdGF0ZUJlZ2FuKQotICAgICAgICBbX2RlbGVnYXRlIHBhZ2VQcmV2aWV3
Vmlld0NvbnRyb2xsZXJXYXNDbGlja2VkOnNlbGZdOwotfQotCi1AZW5kCi0KLUBpbnRlcmZhY2Ug
V0tBY3Rpb25NZW51Q29udHJvbGxlciAoKSA8V0tQYWdlUHJldmlld1ZpZXdDb250cm9sbGVyRGVs
ZWdhdGU+Ci1AZW5kCi0KLSNlbmRpZgotCiBAaW1wbGVtZW50YXRpb24gV0tBY3Rpb25NZW51Q29u
dHJvbGxlcgogCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQYWdlOihXZWJQYWdlUHJveHkmKXBh
Z2UgdmlldzooV0tWaWV3ICopd2tWaWV3CkBAIC0yNTUsMTMgKzEwNCwxMCBAQCBzdGF0aWMgY29u
c3QgQ0dGbG9hdCBwcmV2aWV3Vmlld1RpdGxlSGVpZ2h0ID0gMzQ7CiAKICAgICBbc2VsZiBkaXNt
aXNzQWN0aW9uTWVudVBvcG92ZXJzXTsKIAotICAgIF9ldmVudExvY2F0aW9uSW5WaWV3ID0gW193
a1ZpZXcgY29udmVydFBvaW50OmV2ZW50LmxvY2F0aW9uSW5XaW5kb3cgZnJvbVZpZXc6bmlsXTsK
LSAgICBfcGFnZS0+cGVyZm9ybUFjdGlvbk1lbnVIaXRUZXN0QXRMb2NhdGlvbihfZXZlbnRMb2Nh
dGlvbkluVmlldyk7CisgICAgX3BhZ2UtPnBlcmZvcm1BY3Rpb25NZW51SGl0VGVzdEF0TG9jYXRp
b24oW193a1ZpZXcgY29udmVydFBvaW50OmV2ZW50LmxvY2F0aW9uSW5XaW5kb3cgZnJvbVZpZXc6
bmlsXSk7CiAKICAgICBfc3RhdGUgPSBBY3Rpb25NZW51U3RhdGU6OlBlbmRpbmc7CiAgICAgW3Nl
bGYgX3VwZGF0ZUFjdGlvbk1lbnVJdGVtc107Ci0KLSAgICBfc2hvdWxkS2VlcFByZXZpZXdQb3Bv
dmVyT3BlbiA9IE5POwogfQogCiAtIChCT09MKWlzTWVudUZvclRleHRDb250ZW50CkBAIC0yOTAs
MTEgKzEzNiw2IEBAIHN0YXRpYyBjb25zdCBDR0Zsb2F0IHByZXZpZXdWaWV3VGl0bGVIZWlnaHQg
PSAzNDsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotI2lmIFdLX0FQSV9FTkFCTEVECi0gICAg
aWYgKF90eXBlID09IGtXS0FjdGlvbk1lbnVMaW5rKQotICAgICAgICBbc2VsZiBfY3JlYXRlUHJl
dmlld1BvcG92ZXJdOwotI2VuZGlmCi0KICAgICBpZiAoIVtzZWxmIGlzTWVudUZvclRleHRDb250
ZW50XSkgewogICAgICAgICBfcGFnZS0+Y2xlYXJTZWxlY3Rpb24oKTsKICAgICAgICAgcmV0dXJu
OwpAQCAtMzEyLDEwICsxNTMsNiBAQCBzdGF0aWMgY29uc3QgQ0dGbG9hdCBwcmV2aWV3Vmlld1Rp
dGxlSGVpZ2h0ID0gMzQ7CiAgICAgaWYgKG1lbnUgIT0gX3drVmlldy5hY3Rpb25NZW51KQogICAg
ICAgICByZXR1cm47CiAKLSAgICBbX3ByZXZpZXdQb3BvdmVyIHNldEJlaGF2aW9yOk5TUG9wb3Zl
ckJlaGF2aW9yVHJhbnNpZW50XTsKLSAgICBpZiAoIV9zaG91bGRLZWVwUHJldmlld1BvcG92ZXJP
cGVuKQotICAgICAgICBbc2VsZiBfY2xlYXJQcmV2aWV3UG9wb3Zlcl07Ci0KICAgICBbc2VsZiBf
Y2xlYXJBY3Rpb25NZW51U3RhdGVdOwogfQogCkBAIC0zNTEsMTQgKzE4OCw2IEBAIHN0YXRpYyBj
b25zdCBDR0Zsb2F0IHByZXZpZXdWaWV3VGl0bGVIZWlnaHQgPSAzNDsKICAgICAgICAgW2FjdGlv
bnNNYW5hZ2VyIHJlcXVlc3RCdWJibGVDbG9zdXJlVW5hbmNob3JPbkZhaWx1cmU6WUVTXTsKIAog
ICAgIFtzZWxmIF9oaWRlVGV4dEluZGljYXRvcl07Ci0gICAgW3NlbGYgX2NsZWFyUHJldmlld1Bv
cG92ZXJdOwotfQotCi0tICh2b2lkKXNldFByZXZpZXdUaXRsZTooTlNTdHJpbmcgKilwcmV2aWV3
VGl0bGUKLXsKLSNpZiBXS19BUElfRU5BQkxFRAotICAgIFtfcHJldmlld1ZpZXdDb250cm9sbGVy
IHNldFByZXZpZXdUaXRsZTpwcmV2aWV3VGl0bGVdOwotI2VuZGlmCiB9CiAKICNwcmFnbWEgbWFy
ayBUZXh0IEluZGljYXRvcgpAQCAtMzg4LDI1ICsyMTcsOSBAQCBzdGF0aWMgY29uc3QgQ0dGbG9h
dCBwcmV2aWV3Vmlld1RpdGxlSGVpZ2h0ID0gMzQ7CiAtIChOU0FycmF5ICopX2RlZmF1bHRNZW51
SXRlbXNGb3JMaW5rCiB7CiAgICAgUmV0YWluUHRyPE5TTWVudUl0ZW0+IG9wZW5MaW5rSXRlbSA9
IFtzZWxmIF9jcmVhdGVBY3Rpb25NZW51SXRlbUZvclRhZzprV0tDb250ZXh0QWN0aW9uSXRlbVRh
Z09wZW5MaW5rSW5EZWZhdWx0QnJvd3Nlcl07Ci0KLSAgICBCT09MIHNob3VsZFVzZVN0YW5kYXJk
UXVpY2tMb29rUHJldmlldyA9IFtfd2tWaWV3IF9zaG91bGRVc2VTdGFuZGFyZFF1aWNrTG9va1By
ZXZpZXddICYmIFtOU01lbnVJdGVtIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc3RhbmRh
cmRRdWlja0xvb2tNZW51SXRlbSldOwotICAgIFJldGFpblB0cjxOU01lbnVJdGVtPiBwcmV2aWV3
TGlua0l0ZW07Ci0gICAgUmV0YWluUHRyPFFMUHJldmlld01lbnVJdGVtPiBxbFByZXZpZXdMaW5r
SXRlbTsKLSAgICBpZiAoc2hvdWxkVXNlU3RhbmRhcmRRdWlja0xvb2tQcmV2aWV3KSB7Ci0gICAg
ICAgIHFsUHJldmlld0xpbmtJdGVtID0gW05TTWVudUl0ZW0gc3RhbmRhcmRRdWlja0xvb2tNZW51
SXRlbV07Ci0gICAgICAgIFtxbFByZXZpZXdMaW5rSXRlbSBzZXRQcmV2aWV3U3R5bGU6UUxQcmV2
aWV3U3R5bGVQb3BvdmVyXTsKLSAgICAgICAgW3FsUHJldmlld0xpbmtJdGVtIHNldERlbGVnYXRl
OnNlbGZdOwotICAgIH0gZWxzZSB7Ci0jaWYgV0tfQVBJX0VOQUJMRUQKLSAgICAgICAgcHJldmll
d0xpbmtJdGVtID0gW3NlbGYgX2NyZWF0ZUFjdGlvbk1lbnVJdGVtRm9yVGFnOmtXS0NvbnRleHRB
Y3Rpb25JdGVtVGFnUHJldmlld0xpbmtdOwotI2Vsc2UKLSAgICAgICAgcHJldmlld0xpbmtJdGVt
ID0gW05TTWVudUl0ZW0gc2VwYXJhdG9ySXRlbV07Ci0jZW5kaWYKLSAgICB9Ci0KICAgICBSZXRh
aW5QdHI8TlNNZW51SXRlbT4gcmVhZGluZ0xpc3RJdGVtID0gW3NlbGYgX2NyZWF0ZUFjdGlvbk1l
bnVJdGVtRm9yVGFnOmtXS0NvbnRleHRBY3Rpb25JdGVtVGFnQWRkTGlua1RvU2FmYXJpUmVhZGlu
Z0xpc3RdOwogCi0gICAgcmV0dXJuIEBbIG9wZW5MaW5rSXRlbS5nZXQoKSwgc2hvdWxkVXNlU3Rh
bmRhcmRRdWlja0xvb2tQcmV2aWV3ID8gcWxQcmV2aWV3TGlua0l0ZW0uZ2V0KCkgOiBwcmV2aWV3
TGlua0l0ZW0uZ2V0KCksIFtOU01lbnVJdGVtIHNlcGFyYXRvckl0ZW1dLCByZWFkaW5nTGlzdEl0
ZW0uZ2V0KCkgXTsKKyAgICByZXR1cm4gQFsgb3BlbkxpbmtJdGVtLmdldCgpLCBbTlNNZW51SXRl
bSBzZXBhcmF0b3JJdGVtXSwgW05TTWVudUl0ZW0gc2VwYXJhdG9ySXRlbV0sIHJlYWRpbmdMaXN0
SXRlbS5nZXQoKSBdOwogfQogCiAtICh2b2lkKV9vcGVuVVJMRnJvbUFjdGlvbk1lbnU6KGlkKXNl
bmRlcgpAQCAtNDIyLDE1NiArMjM1LDYgQEAgc3RhdGljIGNvbnN0IENHRmxvYXQgcHJldmlld1Zp
ZXdUaXRsZUhlaWdodCA9IDM0OwogICAgIFtzZXJ2aWNlIHBlcmZvcm1XaXRoSXRlbXM6QFsgW05T
VVJMIF93ZWJfVVJMV2l0aFdURlN0cmluZzpoaXRUZXN0UmVzdWx0LT5hYnNvbHV0ZUxpbmtVUkwo
KV0gXV07CiB9CiAKLSNpZiBXS19BUElfRU5BQkxFRAotLSAodm9pZClfa2VlcFByZXZpZXdPcGVu
RnJvbUFjdGlvbk1lbnU6KGlkKXNlbmRlcgotewotICAgIF9zaG91bGRLZWVwUHJldmlld1BvcG92
ZXJPcGVuID0gWUVTOwotfQotCi0tICh2b2lkKV9wcmV2aWV3VVJMRnJvbUFjdGlvbk1lbnU6KGlk
KXNlbmRlcgotewotICAgIEFTU0VSVChfcHJldmlld1BvcG92ZXIpOwotCi0gICAgLy8gV2UgbWln
aHQgYWxyZWFkeSBoYXZlIGEgcHJldmlldyBzaG93aW5nIGlmIHRoZSBtZW51IGl0ZW0gd2FzIGhp
Z2hsaWdodGVkIGVhcmxpZXIuCi0gICAgaWYgKFtfcHJldmlld1BvcG92ZXIgaXNTaG93bl0pCi0g
ICAgICAgIHJldHVybjsKLQotICAgIFJlZlB0cjxXZWJIaXRUZXN0UmVzdWx0PiBoaXRUZXN0UmVz
dWx0ID0gW3NlbGYgX3dlYkhpdFRlc3RSZXN1bHRdOwotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3Bh
dGNoX2dldF9tYWluX3F1ZXVlKCksIF57Ci0gICAgICAgIFtfcHJldmlld1BvcG92ZXIgc2hvd1Jl
bGF0aXZlVG9SZWN0Ol9wb3BvdmVyT3JpZ2luUmVjdCBvZlZpZXc6X3drVmlldyBwcmVmZXJyZWRF
ZGdlOk5TTWF4WUVkZ2VdOwotICAgIH0pOwotfQotCi0tICh2b2lkKV9jcmVhdGVQcmV2aWV3UG9w
b3ZlcgotewotICAgIFJlZlB0cjxXZWJIaXRUZXN0UmVzdWx0PiBoaXRUZXN0UmVzdWx0ID0gW3Nl
bGYgX3dlYkhpdFRlc3RSZXN1bHRdOwotICAgIE5TVVJMICp1cmwgPSBbTlNVUkwgX3dlYl9VUkxX
aXRoV1RGU3RyaW5nOmhpdFRlc3RSZXN1bHQtPmFic29sdXRlTGlua1VSTCgpXTsKLSAgICBfcG9w
b3Zlck9yaWdpblJlY3QgPSBoaXRUZXN0UmVzdWx0LT5lbGVtZW50Qm91bmRpbmdCb3goKTsKLQot
ICAgIE5TU2l6ZSBwcmV2aWV3UGFkZGluZyA9IFtXS1BhZ2VQcmV2aWV3Vmlld0NvbnRyb2xsZXIg
cHJldmlld1BhZGRpbmddOwotICAgIE5TU2l6ZSBwb3BvdmVyU2l6ZSA9IFtzZWxmIF9wcmVmZXJy
ZWRQb3BvdmVyU2l6ZVdpdGhQcmV2aWV3UGFkZGluZzpwcmV2aWV3UGFkZGluZ107Ci0gICAgQ0dG
bG9hdCBhY3R1YWxQb3BvdmVyVG9WaWV3U2NhbGUgPSBwb3BvdmVyU2l6ZS53aWR0aCAvIE5TV2lk
dGgoX3drVmlldy5ib3VuZHMpOwotICAgIHBvcG92ZXJTaXplLndpZHRoICs9IHByZXZpZXdQYWRk
aW5nLndpZHRoOwotICAgIHBvcG92ZXJTaXplLmhlaWdodCArPSBwcmV2aWV3UGFkZGluZy5oZWln
aHQ7Ci0KLSAgICBfcHJldmlld1ZpZXdDb250cm9sbGVyID0gYWRvcHROUyhbW1dLUGFnZVByZXZp
ZXdWaWV3Q29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhQYWdlVVJMOnVybCBtYWluVmlld1NpemU6
X3drVmlldy5ib3VuZHMuc2l6ZSBwb3BvdmVyVG9WaWV3U2NhbGU6YWN0dWFsUG9wb3ZlclRvVmll
d1NjYWxlXSk7Ci0gICAgX3ByZXZpZXdWaWV3Q29udHJvbGxlci0+X2RlbGVnYXRlID0gc2VsZjsK
LSAgICBbX3ByZXZpZXdWaWV3Q29udHJvbGxlciBsb2FkVmlld107Ci0KLSAgICBfcHJldmlld1Bv
cG92ZXIgPSBhZG9wdE5TKFtbTlNQb3BvdmVyIGFsbG9jXSBpbml0XSk7Ci0gICAgW19wcmV2aWV3
UG9wb3ZlciBzZXRCZWhhdmlvcjpOU1BvcG92ZXJCZWhhdmlvckFwcGxpY2F0aW9uRGVmaW5lZF07
Ci0gICAgW19wcmV2aWV3UG9wb3ZlciBzZXRDb250ZW50U2l6ZTpwb3BvdmVyU2l6ZV07Ci0gICAg
W19wcmV2aWV3UG9wb3ZlciBzZXRDb250ZW50Vmlld0NvbnRyb2xsZXI6X3ByZXZpZXdWaWV3Q29u
dHJvbGxlci5nZXQoKV07Ci0gICAgW19wcmV2aWV3UG9wb3ZlciBzZXREZWxlZ2F0ZTpzZWxmXTsK
LX0KLQotc3RhdGljIGJvb2wgdGFyZ2V0U2l6ZUZpdHNJbkF2YWlsYWJsZVNwYWNlKE5TU2l6ZSB0
YXJnZXRTaXplLCBOU1NpemUgYXZhaWxhYmxlU3BhY2UpCi17Ci0gICAgcmV0dXJuIHRhcmdldFNp
emUud2lkdGggPD0gYXZhaWxhYmxlU3BhY2Uud2lkdGggJiYgdGFyZ2V0U2l6ZS5oZWlnaHQgPD0g
YXZhaWxhYmxlU3BhY2UuaGVpZ2h0OwotfQotCi0tIChOU1NpemUpbGFyZ2VzdFBvcG92ZXJTaXpl
Ci17Ci0gICAgTlNTaXplIHNjcmVlblNpemUgPSBfd2tWaWV3LndpbmRvdy5zY3JlZW4uZnJhbWUu
c2l6ZTsKLQotICAgIGlmIChzY3JlZW5TaXplLndpZHRoID09IDEyODAgJiYgc2NyZWVuU2l6ZS5o
ZWlnaHQgPT0gODAwKQotICAgICAgICByZXR1cm4gTlNNYWtlU2l6ZSgxMjQwLCA2NzQpOwotCi0g
ICAgaWYgKHNjcmVlblNpemUud2lkdGggPT0gMTM2NiAmJiBzY3JlZW5TaXplLmhlaWdodCA9PSA3
NjgpCi0gICAgICAgIHJldHVybiBOU01ha2VTaXplKDEyNjQsIDY0Mik7Ci0KLSAgICBpZiAoc2Ny
ZWVuU2l6ZS53aWR0aCA9PSAxNDQwICYmIHNjcmVlblNpemUuaGVpZ2h0ID09IDkwMCkKLSAgICAg
ICAgcmV0dXJuIE5TTWFrZVNpemUoMTI2NCwgNzYwKTsKLQotICAgIGlmIChzY3JlZW5TaXplLndp
ZHRoID09IDE2ODAgJiYgc2NyZWVuU2l6ZS5oZWlnaHQgPT0gMTA1MCkKLSAgICAgICAgcmV0dXJu
IE5TTWFrZVNpemUoMTMyNCwgOTEwKTsKLQotICAgIHJldHVybiBOU01ha2VTaXplKDEzMjQsIDk0
MCk7Ci19Ci0KLS0gKE5TU2l6ZSlfcHJlZmVycmVkUG9wb3ZlclNpemVXaXRoUHJldmlld1BhZGRp
bmc6KE5TU2l6ZSlwcmV2aWV3UGFkZGluZwotewotICAgIHN0YXRpYyBjb25zdCBDR0Zsb2F0IHBy
ZWZlcnJlZFBvcG92ZXJUb1ZpZXdTY2FsZSA9IDAuNzU7Ci0gICAgc3RhdGljIGNvbnN0IE5TU2l6
ZSBzY3JlZW5QYWRkaW5nID0gezQwLCA0MH07Ci0gICAgc3RhdGljIGNvbnN0IE5TU2l6ZSBzbWFs
bGVzdFBvcG92ZXJTaXplID0gTlNNYWtlU2l6ZSg1MDAsIDMwMCk7Ci0KLSAgICBjb25zdCBOU1Np
emUgZWZmZWN0aXZlUGFkZGluZyA9IE5TTWFrZVNpemUoc2NyZWVuUGFkZGluZy53aWR0aCArIHBy
ZXZpZXdQYWRkaW5nLndpZHRoLCBzY3JlZW5QYWRkaW5nLmhlaWdodCArIHByZXZpZXdQYWRkaW5n
LmhlaWdodCk7Ci0KLSAgICBOU1dpbmRvdyAqd2luZG93ID0gX3drVmlldy53aW5kb3c7Ci0gICAg
TlNSZWN0IG9yaWdpblNjcmVlblJlY3QgPSBbd2luZG93IGNvbnZlcnRSZWN0VG9TY3JlZW46W193
a1ZpZXcgY29udmVydFJlY3Q6X3BvcG92ZXJPcmlnaW5SZWN0IHRvVmlldzpuaWxdXTsKLSAgICBO
U1JlY3Qgc2NyZWVuRnJhbWUgPSB3aW5kb3cuc2NyZWVuLnZpc2libGVGcmFtZTsKLQotICAgIE5T
UmVjdCB3a1ZpZXdCb3VuZHMgPSBfd2tWaWV3LmJvdW5kczsKLSAgICBOU1NpemUgdGFyZ2V0U2l6
ZSA9IE5TTWFrZVNpemUoTlNXaWR0aCh3a1ZpZXdCb3VuZHMpICogcHJlZmVycmVkUG9wb3ZlclRv
Vmlld1NjYWxlLCBOU0hlaWdodCh3a1ZpZXdCb3VuZHMpICogcHJlZmVycmVkUG9wb3ZlclRvVmll
d1NjYWxlKTsKLSAgICBOU1NpemUgbGFyZ2VzdFBvcG92ZXJTaXplID0gW3NlbGYgbGFyZ2VzdFBv
cG92ZXJTaXplXTsKLQotICAgIENHRmxvYXQgYXZhaWxhYmxlU3BhY2VBYm92ZSA9IE5TTWF4WShz
Y3JlZW5GcmFtZSkgLSBOU01heFkob3JpZ2luU2NyZWVuUmVjdCk7Ci0gICAgQ0dGbG9hdCBhdmFp
bGFibGVTcGFjZUJlbG93ID0gTlNNaW5ZKG9yaWdpblNjcmVlblJlY3QpIC0gTlNNaW5ZKHNjcmVl
bkZyYW1lKTsKLSAgICBDR0Zsb2F0IG1heEF2YWlsYWJsZVZlcnRpY2FsU3BhY2UgPSBmbWF4KGF2
YWlsYWJsZVNwYWNlQWJvdmUsIGF2YWlsYWJsZVNwYWNlQmVsb3cpIC0gZWZmZWN0aXZlUGFkZGlu
Zy5oZWlnaHQ7Ci0gICAgTlNTaXplIG1heFNwYWNlQXZhaWxhYmxlT25ZRWRnZSA9IE5TTWFrZVNp
emUoc2NyZWVuRnJhbWUuc2l6ZS53aWR0aCAtIGVmZmVjdGl2ZVBhZGRpbmcuaGVpZ2h0LCBtYXhB
dmFpbGFibGVWZXJ0aWNhbFNwYWNlKTsKLSAgICBpZiAodGFyZ2V0U2l6ZUZpdHNJbkF2YWlsYWJs
ZVNwYWNlKHRhcmdldFNpemUsIG1heFNwYWNlQXZhaWxhYmxlT25ZRWRnZSkgJiYgdGFyZ2V0U2l6
ZUZpdHNJbkF2YWlsYWJsZVNwYWNlKHRhcmdldFNpemUsIGxhcmdlc3RQb3BvdmVyU2l6ZSkpCi0g
ICAgICAgIHJldHVybiB0YXJnZXRTaXplOwotCi0gICAgQ0dGbG9hdCBhdmFpbGFibGVTcGFjZUF0
TGVmdCA9IE5TTWluWChvcmlnaW5TY3JlZW5SZWN0KSAtIE5TTWluWChzY3JlZW5GcmFtZSk7Ci0g
ICAgQ0dGbG9hdCBhdmFpbGFibGVTcGFjZUF0UmlnaHQgPSBOU01heFgoc2NyZWVuRnJhbWUpIC0g
TlNNYXhYKG9yaWdpblNjcmVlblJlY3QpOwotICAgIENHRmxvYXQgbWF4QXZhaWxhYmxlSG9yaXpv
bnRhbFNwYWNlID0gZm1heChhdmFpbGFibGVTcGFjZUF0TGVmdCwgYXZhaWxhYmxlU3BhY2VBdFJp
Z2h0KSAtIGVmZmVjdGl2ZVBhZGRpbmcud2lkdGg7Ci0gICAgTlNTaXplIG1heFNwYWNlQXZhaWxh
YmxlT25YRWRnZSA9IE5TTWFrZVNpemUobWF4QXZhaWxhYmxlSG9yaXpvbnRhbFNwYWNlLCBzY3Jl
ZW5GcmFtZS5zaXplLmhlaWdodCAtIGVmZmVjdGl2ZVBhZGRpbmcud2lkdGgpOwotICAgIGlmICh0
YXJnZXRTaXplRml0c0luQXZhaWxhYmxlU3BhY2UodGFyZ2V0U2l6ZSwgbWF4U3BhY2VBdmFpbGFi
bGVPblhFZGdlKSAmJiB0YXJnZXRTaXplRml0c0luQXZhaWxhYmxlU3BhY2UodGFyZ2V0U2l6ZSwg
bGFyZ2VzdFBvcG92ZXJTaXplKSkKLSAgICAgICAgcmV0dXJuIHRhcmdldFNpemU7Ci0KLSAgICAv
LyBBZGp1c3QgdGhlIG1heGltdW0gc3BhY2UgYXZhaWxhYmxlIGlmIGl0IGlzIGxhcmdlciB0aGFu
IHRoZSBsYXJnZXN0IHBvcG92ZXIgc2l6ZS4KLSAgICBpZiAobWF4U3BhY2VBdmFpbGFibGVPbllF
ZGdlLndpZHRoID4gbGFyZ2VzdFBvcG92ZXJTaXplLndpZHRoICYmIG1heFNwYWNlQXZhaWxhYmxl
T25ZRWRnZS5oZWlnaHQgPiBsYXJnZXN0UG9wb3ZlclNpemUuaGVpZ2h0KQotICAgICAgICBtYXhT
cGFjZUF2YWlsYWJsZU9uWUVkZ2UgPSBsYXJnZXN0UG9wb3ZlclNpemU7Ci0gICAgaWYgKG1heFNw
YWNlQXZhaWxhYmxlT25YRWRnZS53aWR0aCA+IGxhcmdlc3RQb3BvdmVyU2l6ZS53aWR0aCAmJiBt
YXhTcGFjZUF2YWlsYWJsZU9uWEVkZ2UuaGVpZ2h0ID4gbGFyZ2VzdFBvcG92ZXJTaXplLmhlaWdo
dCkKLSAgICAgICAgbWF4U3BhY2VBdmFpbGFibGVPblhFZGdlID0gbGFyZ2VzdFBvcG92ZXJTaXpl
OwotCi0gICAgLy8gSWYgdGhlIHRhcmdldCBzaXplIGRvZXNuJ3QgZml0IGFueXdoZXJlLCB3ZSds
bCBmaW5kIHRoZSBsYXJnZXN0IHJlY3QgdGhhdCBkb2VzIGZpdCB0aGF0IGFsc28gbWFpbnRhaW5z
IHRoZSBvcmlnaW5hbCB2aWV3J3MgYXNwZWN0IHJhdGlvLgotICAgIENHRmxvYXQgYXNwZWN0UmF0
aW8gPSB3a1ZpZXdCb3VuZHMuc2l6ZS53aWR0aCAvIHdrVmlld0JvdW5kcy5zaXplLmhlaWdodDsK
LSAgICBGbG9hdFJlY3QgbWF4VmVydGljYWxUYXJnZXRTaXplUHJlc2VydmluZ0FzcGVjdFJhdGlv
UmVjdCA9IGxhcmdlc3RSZWN0V2l0aEFzcGVjdFJhdGlvSW5zaWRlUmVjdChhc3BlY3RSYXRpbywg
RmxvYXRSZWN0KDAsIDAsIG1heFNwYWNlQXZhaWxhYmxlT25ZRWRnZS53aWR0aCwgbWF4U3BhY2VB
dmFpbGFibGVPbllFZGdlLmhlaWdodCkpOwotICAgIEZsb2F0UmVjdCBtYXhIb3Jpem9udGFsVGFy
Z2V0U2l6ZVByZXNlcnZpbmdBc3BlY3RSYXRpb1JlY3QgPSBsYXJnZXN0UmVjdFdpdGhBc3BlY3RS
YXRpb0luc2lkZVJlY3QoYXNwZWN0UmF0aW8sIEZsb2F0UmVjdCgwLCAwLCBtYXhTcGFjZUF2YWls
YWJsZU9uWEVkZ2Uud2lkdGgsIG1heFNwYWNlQXZhaWxhYmxlT25YRWRnZS5oZWlnaHQpKTsKLQot
ICAgIE5TU2l6ZSBtYXhWZXJ0aWNhbFRhcmdldFNpemVQcmVzZXJ2aW5nQXNwZWN0UmF0aW8gPSBO
U01ha2VTaXplKG1heFZlcnRpY2FsVGFyZ2V0U2l6ZVByZXNlcnZpbmdBc3BlY3RSYXRpb1JlY3Qu
d2lkdGgoKSwgbWF4VmVydGljYWxUYXJnZXRTaXplUHJlc2VydmluZ0FzcGVjdFJhdGlvUmVjdC5o
ZWlnaHQoKSk7Ci0gICAgTlNTaXplIG1heEhvcnRpem9udGFsVGFyZ2V0U2l6ZVByZXNlcnZpbmdB
c3BlY3RSYXRpbyA9IE5TTWFrZVNpemUobWF4SG9yaXpvbnRhbFRhcmdldFNpemVQcmVzZXJ2aW5n
QXNwZWN0UmF0aW9SZWN0LndpZHRoKCksIG1heEhvcml6b250YWxUYXJnZXRTaXplUHJlc2Vydmlu
Z0FzcGVjdFJhdGlvUmVjdC5oZWlnaHQoKSk7Ci0KLSAgICBOU1NpemUgY29tcHV0ZWRUYXJnZXRT
aXplOwotICAgIGlmICgobWF4VmVydGljYWxUYXJnZXRTaXplUHJlc2VydmluZ0FzcGVjdFJhdGlv
LndpZHRoICogbWF4VmVydGljYWxUYXJnZXRTaXplUHJlc2VydmluZ0FzcGVjdFJhdGlvLmhlaWdo
dCkgPiAobWF4SG9ydGl6b250YWxUYXJnZXRTaXplUHJlc2VydmluZ0FzcGVjdFJhdGlvLndpZHRo
ICogbWF4SG9ydGl6b250YWxUYXJnZXRTaXplUHJlc2VydmluZ0FzcGVjdFJhdGlvLmhlaWdodCkp
Ci0gICAgICAgIGNvbXB1dGVkVGFyZ2V0U2l6ZSA9IG1heFZlcnRpY2FsVGFyZ2V0U2l6ZVByZXNl
cnZpbmdBc3BlY3RSYXRpbzsKLSAgICBjb21wdXRlZFRhcmdldFNpemUgPSBtYXhIb3J0aXpvbnRh
bFRhcmdldFNpemVQcmVzZXJ2aW5nQXNwZWN0UmF0aW87Ci0KLSAgICAvLyBOb3cgbWFrZSBzdXJl
IHdoYXQgd2UndmUgY29tcHV0ZWQgaXNuJ3QgdG9vIHNtYWxsLgotICAgIGlmIChjb21wdXRlZFRh
cmdldFNpemUud2lkdGggPCBzbWFsbGVzdFBvcG92ZXJTaXplLndpZHRoICYmIGNvbXB1dGVkVGFy
Z2V0U2l6ZS5oZWlnaHQgPCBzbWFsbGVzdFBvcG92ZXJTaXplLmhlaWdodCkgewotICAgICAgICBm
bG9hdCBsaW1pdFdpZHRoID0gc21hbGxlc3RQb3BvdmVyU2l6ZS53aWR0aCA+IGNvbXB1dGVkVGFy
Z2V0U2l6ZS53aWR0aCA/IHNtYWxsZXN0UG9wb3ZlclNpemUud2lkdGggOiBjb21wdXRlZFRhcmdl
dFNpemUud2lkdGg7Ci0gICAgICAgIGZsb2F0IGxpbWl0SGVpZ2h0ID0gc21hbGxlc3RQb3BvdmVy
U2l6ZS5oZWlnaHQgPiBjb21wdXRlZFRhcmdldFNpemUuaGVpZ2h0ID8gc21hbGxlc3RQb3BvdmVy
U2l6ZS5oZWlnaHQgOiBjb21wdXRlZFRhcmdldFNpemUuaGVpZ2h0OwotICAgICAgICBGbG9hdFJl
Y3QgdGFyZ2V0UmVjdExhcmdlclRoYW5NaW5TaXplID0gbGFyZ2VzdFJlY3RXaXRoQXNwZWN0UmF0
aW9JbnNpZGVSZWN0KGFzcGVjdFJhdGlvLCBGbG9hdFJlY3QoMCwgMCwgbGltaXRXaWR0aCwgbGlt
aXRIZWlnaHQpKTsKLSAgICAgICAgY29tcHV0ZWRUYXJnZXRTaXplID0gTlNNYWtlU2l6ZSh0YXJn
ZXRSZWN0TGFyZ2VyVGhhbk1pblNpemUuc2l6ZSgpLndpZHRoKCksIHRhcmdldFJlY3RMYXJnZXJU
aGFuTWluU2l6ZS5zaXplKCkuaGVpZ2h0KCkpOwotCi0gICAgICAgIC8vIElmIG91ciBvcmlnbmFs
IGNvbXB1dGVkVGFyZ2V0U2l6ZSB3YXMgc28gc21hbGwgdGhhdCB3ZSBoYWQgdG8gZ2V0IGhlcmUg
YW5kIG1ha2UgYSBuZXcgY29tcHV0ZWRUYXJnZXRTaXplIHRoYXQgaXMKLSAgICAgICAgLy8gbGFy
Z2VyIHRoYW4gdGhlIG1pbmltdW0sIHRoZW4gdGhlIGVsZW1lbnRCb3VuZGluZ0JveCBvZiB0aGUg
X2hpdFRlc3RSZXN1bHQgaXMgcHJvYmFibHkgaHVnZS4gU28gd2Ugc2hvdWxkIHVzZQotICAgICAg
ICAvLyB0aGUgZXZlbnQgb3JpZ2luIGFzIHRoZSBwb3BvdmVyIG9yaWdpbiBpbiB0aGlzIGNhc2Ug
YW5kIG5vdCB3b3JyeSBhYm91dCBvYnNjdXJpbmcgdGhlIF9oaXRUZXN0UmVzdWx0LgotICAgICAg
ICBfcG9wb3Zlck9yaWdpblJlY3Qub3JpZ2luID0gX2V2ZW50TG9jYXRpb25JblZpZXc7Ci0gICAg
ICAgIF9wb3BvdmVyT3JpZ2luUmVjdC5zaXplID0gTlNNYWtlU2l6ZSgxLCAxKTsKLSAgICB9Ci0K
LSAgICByZXR1cm4gY29tcHV0ZWRUYXJnZXRTaXplOwotfQotCi0jZW5kaWYgLy8gV0tfQVBJX0VO
QUJMRUQKLQotLSAodm9pZClfY2xlYXJQcmV2aWV3UG9wb3ZlcgotewotI2lmIFdLX0FQSV9FTkFC
TEVECi0gICAgaWYgKF9wcmV2aWV3Vmlld0NvbnRyb2xsZXIpIHsKLSAgICAgICAgX3ByZXZpZXdW
aWV3Q29udHJvbGxlci0+X2RlbGVnYXRlID0gbmlsOwotICAgICAgICBbX3drVmlldyBfZmluaXNo
UHJldmlld2luZ1VSTDpfcHJldmlld1ZpZXdDb250cm9sbGVyLT5fdXJsLmdldCgpIHdpdGhQcmV2
aWV3VmlldzpfcHJldmlld1ZpZXdDb250cm9sbGVyLT5fcHJldmlld1ZpZXcuZ2V0KCldOwotICAg
ICAgICBfcHJldmlld1ZpZXdDb250cm9sbGVyID0gbmlsOwotICAgIH0KLSNlbmRpZgotCi0gICAg
W19wcmV2aWV3UG9wb3ZlciBjbG9zZV07Ci0gICAgW19wcmV2aWV3UG9wb3ZlciBzZXREZWxlZ2F0
ZTpuaWxdOwotICAgIF9wcmV2aWV3UG9wb3ZlciA9IG5pbDsKLX0KLQogI3ByYWdtYSBtYXJrIFZp
ZGVvIGFjdGlvbnMKIAogLSAoTlNBcnJheSAqKV9kZWZhdWx0TWVudUl0ZW1zRm9yVmlkZW8KQEAg
LTkxMiwxNSArNTc1LDYgQEAgc3RhdGljIE5TU3RyaW5nICpwYXRoVG9QaG90b09uRGlzayhOU1N0
cmluZyAqc3VnZ2VzdGVkRmlsZW5hbWUpCiAgICAgfQogfQogCi0tICh2b2lkKW1lbnU6KE5TTWVu
dSAqKW1lbnUgd2lsbEhpZ2hsaWdodEl0ZW06KE5TTWVudUl0ZW0gKilpdGVtCi17Ci0jaWYgV0tf
QVBJX0VOQUJMRUQKLSAgICBpZiAoaXRlbS50YWcgIT0ga1dLQ29udGV4dEFjdGlvbkl0ZW1UYWdQ
cmV2aWV3TGluaykKLSAgICAgICAgcmV0dXJuOwotICAgIFtzZWxmIF9wcmV2aWV3VVJMRnJvbUFj
dGlvbk1lbnU6aXRlbV07Ci0jZW5kaWYKLX0KLQogI3ByYWdtYSBtYXJrIE5TU2hhcmluZ1NlcnZp
Y2VQaWNrZXJEZWxlZ2F0ZSBpbXBsZW1lbnRhdGlvbgogCiAtIChOU0FycmF5ICopc2hhcmluZ1Nl
cnZpY2VQaWNrZXI6KE5TU2hhcmluZ1NlcnZpY2VQaWNrZXIgKilzaGFyaW5nU2VydmljZVBpY2tl
ciBzaGFyaW5nU2VydmljZXNGb3JJdGVtczooTlNBcnJheSAqKWl0ZW1zIG1hc2s6KE5TU2hhcmlu
Z1NlcnZpY2VNYXNrKW1hc2sgcHJvcG9zZWRTaGFyaW5nU2VydmljZXM6KE5TQXJyYXkgKilwcm9w
b3NlZFNlcnZpY2VzCkBAIC05NDgsMzUgKzYwMiw2IEBAIHN0YXRpYyBOU1N0cmluZyAqcGF0aFRv
UGhvdG9PbkRpc2soTlNTdHJpbmcgKnN1Z2dlc3RlZEZpbGVuYW1lKQogICAgIHJldHVybiBfd2tW
aWV3LndpbmRvdzsKIH0KIAotI3ByYWdtYSBtYXJrIE5TUG9wb3ZlckRlbGVnYXRlIGltcGxlbWVu
dGF0aW9uCi0KLS0gKHZvaWQpcG9wb3ZlcldpbGxDbG9zZTooTlNOb3RpZmljYXRpb24gKilub3Rp
ZmljYXRpb24KLXsKLSAgICBfc2hvdWxkS2VlcFByZXZpZXdQb3BvdmVyT3BlbiA9IE5POwotICAg
IFtzZWxmIF9jbGVhclByZXZpZXdQb3BvdmVyXTsKLX0KLQotI3ByYWdtYSBtYXJrIFFMUHJldmll
d01lbnVJdGVtRGVsZWdhdGUgaW1wbGVtZW50YXRpb24KLQotLSAoTlNWaWV3ICopbWVudUl0ZW06
KE5TTWVudUl0ZW0gKiltZW51SXRlbSB2aWV3QXRTY3JlZW5Qb2ludDooTlNQb2ludClzY3JlZW5Q
b2ludAotewotICAgIHJldHVybiBfd2tWaWV3OwotfQotCi0tIChpZDxRTFByZXZpZXdJdGVtPilt
ZW51SXRlbTooTlNNZW51SXRlbSAqKW1lbnVJdGVtIHByZXZpZXdJdGVtQXRQb2ludDooTlNQb2lu
dClwb2ludAotewotICAgIGlmICghX3drVmlldykKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAg
IFJlZlB0cjxXZWJIaXRUZXN0UmVzdWx0PiBoaXRUZXN0UmVzdWx0ID0gW3NlbGYgX3dlYkhpdFRl
c3RSZXN1bHRdOwotICAgIHJldHVybiBbTlNVUkwgX3dlYl9VUkxXaXRoV1RGU3RyaW5nOmhpdFRl
c3RSZXN1bHQtPmFic29sdXRlTGlua1VSTCgpXTsKLX0KLQotLSAoTlNSZWN0RWRnZSltZW51SXRl
bTooTlNNZW51SXRlbSAqKW1lbnVJdGVtIHByZWZlcnJlZEVkZ2VGb3JQb2ludDooTlNQb2ludClw
b2ludAotewotICAgIHJldHVybiBOU01heFlFZGdlOwotfQotCiAjcHJhZ21hIG1hcmsgTWVudSBJ
dGVtcwogCiAtIChSZXRhaW5QdHI8TlNNZW51SXRlbT4pX2NyZWF0ZUFjdGlvbk1lbnVJdGVtRm9y
VGFnOih1aW50MzJfdCl0YWcKQEAgLTk5NCwxMyArNjE5LDkgQEAgc3RhdGljIE5TU3RyaW5nICpw
YXRoVG9QaG90b09uRGlzayhOU1N0cmluZyAqc3VnZ2VzdGVkRmlsZW5hbWUpCiAgICAgICAgIGlt
YWdlID0gW05TSW1hZ2UgaW1hZ2VOYW1lZDpAIk5TQWN0aW9uTWVudU9wZW5Jbk5ld1dpbmRvdyJd
OwogICAgICAgICBicmVhazsKIAotI2lmIFdLX0FQSV9FTkFCTEVECiAgICAgY2FzZSBrV0tDb250
ZXh0QWN0aW9uSXRlbVRhZ1ByZXZpZXdMaW5rOgotICAgICAgICBzZWxlY3RvciA9IEBzZWxlY3Rv
cihfa2VlcFByZXZpZXdPcGVuRnJvbUFjdGlvbk1lbnU6KTsKLSAgICAgICAgdGl0bGUgPSBAIiI7
Ci0gICAgICAgIGltYWdlID0gW05TSW1hZ2UgaW1hZ2VOYW1lZDpAIk5TQWN0aW9uTWVudVF1aWNr
TG9vayJdOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7Ci0j
ZW5kaWYKIAogICAgIGNhc2Uga1dLQ29udGV4dEFjdGlvbkl0ZW1UYWdBZGRMaW5rVG9TYWZhcmlS
ZWFkaW5nTGlzdDoKICAgICAgICAgc2VsZWN0b3IgPSBAc2VsZWN0b3IoX2FkZFRvUmVhZGluZ0xp
c3RGcm9tQWN0aW9uTWVudTopOwpAQCAtMTE5NSwyOCArODE2LDYgQEAgc3RhdGljIE5TU3RyaW5n
ICpwYXRoVG9QaG90b09uRGlzayhOU1N0cmluZyAqc3VnZ2VzdGVkRmlsZW5hbWUpCiAgICAgICAg
IFtfd2tWaWV3LmFjdGlvbk1lbnUgY2FuY2VsVHJhY2tpbmddOwogfQogCi0jaWYgV0tfQVBJX0VO
QUJMRUQKLQotI3ByYWdtYSBtYXJrIFdLUGFnZVByZXZpZXdWaWV3Q29udHJvbGxlckRlbGVnYXRl
Ci0KLS0gKE5TVmlldyAqKXBhZ2VQcmV2aWV3Vmlld0NvbnRyb2xsZXI6KFdLUGFnZVByZXZpZXdW
aWV3Q29udHJvbGxlciAqKXBhZ2VQcmV2aWV3Vmlld0NvbnRyb2xsZXIgdmlld0ZvclByZXZpZXdp
bmdVUkw6KE5TVVJMICopdXJsIGluaXRpYWxGcmFtZVNpemU6KE5TU2l6ZSlpbml0aWFsRnJhbWVT
aXplCi17Ci0gICAgcmV0dXJuIFtfd2tWaWV3IF92aWV3Rm9yUHJldmlld2luZ1VSTDp1cmwgaW5p
dGlhbEZyYW1lU2l6ZTppbml0aWFsRnJhbWVTaXplXTsKLX0KLQotLSAoTlNTdHJpbmcgKilwYWdl
UHJldmlld1ZpZXdDb250cm9sbGVyOihXS1BhZ2VQcmV2aWV3Vmlld0NvbnRyb2xsZXIgKilwYWdl
UHJldmlld1ZpZXdDb250cm9sbGVyIHRpdGxlRm9yUHJldmlld09mVVJMOihOU1VSTCAqKXVybAot
ewotICAgIHJldHVybiBbX3drVmlldyBfdGl0bGVGb3JQcmV2aWV3T2ZVUkw6dXJsXTsKLX0KLQot
LSAodm9pZClwYWdlUHJldmlld1ZpZXdDb250cm9sbGVyV2FzQ2xpY2tlZDooV0tQYWdlUHJldmll
d1ZpZXdDb250cm9sbGVyICopcGFnZVByZXZpZXdWaWV3Q29udHJvbGxlcgotewotICAgIGlmIChO
U1VSTCAqdXJsID0gcGFnZVByZXZpZXdWaWV3Q29udHJvbGxlci0+X3VybC5nZXQoKSkKLSAgICAg
ICAgW193a1ZpZXcgX2hhbmRsZUNsaWNrSW5QcmV2aWV3VmlldzpwYWdlUHJldmlld1ZpZXdDb250
cm9sbGVyLT5fcHJldmlld1ZpZXcuZ2V0KCkgVVJMOnVybF07Ci19Ci0KLSNlbmRpZgotCiBAZW5k
CiAKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL21hYy9XS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIuaAppbmRleCBlMTQ1
ZWYzODE3MjRiNjk3NzJmODcyN2ZiMGUyOWJhNDJmZjM4MGNiLi4yNjQyNDljNTU2Y2NiYTliNjU5
Y2I4NGFiNDRjNTI5NzZjMzI3ZDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9tYWMvV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLmgKQEAgLTQzLDYgKzQz
LDggQEAgZW51bSBjbGFzcyBJbW1lZGlhdGVBY3Rpb25TdGF0ZSB7CiB9OwogfQogCitAY2xhc3Mg
TlNJbW1lZGlhdGVBY3Rpb25HZXN0dXJlUmVjb2duaXplcjsKK0BjbGFzcyBXS1BhZ2VQcmV2aWV3
Vmlld0NvbnRyb2xsZXI7CiBAY2xhc3MgV0tWaWV3OwogCiBAaW50ZXJmYWNlIFdLSW1tZWRpYXRl
QWN0aW9uQ29udHJvbGxlciA6IE5TT2JqZWN0IDxOU0dlc3R1cmVSZWNvZ25pemVyRGVsZWdhdGU+
IHsKQEAgLTUzLDE0ICs1NSwyNCBAQCBlbnVtIGNsYXNzIEltbWVkaWF0ZUFjdGlvblN0YXRlIHsK
ICAgICBXZWJLaXQ6OkltbWVkaWF0ZUFjdGlvblN0YXRlIF9zdGF0ZTsKICAgICBXZWJLaXQ6OkFj
dGlvbk1lbnVIaXRUZXN0UmVzdWx0IF9oaXRUZXN0UmVzdWx0OwogICAgIF9XS0ltbWVkaWF0ZUFj
dGlvblR5cGUgX3R5cGU7CisgICAgTlNJbW1lZGlhdGVBY3Rpb25HZXN0dXJlUmVjb2duaXplciAq
X2ltbWVkaWF0ZUFjdGlvblJlY29nbml6ZXI7CiAKICAgICBOU1BvaW50IF9ldmVudExvY2F0aW9u
SW5WaWV3OworCisjaWYgV0tfQVBJX0VOQUJMRUQKKyAgICBSZXRhaW5QdHI8TlNQb3BvdmVyPiBf
cHJldmlld1BvcG92ZXI7CisgICAgU3RyaW5nIF9wcmV2aWV3UG9wb3Zlck9yaWdpbmFsVVJMOwor
ICAgIE5TUmVjdCBfcG9wb3Zlck9yaWdpblJlY3Q7CisgICAgUmV0YWluUHRyPFdLUGFnZVByZXZp
ZXdWaWV3Q29udHJvbGxlcj4gX3ByZXZpZXdWaWV3Q29udHJvbGxlcjsKKyNlbmRpZgogfQogCi0t
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQYWdlOihXZWJLaXQ6OldlYlBhZ2VQcm94eSYpcGFnZSB2
aWV3OihXS1ZpZXcgKil3a1ZpZXc7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQYWdlOihXZWJL
aXQ6OldlYlBhZ2VQcm94eSYpcGFnZSB2aWV3OihXS1ZpZXcgKil3a1ZpZXcgcmVjb2duaXplcjoo
TlNJbW1lZGlhdGVBY3Rpb25HZXN0dXJlUmVjb2duaXplciAqKWltbWVkaWF0ZUFjdGlvblJlY29n
bml6ZXI7CiAtICh2b2lkKXdpbGxEZXN0cm95VmlldzooV0tWaWV3ICopdmlldzsKIC0gKHZvaWQp
ZGlkUGVyZm9ybUFjdGlvbk1lbnVIaXRUZXN0Oihjb25zdCBXZWJLaXQ6OkFjdGlvbk1lbnVIaXRU
ZXN0UmVzdWx0JiloaXRUZXN0UmVzdWx0IHVzZXJEYXRhOihBUEk6Ok9iamVjdCopdXNlckRhdGE7
CiAKKy0gKHZvaWQpc2V0UHJldmlld1RpdGxlOihOU1N0cmluZyAqKXByZXZpZXdUaXRsZTsKKwog
QGVuZAogCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDEwMTAwMApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L21hYy9XS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQppbmRleCBkMmRkOWIyMDlh
YjQ4NzkwODQzMjk3NTU0NjRhNzEyZmU2YTIwYjY2Li42ODRiOTBkMDk3ODQyYTM2YzEwNGIzNTRh
YjY2ODlhMTA3ZDEwZmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFj
L1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQpAQCAtMjgsMTkgKzI4LDM3
IEBACiAKICNpZiBQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTAxMDAwCiAKKyNpbXBvcnQgIldLTlNVUkxFeHRyYXMuaCIKKyNpbXBvcnQgIldLUGFn
ZVByZXZpZXdWaWV3Q29udHJvbGxlci5oIgogI2ltcG9ydCAiV0tWaWV3SW50ZXJuYWwuaCIKICNp
bXBvcnQgIldlYlBhZ2VNZXNzYWdlcy5oIgogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCiAjaW1w
b3J0ICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5Lmgi
CisjaW1wb3J0IDxXZWJDb3JlL0dlb21ldHJ5VXRpbGl0aWVzLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L05TSW1tZWRpYXRlQWN0aW9uR2VzdHVyZVJlY29nbml6ZXJTUEkuaD4KKyNpbXBvcnQgPFdlYkNv
cmUvTlNNZW51U1BJLmg+CisjaW1wb3J0IDxXZWJDb3JlL1F1aWNrTG9va01hY1NQSS5oPgorI2lt
cG9ydCA8V2ViQ29yZS9Tb2Z0TGlua2luZy5oPgorI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KKwor
U09GVF9MSU5LX0ZSQU1FV09SS19JTl9VTUJSRUxMQShRdWFydHosIFF1aWNrTG9va1VJKQorU09G
VF9MSU5LX0NMQVNTKFF1aWNrTG9va1VJLCBRTFByZXZpZXdNZW51SXRlbSkKIAogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCitAaW50ZXJmYWNlIFdL
SW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlciAoKSA8TlNQb3BvdmVyRGVsZWdhdGUsIFFMUHJldmll
d01lbnVJdGVtRGVsZWdhdGU+CitAZW5kCisKKyNpZiBXS19BUElfRU5BQkxFRAorQGludGVyZmFj
ZSBXS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIgKCkgPFdLUGFnZVByZXZpZXdWaWV3Q29udHJv
bGxlckRlbGVnYXRlPgorQGVuZAorI2VuZGlmCisKIEBpbXBsZW1lbnRhdGlvbiBXS0ltbWVkaWF0
ZUFjdGlvbkNvbnRyb2xsZXIKIAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUGFnZTooV2ViUGFn
ZVByb3h5JilwYWdlIHZpZXc6KFdLVmlldyAqKXdrVmlldworLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoUGFnZTooV2ViUGFnZVByb3h5JilwYWdlIHZpZXc6KFdLVmlldyAqKXdrVmlldyByZWNvZ25p
emVyOihOU0ltbWVkaWF0ZUFjdGlvbkdlc3R1cmVSZWNvZ25pemVyICopaW1tZWRpYXRlQWN0aW9u
UmVjb2duaXplcgogewogICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CiAKQEAgLTUwLDYgKzY4LDcg
QEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKICAgICBfcGFnZSA9ICZwYWdlOwogICAgIF93a1Zp
ZXcgPSB3a1ZpZXc7CiAgICAgX3R5cGUgPSBrV0tJbW1lZGlhdGVBY3Rpb25Ob25lOworICAgIF9p
bW1lZGlhdGVBY3Rpb25SZWNvZ25pemVyID0gaW1tZWRpYXRlQWN0aW9uUmVjb2duaXplcjsKIAog
ICAgIHJldHVybiBzZWxmOwogfQpAQCAtODEsNyArMTAwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKIAogLSAodm9pZClpbW1lZGlhdGVBY3Rpb25SZWNvZ25pemVyV2lsbFByZXBhcmU6KE5T
SW1tZWRpYXRlQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIgKilpbW1lZGlhdGVBY3Rpb25SZWNvZ25p
emVyCiB7Ci0gICAgaWYgKGltbWVkaWF0ZUFjdGlvblJlY29nbml6ZXIudmlldyAhPSBfd2tWaWV3
KQorICAgIGlmIChpbW1lZGlhdGVBY3Rpb25SZWNvZ25pemVyICE9IF9pbW1lZGlhdGVBY3Rpb25S
ZWNvZ25pemVyKQogICAgICAgICByZXR1cm47CiAKICAgICBfZXZlbnRMb2NhdGlvbkluVmlldyA9
IFtpbW1lZGlhdGVBY3Rpb25SZWNvZ25pemVyIGxvY2F0aW9uSW5WaWV3OmltbWVkaWF0ZUFjdGlv
blJlY29nbml6ZXIudmlld107CkBAIC05Myw3ICsxMTIsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
S2l0OwogCiAtICh2b2lkKWltbWVkaWF0ZUFjdGlvblJlY29nbml6ZXJXaWxsQmVnaW5BbmltYXRp
b246KE5TSW1tZWRpYXRlQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIgKilpbW1lZGlhdGVBY3Rpb25S
ZWNvZ25pemVyCiB7Ci0gICAgaWYgKGltbWVkaWF0ZUFjdGlvblJlY29nbml6ZXIudmlldyAhPSBf
d2tWaWV3KQorICAgIGlmIChpbW1lZGlhdGVBY3Rpb25SZWNvZ25pemVyICE9IF9pbW1lZGlhdGVB
Y3Rpb25SZWNvZ25pemVyKQogICAgICAgICByZXR1cm47CiAKICAgICBBU1NFUlQoX3N0YXRlICE9
IEltbWVkaWF0ZUFjdGlvblN0YXRlOjpOb25lKTsKQEAgLTExNCw3ICsxMzMsNyBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OwogCiAtICh2b2lkKWltbWVkaWF0ZUFjdGlvblJlY29nbml6ZXJEaWRD
YW5jZWxBbmltYXRpb246KE5TSW1tZWRpYXRlQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIgKilpbW1l
ZGlhdGVBY3Rpb25SZWNvZ25pemVyCiB7Ci0gICAgaWYgKGltbWVkaWF0ZUFjdGlvblJlY29nbml6
ZXIudmlldyAhPSBfd2tWaWV3KQorICAgIGlmIChpbW1lZGlhdGVBY3Rpb25SZWNvZ25pemVyICE9
IF9pbW1lZGlhdGVBY3Rpb25SZWNvZ25pemVyKQogICAgICAgICByZXR1cm47CiAKICAgICBbc2Vs
ZiBfY2xlYXJJbW1lZGlhdGVBY3Rpb25TdGF0ZV07CkBAIC0xMjIsMTcgKzE0MSwyNDUgQEAgdXNp
bmcgbmFtZXNwYWNlIFdlYktpdDsKIAogLSAodm9pZClpbW1lZGlhdGVBY3Rpb25SZWNvZ25pemVy
RGlkQ29tcGxldGVBbmltYXRpb246KE5TSW1tZWRpYXRlQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIg
KilpbW1lZGlhdGVBY3Rpb25SZWNvZ25pemVyCiB7Ci0gICAgaWYgKGltbWVkaWF0ZUFjdGlvblJl
Y29nbml6ZXIudmlldyAhPSBfd2tWaWV3KQorICAgIGlmIChpbW1lZGlhdGVBY3Rpb25SZWNvZ25p
emVyICE9IF9pbW1lZGlhdGVBY3Rpb25SZWNvZ25pemVyKQogICAgICAgICByZXR1cm47CiAKICAg
ICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIHRoZSB0eXBlcyBvZiBmdW5jdGlvbmFsaXR5IHBy
b3ZpZGVkIGluIEFjdGlvbiBtZW51J3Mgd2lsbE9wZW5NZW51LgogfQogCistIChQYXNzUmVmUHRy
PFdlYkhpdFRlc3RSZXN1bHQ+KV93ZWJIaXRUZXN0UmVzdWx0Cit7CisgICAgUmVmUHRyPFdlYkhp
dFRlc3RSZXN1bHQ+IGhpdFRlc3RSZXN1bHQ7CisgICAgaWYgKF9zdGF0ZSA9PSBJbW1lZGlhdGVB
Y3Rpb25TdGF0ZTo6UmVhZHkpCisgICAgICAgIGhpdFRlc3RSZXN1bHQgPSBXZWJIaXRUZXN0UmVz
dWx0OjpjcmVhdGUoX2hpdFRlc3RSZXN1bHQuaGl0VGVzdFJlc3VsdCk7CisgICAgZWxzZQorICAg
ICAgICBoaXRUZXN0UmVzdWx0ID0gX3BhZ2UtPmxhc3RNb3VzZU1vdmVIaXRUZXN0UmVzdWx0KCk7
CisKKyAgICByZXR1cm4gaGl0VGVzdFJlc3VsdC5yZWxlYXNlKCk7Cit9CisKICNwcmFnbWEgbWFy
ayBJbW1lZGlhdGUgYWN0aW9ucwogCiAtICh2b2lkKV91cGRhdGVJbW1lZGlhdGVBY3Rpb25JdGVt
CiB7Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudC4KKyAgICBSZWZQdHI8V2ViSGl0VGVzdFJlc3Vs
dD4gaGl0VGVzdFJlc3VsdCA9IFtzZWxmIF93ZWJIaXRUZXN0UmVzdWx0XTsKKworICAgIF90eXBl
ID0ga1dLSW1tZWRpYXRlQWN0aW9uTm9uZTsKKyAgICBfaW1tZWRpYXRlQWN0aW9uUmVjb2duaXpl
ci5hbmltYXRpb25Db250cm9sbGVyID0gbmlsOworCisgICAgaWYgKCFoaXRUZXN0UmVzdWx0KQor
ICAgICAgICByZXR1cm47CisKKyAgICBTdHJpbmcgYWJzb2x1dGVMaW5rVVJMID0gaGl0VGVzdFJl
c3VsdC0+YWJzb2x1dGVMaW5rVVJMKCk7CisgICAgaWYgKCFhYnNvbHV0ZUxpbmtVUkwuaXNFbXB0
eSgpICYmIFdlYkNvcmU6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkoYWJzb2x1dGVMaW5rVVJMKSkg
eworICAgICAgICBfdHlwZSA9IGtXS0ltbWVkaWF0ZUFjdGlvbkxpbmtQcmV2aWV3OworCisgICAg
ICAgIEJPT0wgc2hvdWxkVXNlU3RhbmRhcmRRdWlja0xvb2tQcmV2aWV3ID0gW193a1ZpZXcgX3No
b3VsZFVzZVN0YW5kYXJkUXVpY2tMb29rUHJldmlld10gJiYgW05TTWVudUl0ZW0gcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3RvcihzdGFuZGFyZFF1aWNrTG9va01lbnVJdGVtKV07CisgICAgICAg
IGlmIChzaG91bGRVc2VTdGFuZGFyZFF1aWNrTG9va1ByZXZpZXcpIHsKKyAgICAgICAgICAgIFJl
dGFpblB0cjxOU01lbnVJdGVtPiBwcmV2aWV3TGlua0l0ZW07CisgICAgICAgICAgICBSZXRhaW5Q
dHI8UUxQcmV2aWV3TWVudUl0ZW0+IHFsUHJldmlld0xpbmtJdGVtOworICAgICAgICAgICAgaWYg
KHNob3VsZFVzZVN0YW5kYXJkUXVpY2tMb29rUHJldmlldykgeworICAgICAgICAgICAgICAgIHFs
UHJldmlld0xpbmtJdGVtID0gW05TTWVudUl0ZW0gc3RhbmRhcmRRdWlja0xvb2tNZW51SXRlbV07
CisgICAgICAgICAgICAgICAgW3FsUHJldmlld0xpbmtJdGVtIHNldFByZXZpZXdTdHlsZTpRTFBy
ZXZpZXdTdHlsZVBvcG92ZXJdOworICAgICAgICAgICAgICAgIFtxbFByZXZpZXdMaW5rSXRlbSBz
ZXREZWxlZ2F0ZTpzZWxmXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF9pbW1lZGlhdGVB
Y3Rpb25SZWNvZ25pemVyLmFuaW1hdGlvbkNvbnRyb2xsZXIgPSAoaWQ8TlNJbW1lZGlhdGVBY3Rp
b25BbmltYXRpb25Db250cm9sbGVyPilxbFByZXZpZXdMaW5rSXRlbS5nZXQoKTsKKyAgICAgICAg
fSBlbHNlIHsKKyNpZiBXS19BUElfRU5BQkxFRAorICAgICAgICAgICAgW3NlbGYgX2NyZWF0ZVBy
ZXZpZXdQb3BvdmVySWZOZWVkZWRGb3JVUkw6YWJzb2x1dGVMaW5rVVJMXTsKKyAgICAgICAgICAg
IF9pbW1lZGlhdGVBY3Rpb25SZWNvZ25pemVyLmFuaW1hdGlvbkNvbnRyb2xsZXIgPSAoaWQ8TlNJ
bW1lZGlhdGVBY3Rpb25BbmltYXRpb25Db250cm9sbGVyPilfcHJldmlld1BvcG92ZXIuZ2V0KCk7
CisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybjsK
KyAgICB9Cit9CisKKyNwcmFnbWEgbWFyayBMaW5rIFByZXZpZXcgYWN0aW9uCisKKyNpZiBXS19B
UElfRU5BQkxFRAorCistICh2b2lkKV9jcmVhdGVQcmV2aWV3UG9wb3ZlcklmTmVlZGVkRm9yVVJM
OihTdHJpbmcpYWJzb2x1dGVMaW5rVVJMCit7CisgICAgaWYgKF9wcmV2aWV3UG9wb3Zlck9yaWdp
bmFsVVJMID09IGFic29sdXRlTGlua1VSTCkKKyAgICAgICAgcmV0dXJuOworCisgICAgX3ByZXZp
ZXdQb3BvdmVyT3JpZ2luYWxVUkwgPSBhYnNvbHV0ZUxpbmtVUkw7CisKKyAgICBOU1VSTCAqdXJs
ID0gW05TVVJMIF93ZWJfVVJMV2l0aFdURlN0cmluZzphYnNvbHV0ZUxpbmtVUkxdOworICAgIFJl
ZlB0cjxXZWJIaXRUZXN0UmVzdWx0PiBoaXRUZXN0UmVzdWx0ID0gW3NlbGYgX3dlYkhpdFRlc3RS
ZXN1bHRdOworICAgIF9wb3BvdmVyT3JpZ2luUmVjdCA9IGhpdFRlc3RSZXN1bHQtPmVsZW1lbnRC
b3VuZGluZ0JveCgpOworCisgICAgTlNTaXplIHByZXZpZXdQYWRkaW5nID0gW1dLUGFnZVByZXZp
ZXdWaWV3Q29udHJvbGxlciBwcmV2aWV3UGFkZGluZ107CisgICAgTlNTaXplIHBvcG92ZXJTaXpl
ID0gW3NlbGYgX3ByZWZlcnJlZFBvcG92ZXJTaXplV2l0aFByZXZpZXdQYWRkaW5nOnByZXZpZXdQ
YWRkaW5nXTsKKyAgICBDR0Zsb2F0IGFjdHVhbFBvcG92ZXJUb1ZpZXdTY2FsZSA9IHBvcG92ZXJT
aXplLndpZHRoIC8gTlNXaWR0aChfd2tWaWV3LmJvdW5kcyk7CisgICAgcG9wb3ZlclNpemUud2lk
dGggKz0gcHJldmlld1BhZGRpbmcud2lkdGg7CisgICAgcG9wb3ZlclNpemUuaGVpZ2h0ICs9IHBy
ZXZpZXdQYWRkaW5nLmhlaWdodDsKKworICAgIF9wcmV2aWV3Vmlld0NvbnRyb2xsZXIgPSBhZG9w
dE5TKFtbV0tQYWdlUHJldmlld1ZpZXdDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0aFBhZ2VVUkw6
dXJsIG1haW5WaWV3U2l6ZTpfd2tWaWV3LmJvdW5kcy5zaXplIHBvcG92ZXJUb1ZpZXdTY2FsZTph
Y3R1YWxQb3BvdmVyVG9WaWV3U2NhbGVdKTsKKyAgICBfcHJldmlld1ZpZXdDb250cm9sbGVyLT5f
ZGVsZWdhdGUgPSBzZWxmOworICAgIFtfcHJldmlld1ZpZXdDb250cm9sbGVyIGxvYWRWaWV3XTsK
KworICAgIF9wcmV2aWV3UG9wb3ZlciA9IGFkb3B0TlMoW1tOU1BvcG92ZXIgYWxsb2NdIGluaXRd
KTsKKyAgICBbX3ByZXZpZXdQb3BvdmVyIHNldEJlaGF2aW9yOk5TUG9wb3ZlckJlaGF2aW9yVHJh
bnNpZW50XTsKKyAgICBbX3ByZXZpZXdQb3BvdmVyIHNldENvbnRlbnRTaXplOnBvcG92ZXJTaXpl
XTsKKyAgICBbX3ByZXZpZXdQb3BvdmVyIHNldENvbnRlbnRWaWV3Q29udHJvbGxlcjpfcHJldmll
d1ZpZXdDb250cm9sbGVyLmdldCgpXTsKKyAgICBbX3ByZXZpZXdQb3BvdmVyIHNldERlbGVnYXRl
OnNlbGZdOworfQorCistICh2b2lkKV9jbGVhclByZXZpZXdQb3BvdmVyCit7CisgICAgaWYgKF9w
cmV2aWV3Vmlld0NvbnRyb2xsZXIpIHsKKyAgICAgICAgX3ByZXZpZXdWaWV3Q29udHJvbGxlci0+
X2RlbGVnYXRlID0gbmlsOworICAgICAgICBbX3drVmlldyBfZmluaXNoUHJldmlld2luZ1VSTDpf
cHJldmlld1ZpZXdDb250cm9sbGVyLT5fdXJsLmdldCgpIHdpdGhQcmV2aWV3VmlldzpfcHJldmll
d1ZpZXdDb250cm9sbGVyLT5fcHJldmlld1ZpZXcuZ2V0KCldOworICAgICAgICBfcHJldmlld1Zp
ZXdDb250cm9sbGVyID0gbmlsOworICAgIH0KKworICAgIFtfcHJldmlld1BvcG92ZXIgY2xvc2Vd
OworICAgIFtfcHJldmlld1BvcG92ZXIgc2V0RGVsZWdhdGU6bmlsXTsKKyAgICBfcHJldmlld1Bv
cG92ZXIgPSBuaWw7CisgICAgX3ByZXZpZXdQb3BvdmVyT3JpZ2luYWxVUkwgPSBTdHJpbmcoKTsK
K30KKworLSAodm9pZClzZXRQcmV2aWV3VGl0bGU6KE5TU3RyaW5nICopcHJldmlld1RpdGxlCit7
CisgICAgW19wcmV2aWV3Vmlld0NvbnRyb2xsZXIgc2V0UHJldmlld1RpdGxlOnByZXZpZXdUaXRs
ZV07Cit9CisKKy0gKHZvaWQpcG9wb3ZlcldpbGxDbG9zZTooTlNOb3RpZmljYXRpb24gKilub3Rp
ZmljYXRpb24KK3sKKyAgICBbc2VsZiBfY2xlYXJQcmV2aWV3UG9wb3Zlcl07Cit9CisKK3N0YXRp
YyBib29sIHRhcmdldFNpemVGaXRzSW5BdmFpbGFibGVTcGFjZShOU1NpemUgdGFyZ2V0U2l6ZSwg
TlNTaXplIGF2YWlsYWJsZVNwYWNlKQoreworICAgIHJldHVybiB0YXJnZXRTaXplLndpZHRoIDw9
IGF2YWlsYWJsZVNwYWNlLndpZHRoICYmIHRhcmdldFNpemUuaGVpZ2h0IDw9IGF2YWlsYWJsZVNw
YWNlLmhlaWdodDsKK30KKworLSAoTlNTaXplKWxhcmdlc3RQb3BvdmVyU2l6ZQoreworICAgIE5T
U2l6ZSBzY3JlZW5TaXplID0gX3drVmlldy53aW5kb3cuc2NyZWVuLmZyYW1lLnNpemU7CisKKyAg
ICBpZiAoc2NyZWVuU2l6ZS53aWR0aCA9PSAxMjgwICYmIHNjcmVlblNpemUuaGVpZ2h0ID09IDgw
MCkKKyAgICAgICAgcmV0dXJuIE5TTWFrZVNpemUoMTI0MCwgNjc0KTsKKworICAgIGlmIChzY3Jl
ZW5TaXplLndpZHRoID09IDEzNjYgJiYgc2NyZWVuU2l6ZS5oZWlnaHQgPT0gNzY4KQorICAgICAg
ICByZXR1cm4gTlNNYWtlU2l6ZSgxMjY0LCA2NDIpOworCisgICAgaWYgKHNjcmVlblNpemUud2lk
dGggPT0gMTQ0MCAmJiBzY3JlZW5TaXplLmhlaWdodCA9PSA5MDApCisgICAgICAgIHJldHVybiBO
U01ha2VTaXplKDEyNjQsIDc2MCk7CisKKyAgICBpZiAoc2NyZWVuU2l6ZS53aWR0aCA9PSAxNjgw
ICYmIHNjcmVlblNpemUuaGVpZ2h0ID09IDEwNTApCisgICAgICAgIHJldHVybiBOU01ha2VTaXpl
KDEzMjQsIDkxMCk7CisKKyAgICByZXR1cm4gTlNNYWtlU2l6ZSgxMzI0LCA5NDApOworfQorCist
IChOU1NpemUpX3ByZWZlcnJlZFBvcG92ZXJTaXplV2l0aFByZXZpZXdQYWRkaW5nOihOU1NpemUp
cHJldmlld1BhZGRpbmcKK3sKKyAgICBzdGF0aWMgY29uc3QgQ0dGbG9hdCBwcmVmZXJyZWRQb3Bv
dmVyVG9WaWV3U2NhbGUgPSAwLjc1OworICAgIHN0YXRpYyBjb25zdCBOU1NpemUgc2NyZWVuUGFk
ZGluZyA9IHs0MCwgNDB9OworICAgIHN0YXRpYyBjb25zdCBOU1NpemUgc21hbGxlc3RQb3BvdmVy
U2l6ZSA9IE5TTWFrZVNpemUoNTAwLCAzMDApOworCisgICAgY29uc3QgTlNTaXplIGVmZmVjdGl2
ZVBhZGRpbmcgPSBOU01ha2VTaXplKHNjcmVlblBhZGRpbmcud2lkdGggKyBwcmV2aWV3UGFkZGlu
Zy53aWR0aCwgc2NyZWVuUGFkZGluZy5oZWlnaHQgKyBwcmV2aWV3UGFkZGluZy5oZWlnaHQpOwor
CisgICAgTlNXaW5kb3cgKndpbmRvdyA9IF93a1ZpZXcud2luZG93OworICAgIE5TUmVjdCBvcmln
aW5TY3JlZW5SZWN0ID0gW3dpbmRvdyBjb252ZXJ0UmVjdFRvU2NyZWVuOltfd2tWaWV3IGNvbnZl
cnRSZWN0Ol9wb3BvdmVyT3JpZ2luUmVjdCB0b1ZpZXc6bmlsXV07CisgICAgTlNSZWN0IHNjcmVl
bkZyYW1lID0gd2luZG93LnNjcmVlbi52aXNpYmxlRnJhbWU7CisKKyAgICBOU1JlY3Qgd2tWaWV3
Qm91bmRzID0gX3drVmlldy5ib3VuZHM7CisgICAgTlNTaXplIHRhcmdldFNpemUgPSBOU01ha2VT
aXplKE5TV2lkdGgod2tWaWV3Qm91bmRzKSAqIHByZWZlcnJlZFBvcG92ZXJUb1ZpZXdTY2FsZSwg
TlNIZWlnaHQod2tWaWV3Qm91bmRzKSAqIHByZWZlcnJlZFBvcG92ZXJUb1ZpZXdTY2FsZSk7Cisg
ICAgTlNTaXplIGxhcmdlc3RQb3BvdmVyU2l6ZSA9IFtzZWxmIGxhcmdlc3RQb3BvdmVyU2l6ZV07
CisKKyAgICBDR0Zsb2F0IGF2YWlsYWJsZVNwYWNlQWJvdmUgPSBOU01heFkoc2NyZWVuRnJhbWUp
IC0gTlNNYXhZKG9yaWdpblNjcmVlblJlY3QpOworICAgIENHRmxvYXQgYXZhaWxhYmxlU3BhY2VC
ZWxvdyA9IE5TTWluWShvcmlnaW5TY3JlZW5SZWN0KSAtIE5TTWluWShzY3JlZW5GcmFtZSk7Cisg
ICAgQ0dGbG9hdCBtYXhBdmFpbGFibGVWZXJ0aWNhbFNwYWNlID0gZm1heChhdmFpbGFibGVTcGFj
ZUFib3ZlLCBhdmFpbGFibGVTcGFjZUJlbG93KSAtIGVmZmVjdGl2ZVBhZGRpbmcuaGVpZ2h0Owor
ICAgIE5TU2l6ZSBtYXhTcGFjZUF2YWlsYWJsZU9uWUVkZ2UgPSBOU01ha2VTaXplKHNjcmVlbkZy
YW1lLnNpemUud2lkdGggLSBlZmZlY3RpdmVQYWRkaW5nLmhlaWdodCwgbWF4QXZhaWxhYmxlVmVy
dGljYWxTcGFjZSk7CisgICAgaWYgKHRhcmdldFNpemVGaXRzSW5BdmFpbGFibGVTcGFjZSh0YXJn
ZXRTaXplLCBtYXhTcGFjZUF2YWlsYWJsZU9uWUVkZ2UpICYmIHRhcmdldFNpemVGaXRzSW5BdmFp
bGFibGVTcGFjZSh0YXJnZXRTaXplLCBsYXJnZXN0UG9wb3ZlclNpemUpKQorICAgICAgICByZXR1
cm4gdGFyZ2V0U2l6ZTsKKworICAgIENHRmxvYXQgYXZhaWxhYmxlU3BhY2VBdExlZnQgPSBOU01p
blgob3JpZ2luU2NyZWVuUmVjdCkgLSBOU01pblgoc2NyZWVuRnJhbWUpOworICAgIENHRmxvYXQg
YXZhaWxhYmxlU3BhY2VBdFJpZ2h0ID0gTlNNYXhYKHNjcmVlbkZyYW1lKSAtIE5TTWF4WChvcmln
aW5TY3JlZW5SZWN0KTsKKyAgICBDR0Zsb2F0IG1heEF2YWlsYWJsZUhvcml6b250YWxTcGFjZSA9
IGZtYXgoYXZhaWxhYmxlU3BhY2VBdExlZnQsIGF2YWlsYWJsZVNwYWNlQXRSaWdodCkgLSBlZmZl
Y3RpdmVQYWRkaW5nLndpZHRoOworICAgIE5TU2l6ZSBtYXhTcGFjZUF2YWlsYWJsZU9uWEVkZ2Ug
PSBOU01ha2VTaXplKG1heEF2YWlsYWJsZUhvcml6b250YWxTcGFjZSwgc2NyZWVuRnJhbWUuc2l6
ZS5oZWlnaHQgLSBlZmZlY3RpdmVQYWRkaW5nLndpZHRoKTsKKyAgICBpZiAodGFyZ2V0U2l6ZUZp
dHNJbkF2YWlsYWJsZVNwYWNlKHRhcmdldFNpemUsIG1heFNwYWNlQXZhaWxhYmxlT25YRWRnZSkg
JiYgdGFyZ2V0U2l6ZUZpdHNJbkF2YWlsYWJsZVNwYWNlKHRhcmdldFNpemUsIGxhcmdlc3RQb3Bv
dmVyU2l6ZSkpCisgICAgICAgIHJldHVybiB0YXJnZXRTaXplOworCisgICAgLy8gQWRqdXN0IHRo
ZSBtYXhpbXVtIHNwYWNlIGF2YWlsYWJsZSBpZiBpdCBpcyBsYXJnZXIgdGhhbiB0aGUgbGFyZ2Vz
dCBwb3BvdmVyIHNpemUuCisgICAgaWYgKG1heFNwYWNlQXZhaWxhYmxlT25ZRWRnZS53aWR0aCA+
IGxhcmdlc3RQb3BvdmVyU2l6ZS53aWR0aCAmJiBtYXhTcGFjZUF2YWlsYWJsZU9uWUVkZ2UuaGVp
Z2h0ID4gbGFyZ2VzdFBvcG92ZXJTaXplLmhlaWdodCkKKyAgICAgICAgbWF4U3BhY2VBdmFpbGFi
bGVPbllFZGdlID0gbGFyZ2VzdFBvcG92ZXJTaXplOworICAgIGlmIChtYXhTcGFjZUF2YWlsYWJs
ZU9uWEVkZ2Uud2lkdGggPiBsYXJnZXN0UG9wb3ZlclNpemUud2lkdGggJiYgbWF4U3BhY2VBdmFp
bGFibGVPblhFZGdlLmhlaWdodCA+IGxhcmdlc3RQb3BvdmVyU2l6ZS5oZWlnaHQpCisgICAgICAg
IG1heFNwYWNlQXZhaWxhYmxlT25YRWRnZSA9IGxhcmdlc3RQb3BvdmVyU2l6ZTsKKworICAgIC8v
IElmIHRoZSB0YXJnZXQgc2l6ZSBkb2Vzbid0IGZpdCBhbnl3aGVyZSwgd2UnbGwgZmluZCB0aGUg
bGFyZ2VzdCByZWN0IHRoYXQgZG9lcyBmaXQgdGhhdCBhbHNvIG1haW50YWlucyB0aGUgb3JpZ2lu
YWwgdmlldydzIGFzcGVjdCByYXRpby4KKyAgICBDR0Zsb2F0IGFzcGVjdFJhdGlvID0gd2tWaWV3
Qm91bmRzLnNpemUud2lkdGggLyB3a1ZpZXdCb3VuZHMuc2l6ZS5oZWlnaHQ7CisgICAgRmxvYXRS
ZWN0IG1heFZlcnRpY2FsVGFyZ2V0U2l6ZVByZXNlcnZpbmdBc3BlY3RSYXRpb1JlY3QgPSBsYXJn
ZXN0UmVjdFdpdGhBc3BlY3RSYXRpb0luc2lkZVJlY3QoYXNwZWN0UmF0aW8sIEZsb2F0UmVjdCgw
LCAwLCBtYXhTcGFjZUF2YWlsYWJsZU9uWUVkZ2Uud2lkdGgsIG1heFNwYWNlQXZhaWxhYmxlT25Z
RWRnZS5oZWlnaHQpKTsKKyAgICBGbG9hdFJlY3QgbWF4SG9yaXpvbnRhbFRhcmdldFNpemVQcmVz
ZXJ2aW5nQXNwZWN0UmF0aW9SZWN0ID0gbGFyZ2VzdFJlY3RXaXRoQXNwZWN0UmF0aW9JbnNpZGVS
ZWN0KGFzcGVjdFJhdGlvLCBGbG9hdFJlY3QoMCwgMCwgbWF4U3BhY2VBdmFpbGFibGVPblhFZGdl
LndpZHRoLCBtYXhTcGFjZUF2YWlsYWJsZU9uWEVkZ2UuaGVpZ2h0KSk7CisKKyAgICBOU1NpemUg
bWF4VmVydGljYWxUYXJnZXRTaXplUHJlc2VydmluZ0FzcGVjdFJhdGlvID0gTlNNYWtlU2l6ZSht
YXhWZXJ0aWNhbFRhcmdldFNpemVQcmVzZXJ2aW5nQXNwZWN0UmF0aW9SZWN0LndpZHRoKCksIG1h
eFZlcnRpY2FsVGFyZ2V0U2l6ZVByZXNlcnZpbmdBc3BlY3RSYXRpb1JlY3QuaGVpZ2h0KCkpOwor
ICAgIE5TU2l6ZSBtYXhIb3J0aXpvbnRhbFRhcmdldFNpemVQcmVzZXJ2aW5nQXNwZWN0UmF0aW8g
PSBOU01ha2VTaXplKG1heEhvcml6b250YWxUYXJnZXRTaXplUHJlc2VydmluZ0FzcGVjdFJhdGlv
UmVjdC53aWR0aCgpLCBtYXhIb3Jpem9udGFsVGFyZ2V0U2l6ZVByZXNlcnZpbmdBc3BlY3RSYXRp
b1JlY3QuaGVpZ2h0KCkpOworCisgICAgTlNTaXplIGNvbXB1dGVkVGFyZ2V0U2l6ZTsKKyAgICBp
ZiAoKG1heFZlcnRpY2FsVGFyZ2V0U2l6ZVByZXNlcnZpbmdBc3BlY3RSYXRpby53aWR0aCAqIG1h
eFZlcnRpY2FsVGFyZ2V0U2l6ZVByZXNlcnZpbmdBc3BlY3RSYXRpby5oZWlnaHQpID4gKG1heEhv
cnRpem9udGFsVGFyZ2V0U2l6ZVByZXNlcnZpbmdBc3BlY3RSYXRpby53aWR0aCAqIG1heEhvcnRp
em9udGFsVGFyZ2V0U2l6ZVByZXNlcnZpbmdBc3BlY3RSYXRpby5oZWlnaHQpKQorICAgICAgICBj
b21wdXRlZFRhcmdldFNpemUgPSBtYXhWZXJ0aWNhbFRhcmdldFNpemVQcmVzZXJ2aW5nQXNwZWN0
UmF0aW87CisgICAgY29tcHV0ZWRUYXJnZXRTaXplID0gbWF4SG9ydGl6b250YWxUYXJnZXRTaXpl
UHJlc2VydmluZ0FzcGVjdFJhdGlvOworCisgICAgLy8gTm93IG1ha2Ugc3VyZSB3aGF0IHdlJ3Zl
IGNvbXB1dGVkIGlzbid0IHRvbyBzbWFsbC4KKyAgICBpZiAoY29tcHV0ZWRUYXJnZXRTaXplLndp
ZHRoIDwgc21hbGxlc3RQb3BvdmVyU2l6ZS53aWR0aCAmJiBjb21wdXRlZFRhcmdldFNpemUuaGVp
Z2h0IDwgc21hbGxlc3RQb3BvdmVyU2l6ZS5oZWlnaHQpIHsKKyAgICAgICAgZmxvYXQgbGltaXRX
aWR0aCA9IHNtYWxsZXN0UG9wb3ZlclNpemUud2lkdGggPiBjb21wdXRlZFRhcmdldFNpemUud2lk
dGggPyBzbWFsbGVzdFBvcG92ZXJTaXplLndpZHRoIDogY29tcHV0ZWRUYXJnZXRTaXplLndpZHRo
OworICAgICAgICBmbG9hdCBsaW1pdEhlaWdodCA9IHNtYWxsZXN0UG9wb3ZlclNpemUuaGVpZ2h0
ID4gY29tcHV0ZWRUYXJnZXRTaXplLmhlaWdodCA/IHNtYWxsZXN0UG9wb3ZlclNpemUuaGVpZ2h0
IDogY29tcHV0ZWRUYXJnZXRTaXplLmhlaWdodDsKKyAgICAgICAgRmxvYXRSZWN0IHRhcmdldFJl
Y3RMYXJnZXJUaGFuTWluU2l6ZSA9IGxhcmdlc3RSZWN0V2l0aEFzcGVjdFJhdGlvSW5zaWRlUmVj
dChhc3BlY3RSYXRpbywgRmxvYXRSZWN0KDAsIDAsIGxpbWl0V2lkdGgsIGxpbWl0SGVpZ2h0KSk7
CisgICAgICAgIGNvbXB1dGVkVGFyZ2V0U2l6ZSA9IE5TTWFrZVNpemUodGFyZ2V0UmVjdExhcmdl
clRoYW5NaW5TaXplLnNpemUoKS53aWR0aCgpLCB0YXJnZXRSZWN0TGFyZ2VyVGhhbk1pblNpemUu
c2l6ZSgpLmhlaWdodCgpKTsKKworICAgICAgICAvLyBJZiBvdXIgb3JpZ25hbCBjb21wdXRlZFRh
cmdldFNpemUgd2FzIHNvIHNtYWxsIHRoYXQgd2UgaGFkIHRvIGdldCBoZXJlIGFuZCBtYWtlIGEg
bmV3IGNvbXB1dGVkVGFyZ2V0U2l6ZSB0aGF0IGlzCisgICAgICAgIC8vIGxhcmdlciB0aGFuIHRo
ZSBtaW5pbXVtLCB0aGVuIHRoZSBlbGVtZW50Qm91bmRpbmdCb3ggb2YgdGhlIF9oaXRUZXN0UmVz
dWx0IGlzIHByb2JhYmx5IGh1Z2UuIFNvIHdlIHNob3VsZCB1c2UKKyAgICAgICAgLy8gdGhlIGV2
ZW50IG9yaWdpbiBhcyB0aGUgcG9wb3ZlciBvcmlnaW4gaW4gdGhpcyBjYXNlIGFuZCBub3Qgd29y
cnkgYWJvdXQgb2JzY3VyaW5nIHRoZSBfaGl0VGVzdFJlc3VsdC4KKyAgICAgICAgX3BvcG92ZXJP
cmlnaW5SZWN0Lm9yaWdpbiA9IF9ldmVudExvY2F0aW9uSW5WaWV3OworICAgICAgICBfcG9wb3Zl
ck9yaWdpblJlY3Quc2l6ZSA9IE5TTWFrZVNpemUoMSwgMSk7CisgICAgfQorICAgIAorICAgIHJl
dHVybiBjb21wdXRlZFRhcmdldFNpemU7Cit9CisKKyNwcmFnbWEgbWFyayBXS1BhZ2VQcmV2aWV3
Vmlld0NvbnRyb2xsZXJEZWxlZ2F0ZQorCistIChOU1ZpZXcgKilwYWdlUHJldmlld1ZpZXdDb250
cm9sbGVyOihXS1BhZ2VQcmV2aWV3Vmlld0NvbnRyb2xsZXIgKilwYWdlUHJldmlld1ZpZXdDb250
cm9sbGVyIHZpZXdGb3JQcmV2aWV3aW5nVVJMOihOU1VSTCAqKXVybCBpbml0aWFsRnJhbWVTaXpl
OihOU1NpemUpaW5pdGlhbEZyYW1lU2l6ZQoreworICAgIHJldHVybiBbX3drVmlldyBfdmlld0Zv
clByZXZpZXdpbmdVUkw6dXJsIGluaXRpYWxGcmFtZVNpemU6aW5pdGlhbEZyYW1lU2l6ZV07Cit9
CisKKy0gKE5TU3RyaW5nICopcGFnZVByZXZpZXdWaWV3Q29udHJvbGxlcjooV0tQYWdlUHJldmll
d1ZpZXdDb250cm9sbGVyICopcGFnZVByZXZpZXdWaWV3Q29udHJvbGxlciB0aXRsZUZvclByZXZp
ZXdPZlVSTDooTlNVUkwgKil1cmwKK3sKKyAgICByZXR1cm4gW193a1ZpZXcgX3RpdGxlRm9yUHJl
dmlld09mVVJMOnVybF07Cit9CisKKy0gKHZvaWQpcGFnZVByZXZpZXdWaWV3Q29udHJvbGxlcldh
c0NsaWNrZWQ6KFdLUGFnZVByZXZpZXdWaWV3Q29udHJvbGxlciAqKXBhZ2VQcmV2aWV3Vmlld0Nv
bnRyb2xsZXIKK3sKKyAgICBpZiAoTlNVUkwgKnVybCA9IHBhZ2VQcmV2aWV3Vmlld0NvbnRyb2xs
ZXItPl91cmwuZ2V0KCkpCisgICAgICAgIFtfd2tWaWV3IF9oYW5kbGVDbGlja0luUHJldmlld1Zp
ZXc6cGFnZVByZXZpZXdWaWV3Q29udHJvbGxlci0+X3ByZXZpZXdWaWV3LmdldCgpIFVSTDp1cmxd
OworfQorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKKworI3ByYWdtYSBtYXJrIFFMUHJldmll
d01lbnVJdGVtRGVsZWdhdGUgaW1wbGVtZW50YXRpb24KKworLSAoTlNWaWV3ICopbWVudUl0ZW06
KE5TTWVudUl0ZW0gKiltZW51SXRlbSB2aWV3QXRTY3JlZW5Qb2ludDooTlNQb2ludClzY3JlZW5Q
b2ludAoreworICAgIHJldHVybiBfd2tWaWV3OworfQorCistIChpZDxRTFByZXZpZXdJdGVtPilt
ZW51SXRlbTooTlNNZW51SXRlbSAqKW1lbnVJdGVtIHByZXZpZXdJdGVtQXRQb2ludDooTlNQb2lu
dClwb2ludAoreworICAgIGlmICghX3drVmlldykKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAg
IFJlZlB0cjxXZWJIaXRUZXN0UmVzdWx0PiBoaXRUZXN0UmVzdWx0ID0gW3NlbGYgX3dlYkhpdFRl
c3RSZXN1bHRdOworICAgIHJldHVybiBbTlNVUkwgX3dlYl9VUkxXaXRoV1RGU3RyaW5nOmhpdFRl
c3RSZXN1bHQtPmFic29sdXRlTGlua1VSTCgpXTsKK30KKworLSAoTlNSZWN0RWRnZSltZW51SXRl
bTooTlNNZW51SXRlbSAqKW1lbnVJdGVtIHByZWZlcnJlZEVkZ2VGb3JQb2ludDooTlNQb2ludClw
b2ludAoreworICAgIHJldHVybiBOU01heFlFZGdlOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLUGFnZVByZXZpZXdWaWV3Q29udHJvbGxlci5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS1BhZ2VQcmV2aWV3Vmlld0NvbnRyb2xs
ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44NzE5MTBkNzVlMzA3OTkzNmE4NGNlZDQ3NDA5NTRiMGM0NmIxZWMz
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS1BhZ2VQ
cmV2aWV3Vmlld0NvbnRyb2xsZXIuaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBXS1BhZ2VQcmV2aWV3Vmlld0NvbnRyb2xsZXJfaAorI2RlZmluZSBXS1BhZ2VQcmV2aWV3
Vmlld0NvbnRyb2xsZXJfaAorCisjaWYgUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEwMTAwMAorCisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisK
K0BjbGFzcyBOU1N0cmluZzsKK0BjbGFzcyBOU1RleHRGaWVsZDsKK0BjbGFzcyBOU1VSTDsKK0Bj
bGFzcyBOU1ZpZXc7CitAY2xhc3MgV0tQYWdlUHJldmlld1ZpZXdDb250cm9sbGVyOworCitAcHJv
dG9jb2wgV0tQYWdlUHJldmlld1ZpZXdDb250cm9sbGVyRGVsZWdhdGUgPE5TT2JqZWN0PgorLSAo
TlNWaWV3ICopcGFnZVByZXZpZXdWaWV3Q29udHJvbGxlcjooV0tQYWdlUHJldmlld1ZpZXdDb250
cm9sbGVyICopcGFnZVByZXZpZXdWaWV3Q29udHJvbGxlciB2aWV3Rm9yUHJldmlld2luZ1VSTDoo
TlNVUkwgKil1cmwgaW5pdGlhbEZyYW1lU2l6ZTooTlNTaXplKWluaXRpYWxGcmFtZVNpemU7Cist
IChOU1N0cmluZyAqKXBhZ2VQcmV2aWV3Vmlld0NvbnRyb2xsZXI6KFdLUGFnZVByZXZpZXdWaWV3
Q29udHJvbGxlciAqKXBhZ2VQcmV2aWV3Vmlld0NvbnRyb2xsZXIgdGl0bGVGb3JQcmV2aWV3T2ZV
Ukw6KE5TVVJMICopdXJsOworLSAodm9pZClwYWdlUHJldmlld1ZpZXdDb250cm9sbGVyV2FzQ2xp
Y2tlZDooV0tQYWdlUHJldmlld1ZpZXdDb250cm9sbGVyICopcGFnZVByZXZpZXdWaWV3Q29udHJv
bGxlcjsKK0BlbmQKKworQGludGVyZmFjZSBXS1BhZ2VQcmV2aWV3Vmlld0NvbnRyb2xsZXIgOiBO
U1ZpZXdDb250cm9sbGVyIHsKK0BwdWJsaWMKKyAgICBOU1NpemUgX21haW5WaWV3U2l6ZTsKKyAg
ICBSZXRhaW5QdHI8TlNVUkw+IF91cmw7CisgICAgUmV0YWluUHRyPE5TVmlldz4gX3ByZXZpZXdW
aWV3OworICAgIFJldGFpblB0cjxOU1RleHRGaWVsZD4gX3RpdGxlVGV4dEZpZWxkOworICAgIFJl
dGFpblB0cjxOU1N0cmluZz4gX3ByZXZpZXdUaXRsZTsKKyAgICBpZCA8V0tQYWdlUHJldmlld1Zp
ZXdDb250cm9sbGVyRGVsZWdhdGU+IF9kZWxlZ2F0ZTsKKyAgICBDR0Zsb2F0IF9wb3BvdmVyVG9W
aWV3U2NhbGU7Cit9CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU1N0cmluZyAqcHJl
dmlld1RpdGxlOworCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQYWdlVVJMOihOU1VSTCAqKVVS
TCBtYWluVmlld1NpemU6KE5TU2l6ZSlzaXplIHBvcG92ZXJUb1ZpZXdTY2FsZTooQ0dGbG9hdClz
Y2FsZTsKKworKyAoTlNTaXplKXByZXZpZXdQYWRkaW5nOworCitAZW5kCisKKyNlbmRpZiAvLyBQ
TEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMDAw
CisKKyNlbmRpZiAvLyBXS1BhZ2VQcmV2aWV3Vmlld0NvbnRyb2xsZXJfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS1BhZ2VQcmV2aWV3Vmlld0NvbnRyb2xsZXIu
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLUGFnZVByZXZpZXdWaWV3Q29udHJv
bGxlci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42MTIzOTE0YmM1ZDM4ZTg3ZDMyOGZjNDU2OTI3NzViNTRmMjll
YTA0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS1Bh
Z2VQcmV2aWV3Vmlld0NvbnRyb2xsZXIubW0KQEAgLTAsMCArMSwxNDMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIldLUGFnZVByZXZpZXdWaWV3Q29udHJvbGxl
ci5oIgorCisjaW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgorCisjaWYgUExBVEZPUk0oTUFD
KSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTAwMCAmJiBXS19BUElf
RU5BQkxFRAorCitzdGF0aWMgY29uc3QgQ0dGbG9hdCBwcmV2aWV3Vmlld0luc2V0ID0gMzsKK3N0
YXRpYyBjb25zdCBDR0Zsb2F0IHByZXZpZXdWaWV3VGl0bGVIZWlnaHQgPSAzNDsKKworQGltcGxl
bWVudGF0aW9uIFdLUGFnZVByZXZpZXdWaWV3Q29udHJvbGxlcgorCistIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhQYWdlVVJMOihOU1VSTCAqKVVSTCBtYWluVmlld1NpemU6KE5TU2l6ZSlzaXplIHBv
cG92ZXJUb1ZpZXdTY2FsZTooQ0dGbG9hdClzY2FsZQoreworICAgIGlmICghKHNlbGYgPSBbc3Vw
ZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgX3VybCA9IFVSTDsKKyAgICBf
bWFpblZpZXdTaXplID0gc2l6ZTsKKyAgICBfcG9wb3ZlclRvVmlld1NjYWxlID0gc2NhbGU7CisK
KyAgICByZXR1cm4gc2VsZjsKK30KKworLSAoTlNTdHJpbmcgKilwcmV2aWV3VGl0bGUKK3sKKyAg
ICByZXR1cm4gX3ByZXZpZXdUaXRsZS5nZXQoKTsKK30KKworLSAodm9pZClzZXRQcmV2aWV3VGl0
bGU6KE5TU3RyaW5nICopcHJldmlld1RpdGxlCit7CisgICAgaWYgKFtfcHJldmlld1RpdGxlIGlz
RXF1YWxUb1N0cmluZzpwcmV2aWV3VGl0bGVdKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBL
ZWVwIGEgc2VwYXJhdGUgY29weSBhcm91bmQgaW4gY2FzZSB0aGlzIGlzIHJlY2VpdmVkIGJlZm9y
ZSB0aGUgdmlldyBoaWVyYXJjaHkgaXMgY3JlYXRlZC4KKyAgICBfcHJldmlld1RpdGxlID0gYWRv
cHROUyhbcHJldmlld1RpdGxlIGNvcHldKTsKKyAgICBbX3RpdGxlVGV4dEZpZWxkIHNldFN0cmlu
Z1ZhbHVlOnByZXZpZXdUaXRsZSA/IHByZXZpZXdUaXRsZSA6IEAiIl07Cit9CisKKysgKE5TU2l6
ZSlwcmV2aWV3UGFkZGluZworeworICAgIHJldHVybiBOU01ha2VTaXplKDIgKiBwcmV2aWV3Vmll
d0luc2V0LCBwcmV2aWV3Vmlld1RpdGxlSGVpZ2h0ICsgMiAqIHByZXZpZXdWaWV3SW5zZXQpOwor
fQorCistICh2b2lkKWxvYWRWaWV3Cit7CisgICAgTlNSZWN0IGRlZmF1bHRGcmFtZSA9IE5TTWFr
ZVJlY3QoMCwgMCwgX21haW5WaWV3U2l6ZS53aWR0aCwgX21haW5WaWV3U2l6ZS5oZWlnaHQpOwor
ICAgIF9wcmV2aWV3VmlldyA9IFtfZGVsZWdhdGUgcGFnZVByZXZpZXdWaWV3Q29udHJvbGxlcjpz
ZWxmIHZpZXdGb3JQcmV2aWV3aW5nVVJMOl91cmwuZ2V0KCkgaW5pdGlhbEZyYW1lU2l6ZTpkZWZh
dWx0RnJhbWUuc2l6ZV07CisgICAgaWYgKCFfcHJldmlld1ZpZXcpIHsKKyAgICAgICAgUmV0YWlu
UHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6ZGVmYXVsdEZyYW1lXSk7CisgICAgICAgIFt3ZWJWaWV3IF9zZXRJZ25vcmVzTm9u
V2hlZWxFdmVudHM6WUVTXTsKKyAgICAgICAgaWYgKF91cmwpIHsKKyAgICAgICAgICAgIE5TVVJM
UmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6X3VybC5nZXQo
KV07CisgICAgICAgICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKyAgICAgICAg
fQorICAgICAgICBfcHJldmlld1ZpZXcgPSB3ZWJWaWV3OworICAgIH0KKworICAgIFJldGFpblB0
cjxOU0NsaWNrR2VzdHVyZVJlY29nbml6ZXI+IGNsaWNrUmVjb2duaXplciA9IGFkb3B0TlMoW1tO
U0NsaWNrR2VzdHVyZVJlY29nbml6ZXIgYWxsb2NdIGluaXRXaXRoVGFyZ2V0OnNlbGYgYWN0aW9u
OkBzZWxlY3RvcihfY2xpY2tSZWNvZ25pemVkOildKTsKKyAgICBbX3ByZXZpZXdWaWV3IGFkZEdl
c3R1cmVSZWNvZ25pemVyOmNsaWNrUmVjb2duaXplci5nZXQoKV07CisKKyAgICBOU1JlY3QgcHJl
dmlld0ZyYW1lID0gW19wcmV2aWV3VmlldyBmcmFtZV07CisgICAgTlNSZWN0IGNvbnRhaW5lckZy
YW1lID0gcHJldmlld0ZyYW1lOworICAgIE5TU2l6ZSB0b3RhbFBhZGRpbmcgPSBbW3NlbGYgY2xh
c3NdIHByZXZpZXdQYWRkaW5nXTsKKyAgICBjb250YWluZXJGcmFtZS5zaXplLndpZHRoICs9IHRv
dGFsUGFkZGluZy53aWR0aDsKKyAgICBjb250YWluZXJGcmFtZS5zaXplLmhlaWdodCArPSB0b3Rh
bFBhZGRpbmcuaGVpZ2h0OworICAgIHByZXZpZXdGcmFtZSA9IE5TT2Zmc2V0UmVjdChwcmV2aWV3
RnJhbWUsIHByZXZpZXdWaWV3SW5zZXQsIHByZXZpZXdWaWV3SW5zZXQpOworCisgICAgUmV0YWlu
UHRyPE5TVmlldz4gY29udGFpbmVyVmlldyA9IGFkb3B0TlMoW1tOU1ZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6Y29udGFpbmVyRnJhbWVdKTsKKyAgICBbY29udGFpbmVyVmlldyBzZXRBdXRvcmVz
aXppbmdNYXNrOk5TVmlld1dpZHRoU2l6YWJsZSB8IE5TVmlld0hlaWdodFNpemFibGVdOworICAg
IFtjb250YWluZXJWaWV3IGFkZFN1YnZpZXc6X3ByZXZpZXdWaWV3LmdldCgpXTsKKyAgICBbX3By
ZXZpZXdWaWV3IHNldEZyYW1lOnByZXZpZXdGcmFtZV07CisgICAgW19wcmV2aWV3VmlldyBzZXRB
dXRvcmVzaXppbmdNYXNrOk5TVmlld1dpZHRoU2l6YWJsZSB8IE5TVmlld0hlaWdodFNpemFibGVd
OworCisgICAgX3RpdGxlVGV4dEZpZWxkID0gYWRvcHROUyhbW05TVGV4dEZpZWxkIGFsbG9jXSBp
bml0XSk7CisgICAgW190aXRsZVRleHRGaWVsZCBzZXRXYW50c0xheWVyOllFU107CisgICAgW190
aXRsZVRleHRGaWVsZCBzZXRBdXRvcmVzaXppbmdNYXNrOk5TVmlld1dpZHRoU2l6YWJsZSB8IE5T
Vmlld01pbllNYXJnaW5dOworICAgIFtfdGl0bGVUZXh0RmllbGQgc2V0RWRpdGFibGU6Tk9dOwor
ICAgIFtfdGl0bGVUZXh0RmllbGQgc2V0QmV6ZWxlZDpOT107CisgICAgW190aXRsZVRleHRGaWVs
ZCBzZXREcmF3c0JhY2tncm91bmQ6Tk9dOworICAgIFtfdGl0bGVUZXh0RmllbGQgc2V0QWxpZ25t
ZW50Ok5TQ2VudGVyVGV4dEFsaWdubWVudF07CisgICAgW190aXRsZVRleHRGaWVsZCBzZXRVc2Vz
U2luZ2xlTGluZU1vZGU6WUVTXTsKKyAgICBbX3RpdGxlVGV4dEZpZWxkIHNldExpbmVCcmVha01v
ZGU6TlNMaW5lQnJlYWtCeVRydW5jYXRpbmdUYWlsXTsKKyAgICBbX3RpdGxlVGV4dEZpZWxkIHNl
dFRleHRDb2xvcjpbTlNDb2xvciBsYWJlbENvbG9yXV07CisKKyAgICBOU1N0cmluZyAqdGl0bGUg
PSBfcHJldmlld1RpdGxlLmdldCgpOworICAgIGlmICghdGl0bGUpCisgICAgICAgIHRpdGxlID0g
W19kZWxlZ2F0ZSBwYWdlUHJldmlld1ZpZXdDb250cm9sbGVyOnNlbGYgdGl0bGVGb3JQcmV2aWV3
T2ZVUkw6X3VybC5nZXQoKV07CisgICAgaWYgKCF0aXRsZSkKKyAgICAgICAgdGl0bGUgPSBbX3Vy
bCBhYnNvbHV0ZVN0cmluZ107CisKKyAgICBbX3RpdGxlVGV4dEZpZWxkIHNldFN0cmluZ1ZhbHVl
OnRpdGxlID8gdGl0bGUgOiBAIiJdOworCisgICAgW190aXRsZVRleHRGaWVsZCBzaXplVG9GaXRd
OworICAgIE5TU2l6ZSB0aXRsZUZpdHRpbmdTaXplID0gW190aXRsZVRleHRGaWVsZCBmcmFtZV0u
c2l6ZTsKKyAgICBDR0Zsb2F0IHRleHRGaWVsZENlbnRlcmluZ09mZnNldCA9IChOU01heFkoY29u
dGFpbmVyRnJhbWUpIC0gTlNNYXhZKHByZXZpZXdGcmFtZSkgLSB0aXRsZUZpdHRpbmdTaXplLmhl
aWdodCkgLyAyOworCisgICAgTlNSZWN0IHRpdGxlRnJhbWUgPSBwcmV2aWV3RnJhbWU7CisgICAg
dGl0bGVGcmFtZS5zaXplLmhlaWdodCA9IHRpdGxlRml0dGluZ1NpemUuaGVpZ2h0OworICAgIHRp
dGxlRnJhbWUub3JpZ2luLnkgPSBOU01heFkocHJldmlld0ZyYW1lKSArIHRleHRGaWVsZENlbnRl
cmluZ09mZnNldDsKKyAgICBbX3RpdGxlVGV4dEZpZWxkIHNldEZyYW1lOnRpdGxlRnJhbWVdOwor
ICAgIFtjb250YWluZXJWaWV3IGFkZFN1YnZpZXc6X3RpdGxlVGV4dEZpZWxkLmdldCgpXTsKKwor
ICAgIC8vIFNldHRpbmcgdGhlIHdlYlZpZXcgYm91bmRzIHdpbGwgc2NhbGUgaXQgdG8gNzUlIG9m
IHRoZSBfbWFpblZpZXdTaXplLgorICAgIFtfcHJldmlld1ZpZXcgc2V0Qm91bmRzOk5TTWFrZVJl
Y3QoMCwgMCwgX21haW5WaWV3U2l6ZS53aWR0aCAvIF9wb3BvdmVyVG9WaWV3U2NhbGUsIF9tYWlu
Vmlld1NpemUuaGVpZ2h0IC8gX3BvcG92ZXJUb1ZpZXdTY2FsZSldOworCisgICAgc2VsZi52aWV3
ID0gY29udGFpbmVyVmlldy5nZXQoKTsKK30KKworLSAodm9pZClfY2xpY2tSZWNvZ25pemVkOihO
U0dlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlY29nbml6ZXIKK3sKKyAgICBpZiAoZ2VzdHVy
ZVJlY29nbml6ZXIuc3RhdGUgPT0gTlNHZXN0dXJlUmVjb2duaXplclN0YXRlQmVnYW4pCisgICAg
ICAgIFtfZGVsZWdhdGUgcGFnZVByZXZpZXdWaWV3Q29udHJvbGxlcldhc0NsaWNrZWQ6c2VsZl07
Cit9CisKK0BlbmQKKworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMDEwMDAgJiYgV0tfQVBJX0VOQUJMRUQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlODQzNzVl
YTFjNTU4MDEzZmQyODExZWNiNjkxODczNDJlMTI0ZWI4Li5mOGYyM2FiOTljZmE0ODA1OTMzNWJm
MTY5MWIyZDZmMWFmOWM0NWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02NDIsNiArNjQyLDggQEAKIAkJMkRERjczMTYxOEU5
NTA2MDAwNEY1QTY2IC8qIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbi5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEREY3MzE0MThFOTUw
NjAwMDRGNUE2NiAvKiBSZW1vdGVMYXllckJhY2tpbmdTdG9yZUNvbGxlY3Rpb24ubW0gKi87IH07
CiAJCTJERTY5NDNEMThCRDJBNjgwMDVDMTVFNSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9s
bGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJERTY5NDNCMThCRDJBNjgwMDVDMTVFNSAvKiBTbWFydE1hZ25pZmljYXRp
b25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJMkRFNjk0M0UxOEJEMkE2
ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRFNjk0M0MxOEJEMkE2
ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlcy5oICovOyB9
OworCQkyREVCMzQ3MTFBMzk4N0FCMDAzMEUyQkEgLyogV0tQYWdlUHJldmlld1ZpZXdDb250cm9s
bGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREVC
MzQ2RjFBMzk4N0FCMDAzMEUyQkEgLyogV0tQYWdlUHJldmlld1ZpZXdDb250cm9sbGVyLmggKi87
IH07CisJCTJERUIzNDcyMUEzOTg3QUIwMDMwRTJCQSAvKiBXS1BhZ2VQcmV2aWV3Vmlld0NvbnRy
b2xsZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
REVCMzQ3MDFBMzk4N0FCMDAzMEUyQkEgLyogV0tQYWdlUHJldmlld1ZpZXdDb250cm9sbGVyLm1t
ICovOyB9OwogCQkyREY5NTkzQjE4QTQyNDEyMDA5Nzg1QTEgLyogVmlld0dlc3R1cmVDb250cm9s
bGVySU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkRGOTU5MzQxOEE0MjQxMjAwOTc4NUExIC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbSAq
LzsgfTsKIAkJMzEwOTk5NzMxNDZDNzVBMjAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVu
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTA5
OTk3MTE0NkM3NTlCMDAyOURFQjkgLyogV2ViTm90aWZpY2F0aW9uQ2xpZW50LmNwcCAqLzsgfTsK
IAkJMzEwOTk5QzcxNDZDOUUzRDAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEwOTk5NjgxNDZD
NzFGNTAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVudC5oICovOyB9OwpAQCAtMjY3Nyw2
ICsyNjc5LDggQEAKIAkJMkRERjczMTQxOEU5NTA2MDAwNEY1QTY2IC8qIFJlbW90ZUxheWVyQmFj
a2luZ1N0b3JlQ29sbGVjdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbi5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMkRFNjk0M0IxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlm
aWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VSZWNl
aXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJERTY5NDNDMThCRDJBNjgw
MDVDMTVFNSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1l
c3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJERUIzNDZGMUEzOTg3QUIw
MDMwRTJCQSAvKiBXS1BhZ2VQcmV2aWV3Vmlld0NvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV0tQYWdlUHJldmlld1ZpZXdDb250cm9sbGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTJERUIzNDcwMUEzOTg3QUIwMDMwRTJCQSAvKiBXS1BhZ2VQ
cmV2aWV3Vmlld0NvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBXS1BhZ2VQcmV2aWV3Vmlld0NvbnRyb2xsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTJERjk1OTM0MThBNDI0MTIwMDk3ODVBMSAvKiBWaWV3R2VzdHVyZUNvbnRy
b2xsZXJJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBWaWV3
R2VzdHVyZUNvbnRyb2xsZXJJT1MubW07IHBhdGggPSBpb3MvVmlld0dlc3R1cmVDb250cm9sbGVy
SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTA5OTk2ODE0NkM3MUY1MDAy
OURFQjkgLyogV2ViTm90aWZpY2F0aW9uQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYk5vdGlm
aWNhdGlvbkNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTA5OTk3MTE0
NkM3NTlCMDAyOURFQjkgLyogV2ViTm90aWZpY2F0aW9uQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYk5vdGlmaWNhdGlvbkNsaWVudC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NzM5LDYgKzY3NDMsOCBAQAogCQkJCUNEQ0E4NUM2
MTMyQUJBNEUwMEU5NjFERiAvKiBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tICovLAog
CQkJCTkzMjFENTg1MUEzOEVFM0MwMDgwNTJCRSAvKiBXS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xs
ZXIuaCAqLywKIAkJCQk5MzIxRDU4NzFBMzhFRTc0MDA4MDUyQkUgLyogV0tJbW1lZGlhdGVBY3Rp
b25Db250cm9sbGVyLm1tICovLAorCQkJCTJERUIzNDZGMUEzOTg3QUIwMDMwRTJCQSAvKiBXS1Bh
Z2VQcmV2aWV3Vmlld0NvbnRyb2xsZXIuaCAqLywKKwkJCQkyREVCMzQ3MDFBMzk4N0FCMDAzMEUy
QkEgLyogV0tQYWdlUHJldmlld1ZpZXdDb250cm9sbGVyLm1tICovLAogCQkJCTBGQ0I0RTVDMThC
QkUzRDkwMDBGQ0ZDOSAvKiBXS1ByaW50aW5nVmlldy5oICovLAogCQkJCTBGQ0I0RTVEMThCQkUz
RDkwMDBGQ0ZDOSAvKiBXS1ByaW50aW5nVmlldy5tbSAqLywKIAkJCQkwRkNCNEU1RTE4QkJFM0Q5
MDAwRkNGQzkgLyogV0tUZXh0SW5wdXRXaW5kb3dDb250cm9sbGVyLmggKi8sCkBAIC03NDY2LDYg
Kzc0NzIsNyBAQAogCQkJCTFBNEE5RjMzMTJCODQ0RTIwMDhGRTk4NCAvKiBQbHVnaW5RdWlya3Mu
aCBpbiBIZWFkZXJzICovLAogCQkJCTdDRDYyMjc4MTczOUQ4NjMwMDVCRDdGRiAvKiBQbHVnaW5T
YW5kYm94UHJvZmlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBQjAzN0ExODVBN0M2QTAwRURG
NTAxIC8qIE1lc3NhZ2VTZW5kZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTJERUIzNDcxMUEzOTg3
QUIwMDMwRTJCQSAvKiBXS1BhZ2VQcmV2aWV3Vmlld0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBNkZCN0FGMTFFNjRCNjgwMERCMTM3MSAvKiBQbHVnaW5WaWV3LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQUZFNDM2NjE4QjZDMDgxMDA5QzdBNDggLyogVUlEZWxlZ2F0ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQ0VEQkE4NDgxOUZEQTAwQTAwNjg2NkE1IC8qIFdlYlNRTGl0ZURhdGFi
YXNlVHJhY2tlci5oIGluIEhlYWRlcnMgKi8sCkBAIC05NTk0LDYgKzk2MDEsNyBAQAogCQkJCTFB
QzEzMzg1MTg1OTBDNDYwMEYzRUMwNSAvKiBSZW1vdGVPYmplY3RSZWdpc3RyeU1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzQwNzYwQjEyNEZGMDI3MDA2OEYyMEEgLyog
V0tVUkxSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNDA3NjJBMTI0RkYwNDAwMDY4
RjIwQSAvKiBXS1VSTFJlcXVlc3ROUy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTJERUIzNDcyMUEz
OTg3QUIwMDMwRTJCQSAvKiBXS1BhZ2VQcmV2aWV3Vmlld0NvbnRyb2xsZXIubW0gaW4gU291cmNl
cyAqLywKIAkJCQk1MTJBOTc2MDE4MEUwMzFEMDAzOUExNDkgLyogRGF0YWJhc2VQcm9jZXNzTWVz
c2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNDA3NjBEMTI0RkYwMjcwMDY4
RjIwQSAvKiBXS1VSTFJlc3BvbnNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTM3OUE4NzM5MThC
QkZFMEYwMDU4OEFGMiAvKiBfV0tFbGVtZW50QWN0aW9uLm1tIGluIFNvdXJjZXMgKi8sCg==
</data>
<flag name="review"
          id="267996"
          type_id="1"
          status="+"
          setter="bdakin"
    />
          </attachment>
      

    </bug>

</bugzilla>