<?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>146336</bug_id>
          
          <creation_ts>2015-06-25 18:41:37 -0700</creation_ts>
          <short_desc>Implement unprivileged execCommand(&quot;copy&quot;) and execCommand(&quot;cut&quot;)</short_desc>
          <delta_ts>2016-03-16 10:36:16 -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>WebCore JavaScript</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>155548</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alan Tam">Tam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>ap</cc>
    
    <cc>aroben</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>enrica</cc>
    
    <cc>graouts</cc>
    
    <cc>kwangyul.seo</cc>
    
    <cc>mike</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>vincent</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1104834</commentid>
    <comment_count>0</comment_count>
      <attachid>255609</attachid>
    <who name="Alan Tam">Tam</who>
    <bug_when>2015-06-25 18:41:37 -0700</bug_when>
    <thetext>Created attachment 255609
Test case

Chrome 43 decides that allowing the website to pollute your clipboard inside _any_ DOM event handler is no longer a concern.
http://codetheory.in/javascript-copy-to-clipboard-without-flash-using-cut-and-copy-commands-with-document-execcommand/

Can WebKit consider allowing the same?

Test case attached.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1105613</commentid>
    <comment_count>1</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-06-29 19:41:30 -0700</bug_when>
    <thetext>Letting webpages _write_ into the clibpard while the user is interactiving with the page seems okay.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1105789</commentid>
    <comment_count>2</comment_count>
    <who name="Alan Tam">Tam</who>
    <bug_when>2015-06-30 13:49:46 -0700</bug_when>
    <thetext>Yes, writing only.

Looks like this will be implemented in Firefox 41 too. https://bugzilla.mozilla.org/show_bug.cgi?id=1012662</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1105874</commentid>
    <comment_count>3</comment_count>
    <who name="Alan Tam">Tam</who>
    <bug_when>2015-06-30 15:54:09 -0700</bug_when>
    <thetext>FWIW, the Chrome issue is here: https://code.google.com/p/chromium/issues/detail?id=424968</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1158988</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-01-26 14:01:07 -0800</bug_when>
    <thetext>&lt;rdar://problem/24354406&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1158989</commentid>
    <comment_count>5</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2016-01-26 14:01:51 -0800</bug_when>
    <thetext>This would allow Github.com to stop using Flash on WebKit:
&lt;https://twitter.com/davidgraham/status/692075210435010561&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1158998</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-01-26 14:12:06 -0800</bug_when>
    <thetext>There is certainly no shortage of websites that are using Flash for this purpose, github possibly not even being the most prominent.

Personally, I&apos;m not looking forward to a world in which advertisers put their content on my pasteboard each time a click a webpage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1174295</commentid>
    <comment_count>7</comment_count>
      <attachid>273921</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-03-13 20:58:06 -0700</bug_when>
    <thetext>Created attachment 273921
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1174297</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-13 20:59:37 -0700</bug_when>
    <thetext>Attachment 273921 did not pass style-queue:


ERROR: Source/WebCore/editing/EditorCommand.cpp:1177:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 1 in 9 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>1174305</commentid>
    <comment_count>9</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-03-13 21:43:43 -0700</bug_when>
    <thetext>Committed r198092: &lt;http://trac.webkit.org/changeset/198092&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1174443</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2016-03-14 07:21:15 -0700</bug_when>
    <thetext>Yay! Thanks Sam!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1175202</commentid>
    <comment_count>11</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-03-15 17:01:32 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Yay! Thanks Sam!

My pleasure! Any chance we can get Github updated to check document.queryCommandSupported(&quot;copy&quot;) to add the copy button :).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>255609</attachid>
            <date>2015-06-25 18:41:37 -0700</date>
            <delta_ts>2015-06-25 18:41:37 -0700</delta_ts>
            <desc>Test case</desc>
            <filename>clipboard-execCommand.html</filename>
            <type>text/html</type>
            <size>597</size>
            <attacher name="Alan Tam">Tam</attacher>
            
              <data encoding="base64">PGJvZHk+CjxkaXYgaWQ9InRleHQiPjwvZGl2Pgo8cD4KVHJ5IGNsaWNrL3R5cGUgYW55dGhpbmcg
YW5kIHRoZW4gcGFzdGUgaXQgZWxzZXdoZXJlLgo8L2JvZHk+CjxzY3JpcHQ+CmZ1bmN0aW9uIHNl
bGVjdEVsZW1lbnRDb250ZW50cyhlbCkgewogICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKICAgIHJhbmdlLnNlbGVjdE5vZGVDb250ZW50cyhlbCk7CiAgICB2YXIgc2VsID0g
d2luZG93LmdldFNlbGVjdGlvbigpOwogICAgc2VsLnJlbW92ZUFsbFJhbmdlcygpOwogICAgc2Vs
LmFkZFJhbmdlKHJhbmdlKTsKfQoKdmFyIHRleHROb2RlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInRleHQiKTsKZnVuY3Rpb24gY29weVRleHQoKSB7CiAgICB0ZXh0Tm9kZS5pbm5lckhUTUwg
PSBNYXRoLnJhbmRvbSgpOwogICAgc2VsZWN0RWxlbWVudENvbnRlbnRzKHRleHROb2RlKTsKICAg
IGRvY3VtZW50LmV4ZWNDb21tYW5kKCJjb3B5Iik7Cn0Kd2luZG93LmFkZEV2ZW50TGlzdGVuZXIo
ImNsaWNrIiwgY29weVRleHQpOwpkb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoImtleWRv
d24iLCBjb3B5VGV4dCk7Cjwvc2NyaXB0PgoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273921</attachid>
            <date>2016-03-13 20:58:06 -0700</date>
            <delta_ts>2016-03-13 21:02:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146336-20160313205754.patch</filename>
            <type>text/plain</type>
            <size>24993</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5ODA5MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDE2LTAzLTEzICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50IHVucHJpdmlsZWdlZCBl
eGVjQ29tbWFuZCgiY29weSIpIGFuZCBleGVjQ29tbWFuZCgiY3V0IikKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzI0MzU0NDA2PgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTQ2MzM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGVzdDogZWRpdGluZy9leGVjQ29tbWFuZC9jbGlwYm9hcmQtYWNjZXNzLXdp
dGgtdXNlci1nZXN0dXJlLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgQWRkIG5ldyBmaWxlcy4KKworICAgICAgICAqIGVkaXRpbmcv
Q2xpcGJvYXJkQWNjZXNzUG9saWN5Lmg6CisgICAgICAgIEFkZGVkLgorCisgICAgICAgICogZWRp
dGluZy9FZGl0b3JDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRlZmF1bHRWYWx1ZUZv
clN1cHBvcnRlZENvcHlDdXQpOgorICAgICAgICAoV2ViQ29yZTo6c3VwcG9ydGVkQ29weUN1dCk6
CisgICAgICAgIE1hdGNoIG90aGVyIGJyb3dzZXJzIGFuZCBhbGxvdyB0aGUgY29weSBhbmQgY3V0
IGNvbW1hbmRzCisgICAgICAgIHRvIGJlIGV4ZWN1dGVkIHdoZW4gdGhlcmUgaXMgYSB1c2VyIGdl
c3R1cmUuCisKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmg6CisgICAgICAgIEFkZCBpbmNsdWRl
IG9mIENsaXBib2FyZEFjY2Vzc1BvbGljeS5oLgorCisgICAgICAgICogcGFnZS9TZXR0aW5ncy5p
bjoKKyAgICAgICAgQWRkIG5ldyBzZXR0aW5nIGZvciBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kKKwog
MjAxNi0wMy0xMyAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBS
RUdSRVNTSU9OIChyMTkwODQwKTogY3Jhc2ggaW5zaWRlIGRldGFpbHMgZWxlbWVudCdzIHNsb3RO
YW1lRnVuY3Rpb24KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE5ODA5MCkKKysrIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjczMyw2
ICsyNzMzLDcgQEAKIAkJN0MzM0YzNUExQjRBMDQ0ODAwNTAyQ0FGIC8qIEpTQ2hhcmFjdGVyRGF0
YUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QzMzRjM1ODFCNEEwNDQ4MDA1MDJDQUYgLyogSlNDaGFyYWN0ZXJEYXRhQ3VzdG9tLmNwcCAq
LzsgfTsKIAkJN0MzM0YzNUUxQjRBMDRDRTAwNTAyQ0FGIC8qIEpTRG9jdW1lbnRUeXBlQ3VzdG9t
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMzNG
MzVDMUI0QTA0Q0UwMDUwMkNBRiAvKiBKU0RvY3VtZW50VHlwZUN1c3RvbS5jcHAgKi87IH07CiAJ
CTdDMzNGMzYyMUI0QTA1MDQwMDUwMkNBRiAvKiBKU0RvY3VtZW50RnJhZ21lbnRDdXN0b20uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzM0YzNjAx
QjRBMDUwNDAwNTAyQ0FGIC8qIEpTRG9jdW1lbnRGcmFnbWVudEN1c3RvbS5jcHAgKi87IH07CisJ
CTdDM0E5MUU2MUM5NjNCODgwMEQxQTdFMyAvKiBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDM0E5MUU1MUM5NjNC
ODgwMEQxQTdFMyAvKiBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QzNCNzk3MTE5MDg3NTdCMDBCNDdBMkQg
LyogVXNlck1lc3NhZ2VIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdDM0I3OTZGMTkwODc1N0IwMEI0N0EyRCAvKiBVc2VyTWVzc2FnZUhh
bmRsZXIuY3BwICovOyB9OwogCQk3QzNCNzk3MjE5MDg3NTdCMDBCNDdBMkQgLyogVXNlck1lc3Nh
Z2VIYW5kbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QzNCNzk3MDE5MDg3NTdCMDBCNDdBMkQgLyogVXNlck1lc3NhZ2VIYW5kbGVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0MzRTUxMEExOERG
OEYzNTAwQzExMkY3IC8qIEhUTUxDb252ZXJ0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDM0U1MTA4MThERjhGMzUwMEMxMTJGNyAvKiBIVE1MQ29u
dmVydGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTEwMzY5LDYgKzEwMzcwLDcgQEAKIAkJN0MzM0YzNTgxQjRBMDQ0ODAwNTAyQ0FGIC8qIEpT
Q2hhcmFjdGVyRGF0YUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU0NoYXJhY3RlckRhdGFDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3QzMzRjM1QzFCNEEwNENFMDA1MDJDQUYgLyogSlNEb2N1bWVudFR5cGVDdXN0b20uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEb2N1bWVudFR5cGVDdXN0
b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzMzRjM2MDFCNEEwNTA0MDA1
MDJDQUYgLyogSlNEb2N1bWVudEZyYWdtZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTRG9jdW1lbnRGcmFnbWVudEN1c3RvbS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDM0E5MUU1MUM5NjNCODgwMEQxQTdFMyAvKiBDbGlwYm9h
cmRBY2Nlc3NQb2xpY3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2xpcGJv
YXJkQWNjZXNzUG9saWN5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDM0I3OTZG
MTkwODc1N0IwMEI0N0EyRCAvKiBVc2VyTWVzc2FnZUhhbmRsZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVXNlck1lc3NhZ2VIYW5kbGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MzQjc5NzAxOTA4NzU3QjAwQjQ3QTJEIC8qIFVzZXJNZXNz
YWdlSGFuZGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVc2VyTWVzc2Fn
ZUhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MzRTUxMDgxOERGOEYz
NTAwQzExMkY3IC8qIEhUTUxDb252ZXJ0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSFRNTENvbnZlcnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTg4
NDQsNiArMTg4NDYsNyBAQAogCQkJCTkzMzA5RDhBMDk5RTY0OTEwMDU2RTU4MSAvKiBBcHBseVN0
eWxlQ29tbWFuZC5oICovLAogCQkJCTkzMzA5RDhCMDk5RTY0OTEwMDU2RTU4MSAvKiBCcmVha0Js
b2NrcXVvdGVDb21tYW5kLmNwcCAqLywKIAkJCQk5MzMwOUQ4QzA5OUU2NDkxMDA1NkU1ODEgLyog
QnJlYWtCbG9ja3F1b3RlQ29tbWFuZC5oICovLAorCQkJCTdDM0E5MUU1MUM5NjNCODgwMEQxQTdF
MyAvKiBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kuaCAqLywKIAkJCQk5MzMwOUQ4RDA5OUU2NDkxMDA1
NkU1ODEgLyogQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwICovLAogCQkJCTkzMzA5RDhFMDk5RTY0
OTEwMDU2RTU4MSAvKiBDb21wb3NpdGVFZGl0Q29tbWFuZC5oICovLAogCQkJCUQwQjA1NTY3MDlD
NjcwMDEwMDMwN0U0MyAvKiBDcmVhdGVMaW5rQ29tbWFuZC5jcHAgKi8sCkBAIC0yNjQ5OSw2ICsy
NjUwMiw3IEBACiAJCQkJQkM0NkMxRkIwQzBEREM4RjAwMjBDRkMzIC8qIEpTQ1NTQ2hhcnNldFJ1
bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQwOUVCREMzMTZCN0YzQTYwMENCQTNGQyAvKiBKU0NT
U0ZvbnRGYWNlTG9hZEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzQ2QzFGRDBDMEREQzhG
MDAyMENGQzMgLyogSlNDU1NGb250RmFjZVJ1bGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTdDM0E5
MUU2MUM5NjNCODgwMEQxQTdFMyAvKiBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDNDZDMUZGMEMwRERDOEYwMDIwQ0ZDMyAvKiBKU0NTU0ltcG9ydFJ1bGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTMxNkZFMDcyMEU2Q0NCRUUwMEJGNjA4OCAvKiBKU0NTU0tleWZy
YW1lUnVsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE2RkUwNzQwRTZDQ0JFRTAwQkY2MDg4IC8q
IEpTQ1NTS2V5ZnJhbWVzUnVsZS5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0NsaXBib2FyZEFjY2Vzc1BvbGljeS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvQ2xpcGJvYXJkQWNjZXNzUG9saWN5LmgJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NsaXBib2FyZEFjY2Vzc1BvbGljeS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2lmbmRlZiBDbGlwYm9hcmRBY2Nlc3NQb2xpY3lfaAorI2RlZmluZSBDbGlw
Ym9hcmRBY2Nlc3NQb2xpY3lfaAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gY2xhc3Mg
Q2xpcGJvYXJkQWNjZXNzUG9saWN5IHsKKyAgICBBbGxvdywKKyAgICBEZW55LAorICAgIFJlcXVp
cmVzVXNlckdlc3R1cmUKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IENsaXBib2FyZEFjY2Vzc1BvbGljeV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvckNvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yQ29tbWFuZC5jcHAJKHJldmlzaW9uIDE5ODA5MCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3LDcgQEAKICNp
bmNsdWRlICJTdHlsZVByb3BlcnRpZXMuaCIKICNpbmNsdWRlICJUeXBpbmdDb21tYW5kLmgiCiAj
aW5jbHVkZSAiVW5saW5rQ29tbWFuZC5oIgorI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9y
LmgiCiAjaW5jbHVkZSAiVXNlclR5cGluZ0dlc3R1cmVJbmRpY2F0b3IuaCIKICNpbmNsdWRlICJo
dG1sZWRpdGluZy5oIgogI2luY2x1ZGUgIm1hcmt1cC5oIgpAQCAtMTE1NywxMiArMTE1OCwzMSBA
QCBzdGF0aWMgYm9vbCBzdXBwb3J0ZWRGcm9tTWVudU9yS2V5QmluZGluCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCitzdGF0aWMgYm9vbCBkZWZhdWx0VmFsdWVGb3JTdXBwb3J0ZWRDb3B5Q3V0KEZy
YW1lJiBmcmFtZSkKK3sKKyAgICBhdXRvJiBzZXR0aW5ncyA9IGZyYW1lLnNldHRpbmdzKCk7Cisg
ICAgaWYgKHNldHRpbmdzLmphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQoKSkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgCisgICAgc3dpdGNoIChzZXR0aW5ncy5jbGlwYm9hcmRBY2Nlc3NQ
b2xpY3koKSkgeworICAgIGNhc2UgQ2xpcGJvYXJkQWNjZXNzUG9saWN5OjpBbGxvdzoKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgY2FzZSBDbGlwYm9hcmRBY2Nlc3NQb2xpY3k6OkRlbnk6Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBjYXNlIENsaXBib2FyZEFjY2Vzc1BvbGljeTo6UmVx
dWlyZXNVc2VyR2VzdHVyZToKKyAgICAgICAgcmV0dXJuIFVzZXJHZXN0dXJlSW5kaWNhdG9yOjpw
cm9jZXNzaW5nVXNlckdlc3R1cmUoKTsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICByZXR1cm4gZmFsc2U7OworfQorCiBzdGF0aWMgYm9vbCBzdXBwb3J0ZWRDb3B5Q3V0
KEZyYW1lKiBmcmFtZSkKIHsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBib29sIGRlZmF1bHRWYWx1ZSA9IGZyYW1lLT5zZXR0aW5ncygpLmphdmFTY3JpcHRD
YW5BY2Nlc3NDbGlwYm9hcmQoKTsKKyAgICBib29sIGRlZmF1bHRWYWx1ZSA9IGRlZmF1bHRWYWx1
ZUZvclN1cHBvcnRlZENvcHlDdXQoKmZyYW1lKTsKIAogICAgIEVkaXRvckNsaWVudCogY2xpZW50
ID0gZnJhbWUtPmVkaXRvcigpLmNsaWVudCgpOwogICAgIHJldHVybiBjbGllbnQgPyBjbGllbnQt
PmNhbkNvcHlDdXQoZnJhbWUsIGRlZmF1bHRWYWx1ZSkgOiBkZWZhdWx0VmFsdWU7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9TZXR0aW5ncy5oCShyZXZpc2lvbiAxOTgwOTApCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL1NldHRpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDEzICsyNywxNCBAQAogI2lmbmRl
ZiBTZXR0aW5nc19oCiAjZGVmaW5lIFNldHRpbmdzX2gKIAorI2luY2x1ZGUgIkNsaXBib2FyZEFj
Y2Vzc1BvbGljeS5oIgogI2luY2x1ZGUgIkVkaXRpbmdCZWhhdmlvclR5cGVzLmgiCiAjaW5jbHVk
ZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2lu
LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3NNYWNyb3MuaCIKICNpbmNsdWRlICJUZXh0RmxhZ3MuaCIK
ICNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPGNocm9ubz4K
ICNpbmNsdWRlIDxydW50aW1lL1J1bnRpbWVGbGFncy5oPgogI2luY2x1ZGUgPHVuaWNvZGUvdXNj
cmlwdC5oPgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5pbgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmluCShyZXZpc2lvbiAxOTgwOTApCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmluCSh3b3JraW5nIGNvcHkpCkBAIC01Myw2
ICs1Myw3IEBAIGphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkgaW4KIGphdmFT
Y3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQgaW5pdGlhbD1mYWxzZQogc2hvdWxkUHJpbnRCYWNrZ3Jv
dW5kcyBpbml0aWFsPWZhbHNlCiB1c2VzRGFzaGJvYXJkQmFja3dhcmRDb21wYXRpYmlsaXR5TW9k
ZSBpbml0aWFsPWZhbHNlLCBjb25kaXRpb25hbD1EQVNIQk9BUkRfU1VQUE9SVAorY2xpcGJvYXJk
QWNjZXNzUG9saWN5IHR5cGU9Q2xpcGJvYXJkQWNjZXNzUG9saWN5LCBpbml0aWFsPUNsaXBib2Fy
ZEFjY2Vzc1BvbGljeTo6UmVxdWlyZXNVc2VyR2VzdHVyZQogCiB0ZXh0QXJlYXNBcmVSZXNpemFi
bGUgaW5pdGlhbD1mYWxzZSwgc2V0TmVlZHNTdHlsZVJlY2FsY0luQWxsRnJhbWVzPTEKIGF1dGhv
ckFuZFVzZXJTdHlsZXNFbmFibGVkIGluaXRpYWw9dHJ1ZSwgc2V0TmVlZHNTdHlsZVJlY2FsY0lu
QWxsRnJhbWVzPTEKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5ODA5MCkKKysrIExheW91dFRlc3RzL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE2LTAzLTEzICBTYW0g
V2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50IHVucHJpdmlsZWdl
ZCBleGVjQ29tbWFuZCgiY29weSIpIGFuZCBleGVjQ29tbWFuZCgiY3V0IikKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzI0MzU0NDA2PgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ2MzM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5kL2NsaXBib2FyZC1hY2Nlc3Mtd2l0
aC11c2VyLWdlc3R1cmUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2V4
ZWNDb21tYW5kL2NsaXBib2FyZC1hY2Nlc3Mtd2l0aC11c2VyLWdlc3R1cmUuaHRtbDogQWRkZWQu
CisgICAgICAgIEFkZCB0ZXN0IGZvciB1c2luZyBleGVjQ29tbWFuZCgiY29weSIpIGFuZCBleGVj
Q29tbWFuZCgiY3V0IikgZHVyaW5nIGEgdXNlciBnZXN0dXJlLgorCiAyMDE2LTAzLTEzICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIxOTA4
NDApOiBjcmFzaCBpbnNpZGUgZGV0YWlscyBlbGVtZW50J3Mgc2xvdE5hbWVGdW5jdGlvbgpJbmRl
eDogTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9jbGlwYm9hcmQtYWNjZXNzLXdpdGgt
dXNlci1nZXN0dXJlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0
aW5nL2V4ZWNDb21tYW5kL2NsaXBib2FyZC1hY2Nlc3Mtd2l0aC11c2VyLWdlc3R1cmUtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9j
bGlwYm9hcmQtYWNjZXNzLXdpdGgtdXNlci1nZXN0dXJlLWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDEyMSBAQAorVGhpcyB0ZXN0IGNoZWNrcyB0aGF0IEphdmFTY3JpcHQg
cHJvZ3JhbXMgY2FuIGV4ZWN1dGUgY29weSBhbmQgcGFzdGUgY29tbWFuZHMsIGJ1dCBvbmx5IGR1
cmluZyBhIHVzZXIgZ2VzdHVyZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKKwor
VGVzdGluZyBjb3B5aW5nIGFuIGVkaXRhYmxlUGFyYWdyYXBoIHJhbmdlIHdpdGhvdXQgYSB1c2Vy
IGdlc3R1cmUuCitQQVNTIGRvY3VtZW50LnF1ZXJ5Q29tbWFuZEVuYWJsZWQoJ2NvcHknKSBpcyBm
YWxzZQorUEFTUyBldmVudFNlZW5bJ2NvcHknXSBpcyBmYWxzZQorUEFTUyBkb2N1bWVudC5xdWVy
eUNvbW1hbmRTdXBwb3J0ZWQoJ2NvcHknKSBpcyBmYWxzZQorUEFTUyBldmVudFNlZW5bJ2NvcHkn
XSBpcyBmYWxzZQorUEFTUyBkb2N1bWVudC5leGVjQ29tbWFuZCgnY29weScpIGlzIGZhbHNlCitQ
QVNTIGV2ZW50U2VlblsnY29weSddIGlzIGZhbHNlCisKK1Rlc3RpbmcgY29weWluZyBhbiBlZGl0
YWJsZVBhcmFncmFwaCBjYXJldCB3aXRob3V0IGEgdXNlciBnZXN0dXJlLgorUEFTUyBkb2N1bWVu
dC5xdWVyeUNvbW1hbmRFbmFibGVkKCdjb3B5JykgaXMgZmFsc2UKK1BBU1MgZXZlbnRTZWVuWydj
b3B5J10gaXMgZmFsc2UKK1BBU1MgZG9jdW1lbnQucXVlcnlDb21tYW5kU3VwcG9ydGVkKCdjb3B5
JykgaXMgZmFsc2UKK1BBU1MgZXZlbnRTZWVuWydjb3B5J10gaXMgZmFsc2UKK1BBU1MgZG9jdW1l
bnQuZXhlY0NvbW1hbmQoJ2NvcHknKSBpcyBmYWxzZQorUEFTUyBldmVudFNlZW5bJ2NvcHknXSBp
cyBmYWxzZQorCitUZXN0aW5nIGNvcHlpbmcgYW4gbm9uLWVkaXRhYmxlIHJhbmdlIHdpdGhvdXQg
YSB1c2VyIGdlc3R1cmUuCitQQVNTIGRvY3VtZW50LnF1ZXJ5Q29tbWFuZEVuYWJsZWQoJ2NvcHkn
KSBpcyBmYWxzZQorUEFTUyBldmVudFNlZW5bJ2NvcHknXSBpcyBmYWxzZQorUEFTUyBkb2N1bWVu
dC5xdWVyeUNvbW1hbmRTdXBwb3J0ZWQoJ2NvcHknKSBpcyBmYWxzZQorUEFTUyBldmVudFNlZW5b
J2NvcHknXSBpcyBmYWxzZQorUEFTUyBkb2N1bWVudC5leGVjQ29tbWFuZCgnY29weScpIGlzIGZh
bHNlCitQQVNTIGV2ZW50U2VlblsnY29weSddIGlzIGZhbHNlCisKK1Rlc3RpbmcgY29weWluZyBh
biBub24tZWRpdGFibGUgY2FyZXQgd2l0aG91dCBhIHVzZXIgZ2VzdHVyZS4KK1BBU1MgZG9jdW1l
bnQucXVlcnlDb21tYW5kRW5hYmxlZCgnY29weScpIGlzIGZhbHNlCitQQVNTIGV2ZW50U2Vlblsn
Y29weSddIGlzIGZhbHNlCitQQVNTIGRvY3VtZW50LnF1ZXJ5Q29tbWFuZFN1cHBvcnRlZCgnY29w
eScpIGlzIGZhbHNlCitQQVNTIGV2ZW50U2VlblsnY29weSddIGlzIGZhbHNlCitQQVNTIGRvY3Vt
ZW50LmV4ZWNDb21tYW5kKCdjb3B5JykgaXMgZmFsc2UKK1BBU1MgZXZlbnRTZWVuWydjb3B5J10g
aXMgZmFsc2UKKworVGVzdGluZyBjb3B5aW5nIGFuIGVkaXRhYmxlIHBsYWludC10ZXh0IHJhbmdl
IHdpdGhvdXQgYSB1c2VyIGdlc3R1cmUuCitQQVNTIGRvY3VtZW50LnF1ZXJ5Q29tbWFuZEVuYWJs
ZWQoJ2NvcHknKSBpcyBmYWxzZQorUEFTUyBldmVudFNlZW5bJ2NvcHknXSBpcyBmYWxzZQorUEFT
UyBkb2N1bWVudC5xdWVyeUNvbW1hbmRTdXBwb3J0ZWQoJ2NvcHknKSBpcyBmYWxzZQorUEFTUyBl
dmVudFNlZW5bJ2NvcHknXSBpcyBmYWxzZQorUEFTUyBkb2N1bWVudC5leGVjQ29tbWFuZCgnY29w
eScpIGlzIGZhbHNlCitQQVNTIGV2ZW50U2VlblsnY29weSddIGlzIGZhbHNlCisKK1Rlc3Rpbmcg
Y29weWluZyBhbiBlZGl0YWJsZSBwbGFpbnQtdGV4dCBjYXJldCB3aXRob3V0IGEgdXNlciBnZXN0
dXJlLgorUEFTUyBkb2N1bWVudC5xdWVyeUNvbW1hbmRFbmFibGVkKCdjb3B5JykgaXMgZmFsc2UK
K1BBU1MgZXZlbnRTZWVuWydjb3B5J10gaXMgZmFsc2UKK1BBU1MgZG9jdW1lbnQucXVlcnlDb21t
YW5kU3VwcG9ydGVkKCdjb3B5JykgaXMgZmFsc2UKK1BBU1MgZXZlbnRTZWVuWydjb3B5J10gaXMg
ZmFsc2UKK1BBU1MgZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2NvcHknKSBpcyBmYWxzZQorUEFTUyBl
dmVudFNlZW5bJ2NvcHknXSBpcyBmYWxzZQorCitUZXN0aW5nIGNvcHlpbmcgd2hlbiB0aGVyZSBp
cyBubyBzZWxlY3Rpb24gd2l0aG91dCBhIHVzZXIgZ2VzdHVyZS4KK1BBU1MgZG9jdW1lbnQucXVl
cnlDb21tYW5kRW5hYmxlZCgnY29weScpIGlzIGZhbHNlCitQQVNTIGV2ZW50U2VlblsnY29weSdd
IGlzIGZhbHNlCitQQVNTIGRvY3VtZW50LnF1ZXJ5Q29tbWFuZFN1cHBvcnRlZCgnY29weScpIGlz
IGZhbHNlCitQQVNTIGV2ZW50U2VlblsnY29weSddIGlzIGZhbHNlCitQQVNTIGRvY3VtZW50LmV4
ZWNDb21tYW5kKCdjb3B5JykgaXMgZmFsc2UKK1BBU1MgZXZlbnRTZWVuWydjb3B5J10gaXMgZmFs
c2UKKworVGVzdGluZyBjdXR0aW5nIGFuIGVkaXRhYmxlUGFyYWdyYXBoIHJhbmdlIHdpdGhvdXQg
YSB1c2VyIGdlc3R1cmUuCitQQVNTIGRvY3VtZW50LnF1ZXJ5Q29tbWFuZEVuYWJsZWQoJ2N1dCcp
IGlzIGZhbHNlCitQQVNTIGV2ZW50U2VlblsnY3V0J10gaXMgZmFsc2UKK1BBU1MgZG9jdW1lbnQu
cXVlcnlDb21tYW5kU3VwcG9ydGVkKCdjdXQnKSBpcyBmYWxzZQorUEFTUyBldmVudFNlZW5bJ2N1
dCddIGlzIGZhbHNlCitQQVNTIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdjdXQnKSBpcyBmYWxzZQor
UEFTUyBldmVudFNlZW5bJ2N1dCddIGlzIGZhbHNlCisKK1Rlc3RpbmcgY3V0dGluZyBhbiBlZGl0
YWJsZVBhcmFncmFwaCBjYXJldCB3aXRob3V0IGEgdXNlciBnZXN0dXJlLgorUEFTUyBkb2N1bWVu
dC5xdWVyeUNvbW1hbmRFbmFibGVkKCdjdXQnKSBpcyBmYWxzZQorUEFTUyBldmVudFNlZW5bJ2N1
dCddIGlzIGZhbHNlCitQQVNTIGRvY3VtZW50LnF1ZXJ5Q29tbWFuZFN1cHBvcnRlZCgnY3V0Jykg
aXMgZmFsc2UKK1BBU1MgZXZlbnRTZWVuWydjdXQnXSBpcyBmYWxzZQorUEFTUyBkb2N1bWVudC5l
eGVjQ29tbWFuZCgnY3V0JykgaXMgZmFsc2UKK1BBU1MgZXZlbnRTZWVuWydjdXQnXSBpcyBmYWxz
ZQorCitUZXN0aW5nIGN1dHRpbmcgYW4gbm9uLWVkaXRhYmxlIHJhbmdlIHdpdGhvdXQgYSB1c2Vy
IGdlc3R1cmUuCitQQVNTIGRvY3VtZW50LnF1ZXJ5Q29tbWFuZEVuYWJsZWQoJ2N1dCcpIGlzIGZh
bHNlCitQQVNTIGV2ZW50U2VlblsnY3V0J10gaXMgZmFsc2UKK1BBU1MgZG9jdW1lbnQucXVlcnlD
b21tYW5kU3VwcG9ydGVkKCdjdXQnKSBpcyBmYWxzZQorUEFTUyBldmVudFNlZW5bJ2N1dCddIGlz
IGZhbHNlCitQQVNTIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdjdXQnKSBpcyBmYWxzZQorUEFTUyBl
dmVudFNlZW5bJ2N1dCddIGlzIGZhbHNlCisKK1Rlc3RpbmcgY3V0dGluZyBhbiBub24tZWRpdGFi
bGUgY2FyZXQgd2l0aG91dCBhIHVzZXIgZ2VzdHVyZS4KK1BBU1MgZG9jdW1lbnQucXVlcnlDb21t
YW5kRW5hYmxlZCgnY3V0JykgaXMgZmFsc2UKK1BBU1MgZXZlbnRTZWVuWydjdXQnXSBpcyBmYWxz
ZQorUEFTUyBkb2N1bWVudC5xdWVyeUNvbW1hbmRTdXBwb3J0ZWQoJ2N1dCcpIGlzIGZhbHNlCitQ
QVNTIGV2ZW50U2VlblsnY3V0J10gaXMgZmFsc2UKK1BBU1MgZG9jdW1lbnQuZXhlY0NvbW1hbmQo
J2N1dCcpIGlzIGZhbHNlCitQQVNTIGV2ZW50U2VlblsnY3V0J10gaXMgZmFsc2UKKworVGVzdGlu
ZyBjdXR0aW5nIGFuIGVkaXRhYmxlIHBsYWludC10ZXh0IHJhbmdlIHdpdGhvdXQgYSB1c2VyIGdl
c3R1cmUuCitQQVNTIGRvY3VtZW50LnF1ZXJ5Q29tbWFuZEVuYWJsZWQoJ2N1dCcpIGlzIGZhbHNl
CitQQVNTIGV2ZW50U2VlblsnY3V0J10gaXMgZmFsc2UKK1BBU1MgZG9jdW1lbnQucXVlcnlDb21t
YW5kU3VwcG9ydGVkKCdjdXQnKSBpcyBmYWxzZQorUEFTUyBldmVudFNlZW5bJ2N1dCddIGlzIGZh
bHNlCitQQVNTIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdjdXQnKSBpcyBmYWxzZQorUEFTUyBldmVu
dFNlZW5bJ2N1dCddIGlzIGZhbHNlCisKK1Rlc3RpbmcgY3V0dGluZyBhbiBlZGl0YWJsZSBwbGFp
bnQtdGV4dCBjYXJldCB3aXRob3V0IGEgdXNlciBnZXN0dXJlLgorUEFTUyBkb2N1bWVudC5xdWVy
eUNvbW1hbmRFbmFibGVkKCdjdXQnKSBpcyBmYWxzZQorUEFTUyBldmVudFNlZW5bJ2N1dCddIGlz
IGZhbHNlCitQQVNTIGRvY3VtZW50LnF1ZXJ5Q29tbWFuZFN1cHBvcnRlZCgnY3V0JykgaXMgZmFs
c2UKK1BBU1MgZXZlbnRTZWVuWydjdXQnXSBpcyBmYWxzZQorUEFTUyBkb2N1bWVudC5leGVjQ29t
bWFuZCgnY3V0JykgaXMgZmFsc2UKK1BBU1MgZXZlbnRTZWVuWydjdXQnXSBpcyBmYWxzZQorCitU
ZXN0aW5nIGN1dHRpbmcgd2hlbiB0aGVyZSBpcyBubyBzZWxlY3Rpb24gd2l0aG91dCBhIHVzZXIg
Z2VzdHVyZS4KK1BBU1MgZG9jdW1lbnQucXVlcnlDb21tYW5kRW5hYmxlZCgnY3V0JykgaXMgZmFs
c2UKK1BBU1MgZXZlbnRTZWVuWydjdXQnXSBpcyBmYWxzZQorUEFTUyBkb2N1bWVudC5xdWVyeUNv
bW1hbmRTdXBwb3J0ZWQoJ2N1dCcpIGlzIGZhbHNlCitQQVNTIGV2ZW50U2VlblsnY3V0J10gaXMg
ZmFsc2UKK1BBU1MgZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2N1dCcpIGlzIGZhbHNlCitQQVNTIGV2
ZW50U2VlblsnY3V0J10gaXMgZmFsc2UKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5k
L2NsaXBib2FyZC1hY2Nlc3Mtd2l0aC11c2VyLWdlc3R1cmUuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2NsaXBib2FyZC1hY2Nlc3Mtd2l0aC11c2Vy
LWdlc3R1cmUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0Nv
bW1hbmQvY2xpcGJvYXJkLWFjY2Vzcy13aXRoLXVzZXItZ2VzdHVyZS5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMjc1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KKworZGVzY3Jp
cHRpb24oIlRoaXMgdGVzdCBjaGVja3MgdGhhdCBKYXZhU2NyaXB0IHByb2dyYW1zIGNhbiBleGVj
dXRlIGNvcHkgYW5kIHBhc3RlIGNvbW1hbmRzLCBidXQgb25seSBkdXJpbmcgYSB1c2VyIGdlc3R1
cmUuIik7CisKKy8vIE92ZXJyaWRlIHRoZSB0ZXN0IHJ1bm5lciBkZWZhdWx0IGJlZmF2aW9yIG9m
IGFsbG93aW5nIGFsbCBrZXlib2FyZCBhY2Nlc3MsIGFuZCBhY3QgbW9yZSBsaWtlCisvLyBhIGJy
b3dzZXIuCitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgd2luZG93LnRlc3RSdW5uZXIuc2V0
SmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZChmYWxzZSk7CisKK2Z1bmN0aW9uIGNsZWFyU2Vs
ZWN0aW9uQ29udGFpbmVyKCkKK3sKKyAgICB2YXIgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2NvbnRhaW5lcicpOworICAgIGlmIChjb250YWluZXIpCisgICAgICAgIGNvbnRh
aW5lci5yZW1vdmUoKTsKK30KKworZnVuY3Rpb24gcmVzZXRTZWxlY3Rpb25Db250YWluZXIoKQor
eworICAgIGNsZWFyU2VsZWN0aW9uQ29udGFpbmVyKCk7CisKKyAgICB2YXIgY29udGFpbmVyID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgY29udGFpbmVyLmlkID0gImNvbnRh
aW5lciI7CisKKyAgICB2YXIgbm9uRWRpdGFibGVQYXJhZ3JhcGggPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJwIik7CisgICAgbm9uRWRpdGFibGVQYXJhZ3JhcGguaWQgPSAibm9uRWRpdGFibGVQ
YXJhZ3JhcGgiOworICAgIG5vbkVkaXRhYmxlUGFyYWdyYXBoLmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKCJ4IikpOworICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChub25FZGl0
YWJsZVBhcmFncmFwaCk7CisKKyAgICB2YXIgZWRpdGFibGVQYXJhZ3JhcGggPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJwIik7CisgICAgZWRpdGFibGVQYXJhZ3JhcGguaWQgPSAiZWRpdGFibGVQ
YXJhZ3JhcGgiOworICAgIGVkaXRhYmxlUGFyYWdyYXBoLmFwcGVuZENoaWxkKGRvY3VtZW50LmNy
ZWF0ZVRleHROb2RlKCJ4IikpOworICAgIGVkaXRhYmxlUGFyYWdyYXBoLnNldEF0dHJpYnV0ZSgi
Y29udGVudEVkaXRhYmxlIiwgInRydWUiKTsKKyAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoZWRp
dGFibGVQYXJhZ3JhcGgpOworCisgICAgdmFyIGVkaXRhYmxlUGxhaW5UZXh0UGFyYWdyYXBoID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicCIpOworICAgIGVkaXRhYmxlUGxhaW5UZXh0UGFyYWdy
YXBoLmlkID0gImVkaXRhYmxlUGxhaW5UZXh0UGFyYWdyYXBoIjsKKyAgICBlZGl0YWJsZVBsYWlu
VGV4dFBhcmFncmFwaC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgieCIpKTsK
KyAgICBlZGl0YWJsZVBsYWluVGV4dFBhcmFncmFwaC5zZXRBdHRyaWJ1dGUoImNvbnRlbnRFZGl0
YWJsZSIsICJwbGFpbnRleHQtb25seSIpOworICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChlZGl0
YWJsZVBsYWluVGV4dFBhcmFncmFwaCk7CisKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxk
KGNvbnRhaW5lcik7Cit9CisKK2Z1bmN0aW9uIG1ha2VTZWxlY3Rpb24oZWxlbWVudElkLCBzZWxl
Y3Rpb25TdGFydCwgc2VsZWN0aW9uRW5kKQoreworICAgIHJlc2V0U2VsZWN0aW9uQ29udGFpbmVy
KCk7CisKKyAgICB2YXIgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpOworICAgIHNl
bGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKTsKKworICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKTsKKworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQoZWxlbWVudC5maXJzdENoaWxkLCBzZWxl
Y3Rpb25TdGFydCk7CisgICAgcmFuZ2Uuc2V0RW5kKGVsZW1lbnQuZmlyc3RDaGlsZCwgc2VsZWN0
aW9uRW5kKTsKKyAgICBzZWxlY3Rpb24uYWRkUmFuZ2UocmFuZ2UpOworfQorCit2YXIgZXZlbnRT
ZWVuID0geworICAgICJjb3B5IjogZmFsc2UsCisgICAgImN1dCI6IGZhbHNlLAorICAgICJiZWZv
cmVjb3B5IjogZmFsc2UsCisgICAgImJlZm9yZWN1dCI6IGZhbHNlCit9CisKK2Z1bmN0aW9uIHJl
c2V0U2VlbkZsYWdzKCkKK3sKKyAgICBldmVudFNlZW4uY29weSA9IGZhbHNlOworICAgIGV2ZW50
U2Vlbi5jdXQgPSBmYWxzZTsKKyAgICBldmVudFNlZW4uYmVmb3JlY29weSA9IGZhbHNlOworICAg
IGV2ZW50U2Vlbi5iZWZvcmVjdXQgPSBmYWxzZTsKK30KKworZG9jdW1lbnQuYm9keS5vbmNvcHkg
PSBmdW5jdGlvbihldmVudCkKK3sKKyAgICBldmVudFNlZW5bImNvcHkiXSA9IHRydWU7Cit9CisK
K2RvY3VtZW50LmJvZHkub25jdXQgPSBmdW5jdGlvbigpCit7CisgICAgZXZlbnRTZWVuWyJjdXQi
XSA9IHRydWU7Cit9CisKK2RvY3VtZW50LmJvZHkub25iZWZvcmVjb3B5ID0gZnVuY3Rpb24oKQor
eworICAgIGV2ZW50U2VlblsiYmVmb3JlY29weSJdID0gdHJ1ZTsKK30KKworZG9jdW1lbnQuYm9k
eS5vbmJlZm9yZWN1dCA9IGZ1bmN0aW9uKCkKK3sKKyAgICBldmVudFNlZW5bImJlZm9yZWN1dCJd
ID0gdHJ1ZTsKK30KKworZnVuY3Rpb24gdGVzdChjb21tYW5kLCBlbmFibGVkRXhwZWN0ZWQsIHN1
cHBvcnRlZEV4cGVjdGVkLCBleGVjdXRlZEV4cGVjdGVkKQoreworICAgIHJlc2V0U2VlbkZsYWdz
KCk7CisgICAgc2hvdWxkQmUoImRvY3VtZW50LnF1ZXJ5Q29tbWFuZEVuYWJsZWQoJyIgKyBjb21t
YW5kICsiJykiLCAiIiArIGVuYWJsZWRFeHBlY3RlZCk7CisgICAgc2hvdWxkQmVGYWxzZSgiZXZl
bnRTZWVuWyciICsgY29tbWFuZCArIiddIik7CisKKyAgICByZXNldFNlZW5GbGFncygpOworICAg
IHNob3VsZEJlKCJkb2N1bWVudC5xdWVyeUNvbW1hbmRTdXBwb3J0ZWQoJyIgKyBjb21tYW5kICsi
JykiLCAiIiArIHN1cHBvcnRlZEV4cGVjdGVkKTsKKyAgICBzaG91bGRCZUZhbHNlKCJldmVudFNl
ZW5bJyIgKyBjb21tYW5kICsiJ10iKTsKKworICAgIHJlc2V0U2VlbkZsYWdzKCk7CisgICAgc2hv
dWxkQmUoImRvY3VtZW50LmV4ZWNDb21tYW5kKCciICsgY29tbWFuZCArIicpIiwgIiIgKyBleGVj
dXRlZEV4cGVjdGVkKTsKKyAgICBzaG91bGRCZSgiZXZlbnRTZWVuWyciICsgY29tbWFuZCArIidd
IiwgIiIgKyBleGVjdXRlZEV4cGVjdGVkKTsKK30KKworZnVuY3Rpb24gaGVhZGVyKG1zZykKK3sK
KyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcobXNnKTsKK30KKwordmFyIGJ1dHRvbkZvckNvcHkg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJidXR0b24iKTsKK2J1dHRvbkZvckNvcHkuaWQgPSAi
Y29weUJ1dHRvbiI7CitidXR0b25Gb3JDb3B5LnRleHRDb250ZW50ID0gIkNvcHkiOworYnV0dG9u
Rm9yQ29weS5vbmNsaWNrID0gZnVuY3Rpb24oKQoreworICAgIGhlYWRlcigiVGVzdGluZyBjb3B5
aW5nIGFuIGVkaXRhYmxlUGFyYWdyYXBoIHJhbmdlIGluIGEgdXNlciBnZXN0dXJlLiIpCisgICAg
bWFrZVNlbGVjdGlvbigiZWRpdGFibGVQYXJhZ3JhcGgiLCAwLCAxKTsKKyAgICB0ZXN0KCJjb3B5
IiwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7CisKKyAgICBoZWFkZXIoIlRlc3RpbmcgY29weWluZyBhbiBl
ZGl0YWJsZVBhcmFncmFwaCBjYXJldCBpbiBhIHVzZXIgZ2VzdHVyZS4iKQorICAgIG1ha2VTZWxl
Y3Rpb24oImVkaXRhYmxlUGFyYWdyYXBoIiwgMCwgMCk7CisgICAgdGVzdCgiY29weSIsIGZhbHNl
LCB0cnVlLCB0cnVlKTsKKworICAgIGhlYWRlcigiVGVzdGluZyBjb3B5aW5nIGFuIG5vbi1lZGl0
YWJsZSByYW5nZSBpbiBhIHVzZXIgZ2VzdHVyZS4iKQorICAgIG1ha2VTZWxlY3Rpb24oIm5vbkVk
aXRhYmxlUGFyYWdyYXBoIiwgMCwgMSk7CisgICAgdGVzdCgiY29weSIsIHRydWUsIHRydWUsIHRy
dWUpOworCisgICAgaGVhZGVyKCJUZXN0aW5nIGNvcHlpbmcgYW4gbm9uLWVkaXRhYmxlIGNhcmV0
IGluIGEgdXNlciBnZXN0dXJlLiIpCisgICAgbWFrZVNlbGVjdGlvbigibm9uRWRpdGFibGVQYXJh
Z3JhcGgiLCAwLCAwKTsKKyAgICB0ZXN0KCJjb3B5IiwgZmFsc2UsIHRydWUsIHRydWUpOworCisg
ICAgaGVhZGVyKCJUZXN0aW5nIGNvcHlpbmcgYW4gZWRpdGFibGUgcGxhaW50LXRleHQgcmFuZ2Ug
aW4gYSB1c2VyIGdlc3R1cmUuIikKKyAgICBtYWtlU2VsZWN0aW9uKCJlZGl0YWJsZVBsYWluVGV4
dFBhcmFncmFwaCIsIDAsIDEpOworICAgIHRlc3QoImNvcHkiLCB0cnVlLCB0cnVlLCB0cnVlKTsK
KworICAgIGhlYWRlcigiVGVzdGluZyBjb3B5aW5nIGFuIGVkaXRhYmxlIHBsYWludC10ZXh0IGNh
cmV0IGluIGEgdXNlciBnZXN0dXJlLiIpCisgICAgbWFrZVNlbGVjdGlvbigiZWRpdGFibGVQbGFp
blRleHRQYXJhZ3JhcGgiLCAwLCAwKTsKKyAgICB0ZXN0KCJjb3B5IiwgZmFsc2UsIHRydWUsIHRy
dWUpOworCisgICAgaGVhZGVyKCJUZXN0aW5nIGNvcHlpbmcgd2hlbiB0aGVyZSBpcyBubyBzZWxl
Y3Rpb24gaW4gYSB1c2VyIGdlc3R1cmUuIikKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkucmVt
b3ZlQWxsUmFuZ2VzKCk7CisgICAgdGVzdCgiY29weSIsIGZhbHNlLCB0cnVlLCB0cnVlKTsKKwor
ICAgIGNsZWFyU2VsZWN0aW9uQ29udGFpbmVyKCk7Cit9Citkb2N1bWVudC5ib2R5LmFwcGVuZENo
aWxkKGJ1dHRvbkZvckNvcHkpOworCit2YXIgYnV0dG9uRm9yQ3V0ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiYnV0dG9uIik7CitidXR0b25Gb3JDdXQuaWQgPSAiY3V0QnV0dG9uIjsKK2J1dHRv
bkZvckN1dC50ZXh0Q29udGVudCA9ICJDdXQiOworYnV0dG9uRm9yQ3V0Lm9uY2xpY2sgPSBmdW5j
dGlvbigpCit7CisgICAgaGVhZGVyKCJUZXN0aW5nIGN1dHRpbmcgYW4gZWRpdGFibGVQYXJhZ3Jh
cGggcmFuZ2UgaW4gYSB1c2VyIGdlc3R1cmUuIikKKyAgICBtYWtlU2VsZWN0aW9uKCJlZGl0YWJs
ZVBhcmFncmFwaCIsIDAsIDEpOworICAgIHRlc3QoImN1dCIsIHRydWUsIHRydWUsIHRydWUpOwor
CisgICAgaGVhZGVyKCJUZXN0aW5nIGN1dHRpbmcgYW4gZWRpdGFibGVQYXJhZ3JhcGggY2FyZXQg
aW4gYSB1c2VyIGdlc3R1cmUuIikKKyAgICBtYWtlU2VsZWN0aW9uKCJlZGl0YWJsZVBhcmFncmFw
aCIsIDAsIDApOworICAgIHRlc3QoImN1dCIsIGZhbHNlLCB0cnVlLCB0cnVlKTsKKworICAgIGhl
YWRlcigiVGVzdGluZyBjdXR0aW5nIGFuIG5vbi1lZGl0YWJsZSByYW5nZSBpbiBhIHVzZXIgZ2Vz
dHVyZS4iKQorICAgIG1ha2VTZWxlY3Rpb24oIm5vbkVkaXRhYmxlUGFyYWdyYXBoIiwgMCwgMSk7
CisgICAgdGVzdCgiY3V0IiwgZmFsc2UsIHRydWUsIHRydWUpOworCisgICAgaGVhZGVyKCJUZXN0
aW5nIGN1dHRpbmcgYW4gbm9uLWVkaXRhYmxlIGNhcmV0IGluIGEgdXNlciBnZXN0dXJlLiIpCisg
ICAgbWFrZVNlbGVjdGlvbigibm9uRWRpdGFibGVQYXJhZ3JhcGgiLCAwLCAwKTsKKyAgICB0ZXN0
KCJjdXQiLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSk7CisKKyAgICBoZWFkZXIoIlRlc3RpbmcgY3V0dGlu
ZyBhbiBlZGl0YWJsZSBwbGFpbnQtdGV4dCByYW5nZSBpbiBhIHVzZXIgZ2VzdHVyZS4iKQorICAg
IG1ha2VTZWxlY3Rpb24oImVkaXRhYmxlUGxhaW5UZXh0UGFyYWdyYXBoIiwgMCwgMSk7CisgICAg
dGVzdCgiY3V0IiwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7CisKKyAgICBoZWFkZXIoIlRlc3RpbmcgY3V0
dGluZyBhbiBlZGl0YWJsZSBwbGFpbnQtdGV4dCBjYXJldCBpbiBhIHVzZXIgZ2VzdHVyZS4iKQor
ICAgIG1ha2VTZWxlY3Rpb24oImVkaXRhYmxlUGxhaW5UZXh0UGFyYWdyYXBoIiwgMCwgMCk7Cisg
ICAgdGVzdCgiY3V0IiwgZmFsc2UsIHRydWUsIHRydWUpOworCisgICAgaGVhZGVyKCJUZXN0aW5n
IGN1dHRpbmcgd2hlbiB0aGVyZSBpcyBubyBzZWxlY3Rpb24gaW4gYSB1c2VyIGdlc3R1cmUuIikK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkucmVtb3ZlQWxsUmFuZ2VzKCk7CisgICAgdGVzdCgi
Y3V0IiwgZmFsc2UsIHRydWUsIHRydWUpOworCisgICAgY2xlYXJTZWxlY3Rpb25Db250YWluZXIo
KTsKK30KK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYnV0dG9uRm9yQ3V0KTsKKworLy8gRmly
c3QgdGVzdCBjb3B5L2N1dCB3aXRob3V0IHVzZXIgZ2VzdHVyZXMuCitoZWFkZXIoIlRlc3Rpbmcg
Y29weWluZyBhbiBlZGl0YWJsZVBhcmFncmFwaCByYW5nZSB3aXRob3V0IGEgdXNlciBnZXN0dXJl
LiIpCittYWtlU2VsZWN0aW9uKCJlZGl0YWJsZVBhcmFncmFwaCIsIDAsIDEpOwordGVzdCgiY29w
eSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpOworCitoZWFkZXIoIlRlc3RpbmcgY29weWluZyBhbiBl
ZGl0YWJsZVBhcmFncmFwaCBjYXJldCB3aXRob3V0IGEgdXNlciBnZXN0dXJlLiIpCittYWtlU2Vs
ZWN0aW9uKCJlZGl0YWJsZVBhcmFncmFwaCIsIDAsIDApOwordGVzdCgiY29weSIsIGZhbHNlLCBm
YWxzZSwgZmFsc2UpOworCitoZWFkZXIoIlRlc3RpbmcgY29weWluZyBhbiBub24tZWRpdGFibGUg
cmFuZ2Ugd2l0aG91dCBhIHVzZXIgZ2VzdHVyZS4iKQorbWFrZVNlbGVjdGlvbigibm9uRWRpdGFi
bGVQYXJhZ3JhcGgiLCAwLCAxKTsKK3Rlc3QoImNvcHkiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsK
KworaGVhZGVyKCJUZXN0aW5nIGNvcHlpbmcgYW4gbm9uLWVkaXRhYmxlIGNhcmV0IHdpdGhvdXQg
YSB1c2VyIGdlc3R1cmUuIikKK21ha2VTZWxlY3Rpb24oIm5vbkVkaXRhYmxlUGFyYWdyYXBoIiwg
MCwgMCk7Cit0ZXN0KCJjb3B5IiwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7CisKK2hlYWRlcigiVGVz
dGluZyBjb3B5aW5nIGFuIGVkaXRhYmxlIHBsYWludC10ZXh0IHJhbmdlIHdpdGhvdXQgYSB1c2Vy
IGdlc3R1cmUuIikKK21ha2VTZWxlY3Rpb24oImVkaXRhYmxlUGxhaW5UZXh0UGFyYWdyYXBoIiwg
MCwgMSk7Cit0ZXN0KCJjb3B5IiwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7CisKK2hlYWRlcigiVGVz
dGluZyBjb3B5aW5nIGFuIGVkaXRhYmxlIHBsYWludC10ZXh0IGNhcmV0IHdpdGhvdXQgYSB1c2Vy
IGdlc3R1cmUuIikKK21ha2VTZWxlY3Rpb24oImVkaXRhYmxlUGxhaW5UZXh0UGFyYWdyYXBoIiwg
MCwgMCk7Cit0ZXN0KCJjb3B5IiwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7CisKK2hlYWRlcigiVGVz
dGluZyBjb3B5aW5nIHdoZW4gdGhlcmUgaXMgbm8gc2VsZWN0aW9uIHdpdGhvdXQgYSB1c2VyIGdl
c3R1cmUuIikKK3dpbmRvdy5nZXRTZWxlY3Rpb24oKS5yZW1vdmVBbGxSYW5nZXMoKTsKK3Rlc3Qo
ImNvcHkiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKKworY2xlYXJTZWxlY3Rpb25Db250YWluZXIo
KTsKKworaGVhZGVyKCJUZXN0aW5nIGN1dHRpbmcgYW4gZWRpdGFibGVQYXJhZ3JhcGggcmFuZ2Ug
d2l0aG91dCBhIHVzZXIgZ2VzdHVyZS4iKQorbWFrZVNlbGVjdGlvbigiZWRpdGFibGVQYXJhZ3Jh
cGgiLCAwLCAxKTsKK3Rlc3QoImN1dCIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpOworCitoZWFkZXIo
IlRlc3RpbmcgY3V0dGluZyBhbiBlZGl0YWJsZVBhcmFncmFwaCBjYXJldCB3aXRob3V0IGEgdXNl
ciBnZXN0dXJlLiIpCittYWtlU2VsZWN0aW9uKCJlZGl0YWJsZVBhcmFncmFwaCIsIDAsIDApOwor
dGVzdCgiY3V0IiwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7CisKK2hlYWRlcigiVGVzdGluZyBjdXR0
aW5nIGFuIG5vbi1lZGl0YWJsZSByYW5nZSB3aXRob3V0IGEgdXNlciBnZXN0dXJlLiIpCittYWtl
U2VsZWN0aW9uKCJub25FZGl0YWJsZVBhcmFncmFwaCIsIDAsIDEpOwordGVzdCgiY3V0IiwgZmFs
c2UsIGZhbHNlLCBmYWxzZSk7CisKK2hlYWRlcigiVGVzdGluZyBjdXR0aW5nIGFuIG5vbi1lZGl0
YWJsZSBjYXJldCB3aXRob3V0IGEgdXNlciBnZXN0dXJlLiIpCittYWtlU2VsZWN0aW9uKCJub25F
ZGl0YWJsZVBhcmFncmFwaCIsIDAsIDApOwordGVzdCgiY3V0IiwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSk7CisKK2hlYWRlcigiVGVzdGluZyBjdXR0aW5nIGFuIGVkaXRhYmxlIHBsYWludC10ZXh0IHJh
bmdlIHdpdGhvdXQgYSB1c2VyIGdlc3R1cmUuIikKK21ha2VTZWxlY3Rpb24oImVkaXRhYmxlUGxh
aW5UZXh0UGFyYWdyYXBoIiwgMCwgMSk7Cit0ZXN0KCJjdXQiLCBmYWxzZSwgZmFsc2UsIGZhbHNl
KTsKKworaGVhZGVyKCJUZXN0aW5nIGN1dHRpbmcgYW4gZWRpdGFibGUgcGxhaW50LXRleHQgY2Fy
ZXQgd2l0aG91dCBhIHVzZXIgZ2VzdHVyZS4iKQorbWFrZVNlbGVjdGlvbigiZWRpdGFibGVQbGFp
blRleHRQYXJhZ3JhcGgiLCAwLCAwKTsKK3Rlc3QoImN1dCIsIGZhbHNlLCBmYWxzZSwgZmFsc2Up
OworCitoZWFkZXIoIlRlc3RpbmcgY3V0dGluZyB3aGVuIHRoZXJlIGlzIG5vIHNlbGVjdGlvbiB3
aXRob3V0IGEgdXNlciBnZXN0dXJlLiIpCit3aW5kb3cuZ2V0U2VsZWN0aW9uKCkucmVtb3ZlQWxs
UmFuZ2VzKCk7Cit0ZXN0KCJjdXQiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKKworY2xlYXJTZWxl
Y3Rpb25Db250YWluZXIoKTsKKworLy8gVGhlbiB0ZXN0IGNvcHkvY3V0IHdpdGggdXNlciBnZXN0
dXJlcy4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIGZ1bmN0aW9uIGNsaWNrQnV0dG9u
KGJ1dHRvbikKKyAgICB7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKGJ1dHRvbi5v
ZmZzZXRMZWZ0ICsgYnV0dG9uLm9mZnNldFdpZHRoIC8gMiwgYnV0dG9uLm9mZnNldFRvcCArIGJ1
dHRvbi5vZmZzZXRIZWlnaHQgLyAyKTsKKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7
CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICB9CisKKyAgICBjbGlja0J1dHRv
bihidXR0b25Gb3JDb3B5KTsKKyAgICBjbGlja0J1dHRvbihidXR0b25Gb3JDdXQpOworCisgICAg
YnV0dG9uRm9yQ29weS5yZW1vdmUoKTsKKyAgICBidXR0b25Gb3JDdXQucmVtb3ZlKCk7Cit9Cis8
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="298443"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
      

    </bug>

</bugzilla>