<?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>63577</bug_id>
          
          <creation_ts>2011-06-28 16:12:40 -0700</creation_ts>
          <short_desc>Switch paintBoxShadow and paintBoxDecorations to new layout types</short_desc>
          <delta_ts>2011-06-28 17:53:10 -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>Layout and Rendering</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>
          
          <blocked>63567</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Levi Weintraub">leviw</reporter>
          <assigned_to name="Levi Weintraub">leviw</assigned_to>
          <cc>eae</cc>
    
    <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>429226</commentid>
    <comment_count>0</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-06-28 16:12:40 -0700</bug_when>
    <thetext>Ongoing switch to the new abstraction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429233</commentid>
    <comment_count>1</comment_count>
      <attachid>98993</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-06-28 16:17:43 -0700</bug_when>
    <thetext>Created attachment 98993
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429239</commentid>
    <comment_count>2</comment_count>
      <attachid>98993</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-06-28 16:23:53 -0700</bug_when>
    <thetext>Comment on attachment 98993
Patch

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429265</commentid>
    <comment_count>3</comment_count>
      <attachid>98993</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-28 16:44:30 -0700</bug_when>
    <thetext>Comment on attachment 98993
Patch

Rejecting attachment 98993 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=ec2-cq-01&apos;, &apos;--port...&quot; exit_code: 2

Last 500 characters of output:
e51e4b99f94b1d391906c90acb27b8de75ee35f3
r89975 = 2f1e2518839b1d4fe70a6d491c6b7f51345bbf09
Done rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc
First, rewinding head to replay your work on top of it...
Fast-forwarded master to refs/remotes/origin/master.
Updating chromium port dependencies using gclient...

________ running &apos;/usr/bin/python gyp_webkit&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
Updating webkit projects from gyp files...

Full output: http://queues.webkit.org/results/8957043</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429280</commentid>
    <comment_count>4</comment_count>
      <attachid>99005</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-06-28 17:06:07 -0700</bug_when>
    <thetext>Created attachment 99005
Patch for landing

Damn my own conflicts :p</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429301</commentid>
    <comment_count>5</comment_count>
      <attachid>99005</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-28 17:46:49 -0700</bug_when>
    <thetext>Comment on attachment 99005
Patch for landing

Rejecting attachment 99005 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=ec2-cq-03&apos;, &apos;--port...&quot; exit_code: 1

Last 500 characters of output:
ommit-queue/Tools/Scripts/webkitpy/tool/commands/stepsequence.py&quot;, line 64, in _run
    step(tool, options).run(state)
  File &quot;/mnt/git/webkit-commit-queue/Tools/Scripts/webkitpy/tool/steps/validatereviewer.py&quot;, line 57, in run
    if self._has_valid_reviewer(changelog_entry):
  File &quot;/mnt/git/webkit-commit-queue/Tools/Scripts/webkitpy/tool/steps/validatereviewer.py&quot;, line 42, in _has_valid_reviewer
    if changelog_entry.reviewer():
AttributeError: &apos;NoneType&apos; object has no attribute &apos;reviewer&apos;

Full output: http://queues.webkit.org/results/8950947</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429309</commentid>
    <comment_count>6</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-06-28 17:53:10 -0700</bug_when>
    <thetext>Committed r89979: &lt;http://trac.webkit.org/changeset/89979&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98993</attachid>
            <date>2011-06-28 16:17:43 -0700</date>
            <delta_ts>2011-06-28 17:06:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-63577-20110628161741.patch</filename>
            <type>text/plain</type>
            <size>22418</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg5OTcyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzggQEAKKzIwMTEtMDYtMjggIExldmkgV2Vp
bnRyYXViICA8bGV2aXdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFN3aXRjaCBwYWludEJveFNoYWRvdyBhbmQgcGFpbnRCb3hE
ZWNvcmF0aW9ucyB0byBuZXcgbGF5b3V0IHR5cGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MzU3NworCisgICAgICAgIFN3aXRjaGluZyBwYWludEJv
eFNoYWRvdyBhbmQgcGFpbnRCb3hEZWNvcmF0aW9ucyB0byBsYXlvdXQgdHlwZSBhYnN0cmFjdGlv
biAKKyAgICAgICAgZnJvbSBtb3JlIGludGVncmFsIHR5cGVzLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cyBhcyB0aGlzIGlzIGp1c3QgbW92aW5nIHRvIGFuIGFic3RyYWN0aW9uLgorCisgICAgICAg
ICogcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5l
Rmxvd0JveDo6cGFpbnRCb3hTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0Jv
eDo6cGFpbnRCb3hEZWNvcmF0aW9ucyk6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZUZsb3dC
b3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveDo6cGFpbnRCb3hEZWNvcmF0aW9ucyk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckJveC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hTaGFk
b3cpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJGaWVsZHNldDo6cGFpbnRCb3hEZWNvcmF0aW9ucyk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckZpZWxkc2V0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjpwYWludEJveERlY29yYXRpb25zKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
VGFibGVDZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6cGFpbnRC
b3hEZWNvcmF0aW9ucyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclZpZXc6OnBhaW50Qm94RGVjb3JhdGlvbnMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJWaWV3Lmg6CisKIDIwMTEtMDYtMjggIExldmkgV2VpbnRyYXViICA8bGV2aXdAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcAkocmV2aXNpb24gODk5NzApCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEwNjMsNyArMTA2Myw3IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnRGaWxsTGF5ZXIo
Y29uc3QKICAgICB9CiB9CiAKLXZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnRCb3hTaGFkb3coR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBSZW5kZXJTdHlsZSogcywgU2hhZG93U3R5bGUgc2hhZG93
U3R5bGUsIGNvbnN0IEludFJlY3QmIHBhaW50UmVjdCkKK3ZvaWQgSW5saW5lRmxvd0JveDo6cGFp
bnRCb3hTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBSZW5kZXJTdHlsZSogcywgU2hh
ZG93U3R5bGUgc2hhZG93U3R5bGUsIGNvbnN0IExheW91dFJlY3QmIHBhaW50UmVjdCkKIHsKICAg
ICBpZiAoKCFwcmV2TGluZUJveCgpICYmICFuZXh0TGluZUJveCgpKSB8fCAhcGFyZW50KCkpCiAg
ICAgICAgIGJveE1vZGVsT2JqZWN0KCktPnBhaW50Qm94U2hhZG93KGNvbnRleHQsIHBhaW50UmVj
dCwgcywgc2hhZG93U3R5bGUpOwpAQCAtMTA5NCwyMCArMTA5NCwyMCBAQCB2b2lkIElubGluZUZs
b3dCb3g6OmNvbnN0cmFpblRvTGluZVRvcEFuCiAgICAgfQogfQogCi12b2lkIElubGluZUZsb3dC
b3g6OnBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFBv
aW50JiBwYWludE9mZnNldCkKK3ZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnRCb3hEZWNvcmF0aW9u
cyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQog
ewogICAgIGlmICghcGFpbnRJbmZvLnNob3VsZFBhaW50V2l0aGluUm9vdChyZW5kZXJlcigpKSB8
fCByZW5kZXJlcigpLT5zdHlsZSgpLT52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSB8fCBwYWludElu
Zm8ucGhhc2UgIT0gUGFpbnRQaGFzZUZvcmVncm91bmQpCiAgICAgICAgIHJldHVybjsKIAogICAg
IC8vIFBpeGVsIHNuYXAgYmFja2dyb3VuZC9ib3JkZXIgcGFpbnRpbmcuCi0gICAgSW50UmVjdCBm
cmFtZVJlY3QgPSByb3VuZGVkRnJhbWVSZWN0KCk7CisgICAgTGF5b3V0UmVjdCBmcmFtZVJlY3Qg
PSByb3VuZGVkRnJhbWVSZWN0KCk7CiAKICAgICBjb25zdHJhaW5Ub0xpbmVUb3BBbmRCb3R0b21J
Zk5lZWRlZChmcmFtZVJlY3QpOwogICAgIAogICAgIC8vIE1vdmUgeC95IHRvIG91ciBjb29yZGlu
YXRlcy4KLSAgICBJbnRSZWN0IGxvY2FsUmVjdChmcmFtZVJlY3QpOworICAgIExheW91dFJlY3Qg
bG9jYWxSZWN0KGZyYW1lUmVjdCk7CiAgICAgZmxpcEZvcldyaXRpbmdNb2RlKGxvY2FsUmVjdCk7
Ci0gICAgSW50UG9pbnQgYWRqdXN0ZWRQYWludG9mZnNldCA9IHBhaW50T2Zmc2V0ICsgbG9jYWxS
ZWN0LmxvY2F0aW9uKCk7CisgICAgTGF5b3V0UG9pbnQgYWRqdXN0ZWRQYWludG9mZnNldCA9IHBh
aW50T2Zmc2V0ICsgbG9jYWxSZWN0LmxvY2F0aW9uKCk7CiAgICAgCiAgICAgR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQ7CiAgICAgCkBAIC0xMTE1LDcgKzExMTUs
NyBAQCB2b2lkIElubGluZUZsb3dCb3g6OnBhaW50Qm94RGVjb3JhdGlvbnMoCiAgICAgLy8gYSBs
aW5lIG1heSBhY3R1YWxseSBoYXZlIHRvIHBhaW50IGEgYmFja2dyb3VuZC4KICAgICBSZW5kZXJT
dHlsZSogc3R5bGVUb1VzZSA9IHJlbmRlcmVyKCktPnN0eWxlKG1fZmlyc3RMaW5lKTsKICAgICBp
ZiAoKCFwYXJlbnQoKSAmJiBtX2ZpcnN0TGluZSAmJiBzdHlsZVRvVXNlICE9IHJlbmRlcmVyKCkt
PnN0eWxlKCkpIHx8IChwYXJlbnQoKSAmJiByZW5kZXJlcigpLT5oYXNCb3hEZWNvcmF0aW9ucygp
KSkgewotICAgICAgICBJbnRSZWN0IHBhaW50UmVjdCA9IEludFJlY3QoYWRqdXN0ZWRQYWludG9m
ZnNldCwgZnJhbWVSZWN0LnNpemUoKSk7CisgICAgICAgIExheW91dFJlY3QgcGFpbnRSZWN0ID0g
TGF5b3V0UmVjdChhZGp1c3RlZFBhaW50b2Zmc2V0LCBmcmFtZVJlY3Quc2l6ZSgpKTsKICAgICAg
ICAgLy8gU2hhZG93IGNvbWVzIGZpcnN0IGFuZCBpcyBiZWhpbmQgdGhlIGJhY2tncm91bmQgYW5k
IGJvcmRlci4KICAgICAgICAgcGFpbnRCb3hTaGFkb3coY29udGV4dCwgc3R5bGVUb1VzZSwgTm9y
bWFsLCBwYWludFJlY3QpOwogCkBAIC0xMTQ0LDIwICsxMTQ0LDIwIEBAIHZvaWQgSW5saW5lRmxv
d0JveDo6cGFpbnRCb3hEZWNvcmF0aW9ucygKICAgICAgICAgICAgICAgICAvLyB0aGUgcHJldmlv
dXMgbGluZSBsZWZ0IG9mZi4KICAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2hhdCB0aGUgaGVj
ayBkbyB3ZSBkbyB3aXRoIFJUTCBoZXJlPyBUaGUgbWF0aCB3ZSdyZSB1c2luZyBpcyBvYnZpb3Vz
bHkgbm90IHJpZ2h0LAogICAgICAgICAgICAgICAgIC8vIGJ1dCBpdCBpc24ndCBldmVuIGNsZWFy
IGhvdyB0aGlzIHNob3VsZCB3b3JrIGF0IGFsbC4KLSAgICAgICAgICAgICAgICBpbnQgbG9naWNh
bE9mZnNldE9uTGluZSA9IDA7CisgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBsb2dpY2FsT2Zm
c2V0T25MaW5lID0gMDsKICAgICAgICAgICAgICAgICBmb3IgKElubGluZUZsb3dCb3gqIGN1cnIg
PSBwcmV2TGluZUJveCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+cHJldkxpbmVCb3goKSkKICAgICAg
ICAgICAgICAgICAgICAgbG9naWNhbE9mZnNldE9uTGluZSArPSBjdXJyLT5sb2dpY2FsV2lkdGgo
KTsKLSAgICAgICAgICAgICAgICBpbnQgdG90YWxMb2dpY2FsV2lkdGggPSBsb2dpY2FsT2Zmc2V0
T25MaW5lOworICAgICAgICAgICAgICAgIExheW91dFVuaXQgdG90YWxMb2dpY2FsV2lkdGggPSBs
b2dpY2FsT2Zmc2V0T25MaW5lOwogICAgICAgICAgICAgICAgIGZvciAoSW5saW5lRmxvd0JveCog
Y3VyciA9IHRoaXM7IGN1cnI7IGN1cnIgPSBjdXJyLT5uZXh0TGluZUJveCgpKQogICAgICAgICAg
ICAgICAgICAgICB0b3RhbExvZ2ljYWxXaWR0aCArPSBjdXJyLT5sb2dpY2FsV2lkdGgoKTsKLSAg
ICAgICAgICAgICAgICBpbnQgc3RyaXBYID0gYWRqdXN0ZWRQYWludG9mZnNldC54KCkgLSAoaXNI
b3Jpem9udGFsKCkgPyBsb2dpY2FsT2Zmc2V0T25MaW5lIDogMCk7Ci0gICAgICAgICAgICAgICAg
aW50IHN0cmlwWSA9IGFkanVzdGVkUGFpbnRvZmZzZXQueSgpIC0gKGlzSG9yaXpvbnRhbCgpID8g
MCA6IGxvZ2ljYWxPZmZzZXRPbkxpbmUpOwotICAgICAgICAgICAgICAgIGludCBzdHJpcFdpZHRo
ID0gaXNIb3Jpem9udGFsKCkgPyB0b3RhbExvZ2ljYWxXaWR0aCA6IGZyYW1lUmVjdC53aWR0aCgp
OwotICAgICAgICAgICAgICAgIGludCBzdHJpcEhlaWdodCA9IGlzSG9yaXpvbnRhbCgpID8gZnJh
bWVSZWN0LmhlaWdodCgpIDogdG90YWxMb2dpY2FsV2lkdGg7CisgICAgICAgICAgICAgICAgTGF5
b3V0VW5pdCBzdHJpcFggPSBhZGp1c3RlZFBhaW50b2Zmc2V0LngoKSAtIChpc0hvcml6b250YWwo
KSA/IGxvZ2ljYWxPZmZzZXRPbkxpbmUgOiAwKTsKKyAgICAgICAgICAgICAgICBMYXlvdXRVbml0
IHN0cmlwWSA9IGFkanVzdGVkUGFpbnRvZmZzZXQueSgpIC0gKGlzSG9yaXpvbnRhbCgpID8gMCA6
IGxvZ2ljYWxPZmZzZXRPbkxpbmUpOworICAgICAgICAgICAgICAgIExheW91dFVuaXQgc3RyaXBX
aWR0aCA9IGlzSG9yaXpvbnRhbCgpID8gdG90YWxMb2dpY2FsV2lkdGggOiBmcmFtZVJlY3Qud2lk
dGgoKTsKKyAgICAgICAgICAgICAgICBMYXlvdXRVbml0IHN0cmlwSGVpZ2h0ID0gaXNIb3Jpem9u
dGFsKCkgPyBmcmFtZVJlY3QuaGVpZ2h0KCkgOiB0b3RhbExvZ2ljYWxXaWR0aDsKIAogICAgICAg
ICAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7
CiAgICAgICAgICAgICAgICAgY29udGV4dC0+Y2xpcChwYWludFJlY3QpOwotICAgICAgICAgICAg
ICAgIGJveE1vZGVsT2JqZWN0KCktPnBhaW50Qm9yZGVyKGNvbnRleHQsIEludFJlY3Qoc3RyaXBY
LCBzdHJpcFksIHN0cmlwV2lkdGgsIHN0cmlwSGVpZ2h0KSwgcmVuZGVyZXIoKS0+c3R5bGUoKSk7
CisgICAgICAgICAgICAgICAgYm94TW9kZWxPYmplY3QoKS0+cGFpbnRCb3JkZXIoY29udGV4dCwg
TGF5b3V0UmVjdChzdHJpcFgsIHN0cmlwWSwgc3RyaXBXaWR0aCwgc3RyaXBIZWlnaHQpLCByZW5k
ZXJlcigpLT5zdHlsZSgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guaAkocmV2aXNpb24gODk5NzAp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDMsMTEgKzEwMywxMSBAQCBwdWJsaWM6CiAKICAgICBJbnRSZWN0IHJvdW5kZWRG
cmFtZVJlY3QoKSBjb25zdDsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCb3hEZWNvcmF0
aW9ucyhQYWludEluZm8mLCBjb25zdCBJbnRQb2ludCYpOworICAgIHZpcnR1YWwgdm9pZCBwYWlu
dEJveERlY29yYXRpb25zKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7CiAgICAgdmly
dHVhbCB2b2lkIHBhaW50TWFzayhQYWludEluZm8mLCBjb25zdCBJbnRQb2ludCYpOwogICAgIHZv
aWQgcGFpbnRGaWxsTGF5ZXJzKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IENvbG9yJiwgY29uc3Qg
RmlsbExheWVyKiwgY29uc3QgTGF5b3V0UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9z
aXRlU291cmNlT3Zlcik7CiAgICAgdm9pZCBwYWludEZpbGxMYXllcihjb25zdCBQYWludEluZm8m
LCBjb25zdCBDb2xvciYsIGNvbnN0IEZpbGxMYXllciosIGNvbnN0IExheW91dFJlY3QmLCBDb21w
b3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIpOwotICAgIHZvaWQgcGFpbnRCb3hT
aGFkb3coR3JhcGhpY3NDb250ZXh0KiwgUmVuZGVyU3R5bGUqLCBTaGFkb3dTdHlsZSwgY29uc3Qg
SW50UmVjdCYpOworICAgIHZvaWQgcGFpbnRCb3hTaGFkb3coR3JhcGhpY3NDb250ZXh0KiwgUmVu
ZGVyU3R5bGUqLCBTaGFkb3dTdHlsZSwgY29uc3QgTGF5b3V0UmVjdCYpOwogICAgIHZpcnR1YWwg
dm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBJbnRQb2ludCYsIGludCBsaW5lVG9wLCBpbnQg
bGluZUJvdHRvbSk7CiAgICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RS
ZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEludFBvaW50JiBwb2ludEluQ29udGFpbmVy
LCBjb25zdCBJbnRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIGludCBsaW5lVG9wLCBpbnQgbGlu
ZUJvdHRvbSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCShy
ZXZpc2lvbiA4OTk3MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04MjcsMTEgKzgyNywxMSBAQCBCYWNrZ3JvdW5kQmxlZWRBdm9p
ZGFuY2UgUmVuZGVyQm94OjpkZXRlCiAgICAgcmV0dXJuIEJhY2tncm91bmRCbGVlZFVzZVRyYW5z
cGFyZW5jeUxheWVyOwogfQogCi12b2lkIFJlbmRlckJveDo6cGFpbnRCb3hEZWNvcmF0aW9ucyhQ
YWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UG9pbnQmIHBhaW50T2Zmc2V0KQordm9pZCBS
ZW5kZXJCb3g6OnBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dFBvaW50JiBwYWludE9mZnNldCkKIHsKICAgICBpZiAoIXBhaW50SW5mby5zaG91bGRQ
YWludFdpdGhpblJvb3QodGhpcykpCiAgICAgICAgIHJldHVybjsKLSAgICBJbnRSZWN0IHBhaW50
UmVjdChwYWludE9mZnNldCwgc2l6ZSgpKTsKKyAgICBMYXlvdXRSZWN0IHBhaW50UmVjdChwYWlu
dE9mZnNldCwgc2l6ZSgpKTsKIAogICAgIC8vIGJvcmRlci1maXQgY2FuIGFkanVzdCB3aGVyZSB3
ZSBwYWludCBvdXIgYm9yZGVyIGFuZCBiYWNrZ3JvdW5kLiAgSWYgc2V0LCB3ZSBzbnVnbHkgZml0
IG91ciBsaW5lIGJveCBkZXNjZW5kYW50cy4gIChUaGUgaUNoYXQKICAgICAvLyBiYWxsb29uIGxh
eW91dCBpcyBhbiBleGFtcGxlIG9mIHRoaXMpLgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3guaAkocmV2aXNpb24gODk5NzApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1Myw3ICszNTMsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBwb3BDb250ZW50c0NsaXAoUGFpbnRJbmZvJiwgUGFpbnRQaGFzZSBvcmlnaW5hbFBo
YXNlLCBjb25zdCBJbnRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpOwogCiAgICAgdmlydHVhbCB2
b2lkIHBhaW50T2JqZWN0KFBhaW50SW5mbyYsIGNvbnN0IEludFBvaW50JikgeyBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBwYWludEJveERlY29yYXRpb25zKFBhaW50
SW5mbyYsIGNvbnN0IEludFBvaW50Jik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50Qm94RGVjb3Jh
dGlvbnMoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKICAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRNYXNrKFBhaW50SW5mbyYsIGNvbnN0IEludFBvaW50Jik7CiAgICAgdmlydHVhbCB2b2lk
IGltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIsIGNvbnN0IEludFJlY3QqID0gMCk7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0
LmNwcAkocmV2aXNpb24gODk5NzApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94TW9kZWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDkwLDcgKzIwOTAsNyBAQCBz
dGF0aWMgaW5saW5lIEludFJlY3QgYXJlYUNhc3RpbmdTaGFkb3dJCiAgICAgcmV0dXJuIHVuaW9u
UmVjdChib3VuZHMsIG9mZnNldEJvdW5kcyk7CiB9CiAKLXZvaWQgUmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OnBhaW50Qm94U2hhZG93KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVj
dCYgcGFpbnRSZWN0LCBjb25zdCBSZW5kZXJTdHlsZSogcywgU2hhZG93U3R5bGUgc2hhZG93U3R5
bGUsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0
RWRnZSkKK3ZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hhZG93KEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgcGFpbnRSZWN0LCBjb25zdCBSZW5k
ZXJTdHlsZSogcywgU2hhZG93U3R5bGUgc2hhZG93U3R5bGUsIGJvb2wgaW5jbHVkZUxvZ2ljYWxM
ZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSkKIHsKICAgICAvLyBGSVhNRTog
RGVhbCB3aXRoIGJvcmRlci1pbWFnZS4gIFdvdWxkIGJlIGdyZWF0IHRvIHVzZSBib3JkZXItaW1h
Z2UgYXMgYSBtYXNrLgogCkBAIC0yMTA4LDkgKzIxMDgsOSBAQCB2b2lkIFJlbmRlckJveE1vZGVs
T2JqZWN0OjpwYWludEJveFNoYWRvCiAgICAgICAgIGlmIChzaGFkb3ctPnN0eWxlKCkgIT0gc2hh
ZG93U3R5bGUpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBJbnRTaXplIHNoYWRv
d09mZnNldChzaGFkb3ctPngoKSwgc2hhZG93LT55KCkpOwotICAgICAgICBpbnQgc2hhZG93Qmx1
ciA9IHNoYWRvdy0+Ymx1cigpOwotICAgICAgICBpbnQgc2hhZG93U3ByZWFkID0gc2hhZG93LT5z
cHJlYWQoKTsKKyAgICAgICAgTGF5b3V0U2l6ZSBzaGFkb3dPZmZzZXQoc2hhZG93LT54KCksIHNo
YWRvdy0+eSgpKTsKKyAgICAgICAgTGF5b3V0VW5pdCBzaGFkb3dCbHVyID0gc2hhZG93LT5ibHVy
KCk7CisgICAgICAgIExheW91dFVuaXQgc2hhZG93U3ByZWFkID0gc2hhZG93LT5zcHJlYWQoKTsK
ICAgICAgICAgCiAgICAgICAgIGlmIChzaGFkb3dPZmZzZXQuaXNaZXJvKCkgJiYgIXNoYWRvd0Js
dXIgJiYgIXNoYWRvd1NwcmVhZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMjEyMyw3ICsy
MTIzLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hTaGFkbwogICAgICAg
ICAgICAgaWYgKGZpbGxSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
IAotICAgICAgICAgICAgSW50UmVjdCBzaGFkb3dSZWN0KGJvcmRlci5yZWN0KCkpOworICAgICAg
ICAgICAgTGF5b3V0UmVjdCBzaGFkb3dSZWN0KGJvcmRlci5yZWN0KCkpOwogICAgICAgICAgICAg
c2hhZG93UmVjdC5pbmZsYXRlKHNoYWRvd0JsdXIgKyBzaGFkb3dTcHJlYWQpOwogICAgICAgICAg
ICAgc2hhZG93UmVjdC5tb3ZlKHNoYWRvd09mZnNldCk7CiAKQEAgLTIxMzIsNyArMjEzMiw3IEBA
IHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hhZG8KIAogICAgICAgICAgICAg
Ly8gTW92ZSB0aGUgZmlsbCBqdXN0IG91dHNpZGUgdGhlIGNsaXAsIGFkZGluZyAxIHBpeGVsIHNl
cGFyYXRpb24gc28gdGhhdCB0aGUgZmlsbCBkb2VzIG5vdAogICAgICAgICAgICAgLy8gYmxlZWQg
aW4gKGR1ZSB0byBhbnRpYWxpYXNpbmcpIGlmIHRoZSBjb250ZXh0IGlzIHRyYW5zZm9ybWVkLgot
ICAgICAgICAgICAgSW50U2l6ZSBleHRyYU9mZnNldChwYWludFJlY3Qud2lkdGgoKSArIG1heCgw
LCBzaGFkb3dPZmZzZXQud2lkdGgoKSkgKyBzaGFkb3dCbHVyICsgMiAqIHNoYWRvd1NwcmVhZCAr
IDEsIDApOworICAgICAgICAgICAgTGF5b3V0U2l6ZSBleHRyYU9mZnNldChwYWludFJlY3Qud2lk
dGgoKSArIG1heCgwLCBzaGFkb3dPZmZzZXQud2lkdGgoKSkgKyBzaGFkb3dCbHVyICsgMiAqIHNo
YWRvd1NwcmVhZCArIDEsIDApOwogICAgICAgICAgICAgc2hhZG93T2Zmc2V0IC09IGV4dHJhT2Zm
c2V0OwogICAgICAgICAgICAgZmlsbFJlY3QubW92ZShleHRyYU9mZnNldCk7CiAKQEAgLTIxNTcs
NyArMjE1Nyw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hhZG8KICAg
ICAgICAgICAgICAgICBmaWxsUmVjdC5leHBhbmRSYWRpaShzaGFkb3dTcHJlYWQpOwogICAgICAg
ICAgICAgICAgIGNvbnRleHQtPmZpbGxSb3VuZGVkUmVjdChmaWxsUmVjdCwgQ29sb3I6OmJsYWNr
LCBzLT5jb2xvclNwYWNlKCkpOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg
ICBJbnRSZWN0IHJlY3RUb0NsaXBPdXQgPSBib3JkZXIucmVjdCgpOworICAgICAgICAgICAgICAg
IExheW91dFJlY3QgcmVjdFRvQ2xpcE91dCA9IGJvcmRlci5yZWN0KCk7CiAKICAgICAgICAgICAg
ICAgICAvLyBJZiB0aGUgYm94IGlzIG9wYXF1ZSwgaXQgaXMgdW5uZWNlc3NhcnkgdG8gY2xpcCBp
dCBvdXQuIEhvd2V2ZXIsIGRvaW5nIHNvIHNhdmVzIHRpbWUKICAgICAgICAgICAgICAgICAvLyB3
aGVuIHBhaW50aW5nIHRoZSBzaGFkb3cuIE9uIHRoZSBvdGhlciBoYW5kLCBpdCBpbnRyb2R1Y2Vz
IHN1YnBpeGVsIGdhcHMgYWxvbmcgdGhlCkBAIC0yMTc2LDcgKzIxNzYsNyBAQCB2b2lkIFJlbmRl
ckJveE1vZGVsT2JqZWN0OjpwYWludEJveFNoYWRvCiAgICAgICAgICAgICB9CiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAvLyBJbnNldCBzaGFkb3cuCi0gICAgICAgICAgICBJbnRSZWN0
IGhvbGVSZWN0KGJvcmRlci5yZWN0KCkpOworICAgICAgICAgICAgTGF5b3V0UmVjdCBob2xlUmVj
dChib3JkZXIucmVjdCgpKTsKICAgICAgICAgICAgIGhvbGVSZWN0LmluZmxhdGUoLXNoYWRvd1Nw
cmVhZCk7CiAKICAgICAgICAgICAgIGlmIChob2xlUmVjdC5pc0VtcHR5KCkpIHsKQEAgLTIyMDUs
NyArMjIwNSw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hhZG8KIAog
ICAgICAgICAgICAgQ29sb3IgZmlsbENvbG9yKHNoYWRvd0NvbG9yLnJlZCgpLCBzaGFkb3dDb2xv
ci5ncmVlbigpLCBzaGFkb3dDb2xvci5ibHVlKCksIDI1NSk7CiAKLSAgICAgICAgICAgIEludFJl
Y3Qgb3V0ZXJSZWN0ID0gYXJlYUNhc3RpbmdTaGFkb3dJbkhvbGUoYm9yZGVyLnJlY3QoKSwgc2hh
ZG93Qmx1ciwgc2hhZG93U3ByZWFkLCBzaGFkb3dPZmZzZXQpOworICAgICAgICAgICAgTGF5b3V0
UmVjdCBvdXRlclJlY3QgPSBhcmVhQ2FzdGluZ1NoYWRvd0luSG9sZShib3JkZXIucmVjdCgpLCBz
aGFkb3dCbHVyLCBzaGFkb3dTcHJlYWQsIHNoYWRvd09mZnNldCk7CiAgICAgICAgICAgICBSb3Vu
ZGVkSW50UmVjdCByb3VuZGVkSG9sZShob2xlUmVjdCwgYm9yZGVyLnJhZGlpKCkpOwogCiAgICAg
ICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQpOwpA
QCAtMjIxNyw3ICsyMjE3LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hT
aGFkbwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgY29udGV4dC0+Y2xpcChi
b3JkZXIucmVjdCgpKTsKIAotICAgICAgICAgICAgSW50U2l6ZSBleHRyYU9mZnNldCgyICogcGFp
bnRSZWN0LndpZHRoKCkgKyBtYXgoMCwgc2hhZG93T2Zmc2V0LndpZHRoKCkpICsgc2hhZG93Qmx1
ciAtIDIgKiBzaGFkb3dTcHJlYWQgKyAxLCAwKTsKKyAgICAgICAgICAgIExheW91dFNpemUgZXh0
cmFPZmZzZXQoMiAqIHBhaW50UmVjdC53aWR0aCgpICsgbWF4KDAsIHNoYWRvd09mZnNldC53aWR0
aCgpKSArIHNoYWRvd0JsdXIgLSAyICogc2hhZG93U3ByZWFkICsgMSwgMCk7CiAgICAgICAgICAg
ICBjb250ZXh0LT50cmFuc2xhdGUoZXh0cmFPZmZzZXQud2lkdGgoKSwgZXh0cmFPZmZzZXQuaGVp
Z2h0KCkpOwogICAgICAgICAgICAgc2hhZG93T2Zmc2V0IC09IGV4dHJhT2Zmc2V0OwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaAko
cmV2aXNpb24gODk5NzApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9k
ZWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTIwLDcgKzEyMCw3IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgcGFpbnRCb3JkZXIoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYsIGNv
bnN0IFJlbmRlclN0eWxlKiwgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlID0gQmFja2dyb3VuZEJs
ZWVkTm9uZSwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlID0gdHJ1ZSwgYm9vbCBpbmNsdWRl
TG9naWNhbFJpZ2h0RWRnZSA9IHRydWUpOwogICAgIGJvb2wgcGFpbnROaW5lUGllY2VJbWFnZShH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUqLCBjb25z
dCBOaW5lUGllY2VJbWFnZSYsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3Zl
cik7Ci0gICAgdm9pZCBwYWludEJveFNoYWRvdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRS
ZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUqLCBTaGFkb3dTdHlsZSwgYm9vbCBpbmNsdWRlTG9naWNh
bExlZnRFZGdlID0gdHJ1ZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSA9IHRydWUpOwor
ICAgIHZvaWQgcGFpbnRCb3hTaGFkb3coR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgTGF5b3V0UmVj
dCYsIGNvbnN0IFJlbmRlclN0eWxlKiwgU2hhZG93U3R5bGUsIGJvb2wgaW5jbHVkZUxvZ2ljYWxM
ZWZ0RWRnZSA9IHRydWUsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UgPSB0cnVlKTsKICAg
ICB2b2lkIHBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgQ29s
b3ImLCBjb25zdCBGaWxsTGF5ZXIqLCBjb25zdCBMYXlvdXRSZWN0JiwgQmFja2dyb3VuZEJsZWVk
QXZvaWRhbmNlLCBJbmxpbmVGbG93Qm94KiA9IDAsIGNvbnN0IExheW91dFNpemUmID0gTGF5b3V0
U2l6ZSgpLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIFJlbmRlck9i
amVjdCogYmFja2dyb3VuZE9iamVjdCA9IDApOwogICAgIAogICAgIC8vIE92ZXJyaWRkZW4gYnkg
c3ViY2xhc3NlcyB0byBkZXRlcm1pbmUgbGluZSBoZWlnaHQgYW5kIGJhc2VsaW5lIHBvc2l0aW9u
LgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuY3BwCShy
ZXZpc2lvbiA4OTk3MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWVsZHNl
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOCwxMiArMTE4LDEyIEBAIFJlbmRlckJveCogUmVu
ZGVyRmllbGRzZXQ6OmZpbmRMZWdlbmQoKSAKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBSZW5k
ZXJGaWVsZHNldDo6cGFpbnRCb3hEZWNvcmF0aW9ucyhQYWludEluZm8mIHBhaW50SW5mbywgY29u
c3QgSW50UG9pbnQmIHBhaW50T2Zmc2V0KQordm9pZCBSZW5kZXJGaWVsZHNldDo6cGFpbnRCb3hE
ZWNvcmF0aW9ucyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50
T2Zmc2V0KQogewogICAgIGlmICghcGFpbnRJbmZvLnNob3VsZFBhaW50V2l0aGluUm9vdCh0aGlz
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSW50UmVjdCBwYWludFJlY3QocGFpbnRPZmZzZXQs
IHNpemUoKSk7CisgICAgTGF5b3V0UmVjdCBwYWludFJlY3QocGFpbnRPZmZzZXQsIHNpemUoKSk7
CiAgICAgUmVuZGVyQm94KiBsZWdlbmQgPSBmaW5kTGVnZW5kKCk7CiAgICAgaWYgKCFsZWdlbmQp
CiAgICAgICAgIHJldHVybiBSZW5kZXJCbG9jazo6cGFpbnRCb3hEZWNvcmF0aW9ucyhwYWludElu
Zm8sIHBhaW50T2Zmc2V0KTsKQEAgLTEzMiwxMSArMTMyLDExIEBAIHZvaWQgUmVuZGVyRmllbGRz
ZXQ6OnBhaW50Qm94RGVjb3JhdGlvbnMKICAgICAvLyBjYXNlcyB0aGUgbGVnZW5kIGlzIGVtYmVk
ZGVkIGluIHRoZSByaWdodCBhbmQgYm90dG9tIGJvcmRlcnMgcmVzcGVjdGl2ZWx5LgogICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzIzNgogICAgIGlmIChz
dHlsZSgpLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKSB7Ci0gICAgICAgIGludCB5T2ZmID0g
KGxlZ2VuZC0+eSgpID4gMCkgPyAwIDogKGxlZ2VuZC0+aGVpZ2h0KCkgLSBib3JkZXJUb3AoKSkg
LyAyOworICAgICAgICBMYXlvdXRVbml0IHlPZmYgPSAobGVnZW5kLT55KCkgPiAwKSA/IDAgOiAo
bGVnZW5kLT5oZWlnaHQoKSAtIGJvcmRlclRvcCgpKSAvIDI7CiAgICAgICAgIHBhaW50UmVjdC5z
ZXRIZWlnaHQocGFpbnRSZWN0LmhlaWdodCgpIC0geU9mZik7CiAgICAgICAgIHBhaW50UmVjdC5z
ZXRZKHBhaW50UmVjdC55KCkgKyB5T2ZmKTsKICAgICB9IGVsc2UgewotICAgICAgICBpbnQgeE9m
ZiA9IChsZWdlbmQtPngoKSA+IDApID8gMCA6IChsZWdlbmQtPndpZHRoKCkgLSBib3JkZXJMZWZ0
KCkpIC8gMjsKKyAgICAgICAgTGF5b3V0VW5pdCB4T2ZmID0gKGxlZ2VuZC0+eCgpID4gMCkgPyAw
IDogKGxlZ2VuZC0+d2lkdGgoKSAtIGJvcmRlckxlZnQoKSkgLyAyOwogICAgICAgICBwYWludFJl
Y3Quc2V0V2lkdGgocGFpbnRSZWN0LndpZHRoKCkgLSB4T2ZmKTsKICAgICAgICAgcGFpbnRSZWN0
LnNldFgocGFpbnRSZWN0LngoKSArIHhPZmYpOwogICAgIH0KQEAgLTE1NiwxMyArMTU2LDEzIEBA
IHZvaWQgUmVuZGVyRmllbGRzZXQ6OnBhaW50Qm94RGVjb3JhdGlvbnMKICAgICAvLyBjYXNlcyB0
aGUgbGVnZW5kIGlzIGVtYmVkZGVkIGluIHRoZSByaWdodCBhbmQgYm90dG9tIGJvcmRlcnMgcmVz
cGVjdGl2ZWx5LgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00NzIzNgogICAgIGlmIChzdHlsZSgpLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKSB7Ci0g
ICAgICAgIGludCBjbGlwVG9wID0gcGFpbnRSZWN0LnkoKTsKLSAgICAgICAgaW50IGNsaXBIZWln
aHQgPSBtYXgoc3RhdGljX2Nhc3Q8aW50PihzdHlsZSgpLT5ib3JkZXJUb3BXaWR0aCgpKSwgbGVn
ZW5kLT5oZWlnaHQoKSk7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xpcE91dChJbnRSZWN0
KHBhaW50UmVjdC54KCkgKyBsZWdlbmQtPngoKSwgY2xpcFRvcCwgbGVnZW5kLT53aWR0aCgpLCBj
bGlwSGVpZ2h0KSk7CisgICAgICAgIExheW91dFVuaXQgY2xpcFRvcCA9IHBhaW50UmVjdC55KCk7
CisgICAgICAgIExheW91dFVuaXQgY2xpcEhlaWdodCA9IG1heChzdGF0aWNfY2FzdDxMYXlvdXRV
bml0PihzdHlsZSgpLT5ib3JkZXJUb3BXaWR0aCgpKSwgbGVnZW5kLT5oZWlnaHQoKSk7CisgICAg
ICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xpcE91dChMYXlvdXRSZWN0KHBhaW50UmVjdC54KCkgKyBs
ZWdlbmQtPngoKSwgY2xpcFRvcCwgbGVnZW5kLT53aWR0aCgpLCBjbGlwSGVpZ2h0KSk7CiAgICAg
fSBlbHNlIHsKLSAgICAgICAgaW50IGNsaXBMZWZ0ID0gcGFpbnRSZWN0LngoKTsKLSAgICAgICAg
aW50IGNsaXBXaWR0aCA9IG1heChzdGF0aWNfY2FzdDxpbnQ+KHN0eWxlKCktPmJvcmRlckxlZnRX
aWR0aCgpKSwgbGVnZW5kLT53aWR0aCgpKTsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlw
T3V0KEludFJlY3QoY2xpcExlZnQsIHBhaW50UmVjdC55KCkgKyBsZWdlbmQtPnkoKSwgY2xpcFdp
ZHRoLCBsZWdlbmQtPmhlaWdodCgpKSk7CisgICAgICAgIExheW91dFVuaXQgY2xpcExlZnQgPSBw
YWludFJlY3QueCgpOworICAgICAgICBMYXlvdXRVbml0IGNsaXBXaWR0aCA9IG1heChzdGF0aWNf
Y2FzdDxMYXlvdXRVbml0PihzdHlsZSgpLT5ib3JkZXJMZWZ0V2lkdGgoKSksIGxlZ2VuZC0+d2lk
dGgoKSk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xpcE91dChMYXlvdXRSZWN0KGNsaXBM
ZWZ0LCBwYWludFJlY3QueSgpICsgbGVnZW5kLT55KCksIGNsaXBXaWR0aCwgbGVnZW5kLT5oZWln
aHQoKSkpOwogICAgIH0KIAogICAgIHBhaW50Qm9yZGVyKHBhaW50SW5mby5jb250ZXh0LCBwYWlu
dFJlY3QsIHN0eWxlKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZp
ZWxkc2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZp
ZWxkc2V0LmgJKHJldmlzaW9uIDg5OTcwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZpZWxkc2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIGJvb2wgYXZvaWRzRmxvYXRzKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQog
ICAgIHZpcnR1YWwgYm9vbCBzdHJldGNoZXNUb01pbkludHJpbnNpY0xvZ2ljYWxXaWR0aCgpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBwYWludEJveERlY29yYXRp
b25zKFBhaW50SW5mbyYsIGNvbnN0IEludFBvaW50Jik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50
Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKICAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRNYXNrKFBhaW50SW5mbyYsIGNvbnN0IEludFBvaW50Jik7CiB9OwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAJKHJldmlzaW9uIDg5
OTcwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTQ5LDEyICs1NDksMTIgQEAgdm9pZCBSZW5kZXJUYWJsZTo6c3VidHJhY3RD
YXB0aW9uUmVjdChJbgogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJUYWJsZTo6cGFpbnRCb3hEZWNv
cmF0aW9ucyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UG9pbnQmIHBhaW50T2Zmc2V0
KQordm9pZCBSZW5kZXJUYWJsZTo6cGFpbnRCb3hEZWNvcmF0aW9ucyhQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogewogICAgIGlmICghcGFpbnRJ
bmZvLnNob3VsZFBhaW50V2l0aGluUm9vdCh0aGlzKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
SW50UmVjdCByZWN0KHBhaW50T2Zmc2V0LCBzaXplKCkpOworICAgIExheW91dFJlY3QgcmVjdChw
YWludE9mZnNldCwgc2l6ZSgpKTsKICAgICBzdWJ0cmFjdENhcHRpb25SZWN0KHJlY3QpOwogCiAg
ICAgcGFpbnRCb3hTaGFkb3cocGFpbnRJbmZvLmNvbnRleHQsIHJlY3QsIHN0eWxlKCksIE5vcm1h
bCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuaAkocmV2aXNpb24g
ODk5NzApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjE2LDcgKzIxNiw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQg
cGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgSW50UG9pbnQmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRPYmplY3QoUGFpbnRJbmZvJiwgY29uc3QgSW50UG9pbnQmKTsKLSAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRCb3hEZWNvcmF0aW9ucyhQYWludEluZm8mLCBjb25zdCBJbnRQb2ludCYpOworICAgIHZp
cnR1YWwgdm9pZCBwYWludEJveERlY29yYXRpb25zKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBv
aW50Jik7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50TWFzayhQYWludEluZm8mLCBjb25zdCBJbnRQ
b2ludCYpOwogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKICAgICB2aXJ0dWFsIHZvaWQgY29t
cHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCShyZXZpc2lvbiA4OTk3MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05
OTYsNyArOTk2LDcgQEAgdm9pZCBSZW5kZXJUYWJsZUNlbGw6OnBhaW50QmFja2dyb3VuZHNCZQog
ICAgIH0KIH0KIAotdm9pZCBSZW5kZXJUYWJsZUNlbGw6OnBhaW50Qm94RGVjb3JhdGlvbnMoUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFBvaW50JiBwYWludE9mZnNldCkKK3ZvaWQgUmVu
ZGVyVGFibGVDZWxsOjpwYWludEJveERlY29yYXRpb25zKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiB7CiAgICAgaWYgKCFwYWludEluZm8uc2hv
dWxkUGFpbnRXaXRoaW5Sb290KHRoaXMpKQogICAgICAgICByZXR1cm47CkBAIC0xMDA1LDcgKzEw
MDUsNyBAQCB2b2lkIFJlbmRlclRhYmxlQ2VsbDo6cGFpbnRCb3hEZWNvcmF0aW9uCiAgICAgaWYg
KCF0YWJsZUVsdC0+Y29sbGFwc2VCb3JkZXJzKCkgJiYgc3R5bGUoKS0+ZW1wdHlDZWxscygpID09
IEhJREUgJiYgIWZpcnN0Q2hpbGQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSW50UmVjdCBw
YWludFJlY3QgPSBJbnRSZWN0KHBhaW50T2Zmc2V0LCBzaXplKCkpOworICAgIExheW91dFJlY3Qg
cGFpbnRSZWN0ID0gTGF5b3V0UmVjdChwYWludE9mZnNldCwgc2l6ZSgpKTsKICAgICBwYWludEJv
eFNoYWRvdyhwYWludEluZm8uY29udGV4dCwgcGFpbnRSZWN0LCBzdHlsZSgpLCBOb3JtYWwpOwog
ICAgIAogICAgIC8vIFBhaW50IG91ciBjZWxsIGJhY2tncm91bmQuCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oCShyZXZpc2lvbiA4OTk3MCkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaAkod29ya2luZyBjb3B5KQpA
QCAtMTQyLDcgKzE0Miw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUxv
Z2ljYWxXaWR0aCgpOwogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50Qm94RGVjb3JhdGlvbnMoUGFp
bnRJbmZvJiwgY29uc3QgSW50UG9pbnQmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCb3hEZWNv
cmF0aW9ucyhQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwogICAgIHZpcnR1YWwgdm9p
ZCBwYWludE1hc2soUGFpbnRJbmZvJiwgY29uc3QgSW50UG9pbnQmKTsKIAogICAgIHZpcnR1YWwg
SW50U2l6ZSBvZmZzZXRGcm9tQ29udGFpbmVyKFJlbmRlck9iamVjdCosIGNvbnN0IEludFBvaW50
JikgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCShy
ZXZpc2lvbiA4OTk3MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTg1LDcgKzE4NSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBy
ZW5kZXJlck9ic2N1cmVzQmFja2cKICAgICAgICAgJiYgIWlzQ29tcG9zaXRlZChvYmplY3QpOwog
fQogICAgIAotdm9pZCBSZW5kZXJWaWV3OjpwYWludEJveERlY29yYXRpb25zKFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBJbnRQb2ludCYpCit2b2lkIFJlbmRlclZpZXc6OnBhaW50Qm94RGVj
b3JhdGlvbnMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JikKIHsKICAg
ICAvLyBDaGVjayB0byBzZWUgaWYgd2UgYXJlIGVuY2xvc2VkIGJ5IGEgbGF5ZXIgdGhhdCByZXF1
aXJlcyBjb21wbGV4IHBhaW50aW5nIHJ1bGVzLiAgSWYgc28sIHdlIGNhbm5vdCBibGl0CiAgICAg
Ly8gd2hlbiBzY3JvbGxpbmcsIGFuZCB3ZSBuZWVkIHRvIHVzZSBzbG93IHJlcGFpbnRzLiAgRXhh
bXBsZXMgb2YgbGF5ZXJzIHRoYXQgcmVxdWlyZSB0aGlzIGFyZSB0cmFuc3BhcmVudCBsYXllcnMs
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgJKHJldmlzaW9uIDg5OTcw
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAkod29ya2luZyBjb3B5
KQpAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlcGFpbnRSZWN0
YW5nbGVJblZpZXdBbmRDb21wb3NpdGVkTGF5ZXJzKGNvbnN0IEludFJlY3QmLCBib29sIGltbWVk
aWF0ZSA9IGZhbHNlKTsKIAogICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25z
dCBJbnRQb2ludCYpOwotICAgIHZpcnR1YWwgdm9pZCBwYWludEJveERlY29yYXRpb25zKFBhaW50
SW5mbyYsIGNvbnN0IEludFBvaW50Jik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50Qm94RGVjb3Jh
dGlvbnMoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKIAogICAgIGVudW0gU2VsZWN0
aW9uUmVwYWludE1vZGUgeyBSZXBhaW50TmV3WE9ST2xkLCBSZXBhaW50TmV3TWludXNPbGQgfTsK
ICAgICB2b2lkIHNldFNlbGVjdGlvbihSZW5kZXJPYmplY3QqIHN0YXJ0LCBpbnQgc3RhcnRQb3Ms
IFJlbmRlck9iamVjdCogZW5kLCBpbnQgZW5kUG9zLCBTZWxlY3Rpb25SZXBhaW50TW9kZSA9IFJl
cGFpbnROZXdYT1JPbGQpOwo=
</data>
<flag name="review"
          id="93372"
          type_id="1"
          status="+"
          setter="eric"
    />
    <flag name="commit-queue"
          id="93374"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99005</attachid>
            <date>2011-06-28 17:06:07 -0700</date>
            <delta_ts>2011-06-28 17:46:49 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>20935</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg5OTc3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzggQEAKKyAyMDExLTA2LTI4ICBMZXZpIFdl
aW50cmF1YiAgPGxldml3QGNocm9taXVtLm9yZz4KKyAKKyAgICAgICAgIFJldmlld2VkIGJ5IEVy
aWMgU2VpZGVsLgorIAorICAgICAgICAgU3dpdGNoIHBhaW50Qm94U2hhZG93IGFuZCBwYWludEJv
eERlY29yYXRpb25zIHRvIG5ldyBsYXlvdXQgdHlwZXMKKyAgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MzU3NworIAorICAgICAgICAgU3dpdGNoaW5nIHBh
aW50Qm94U2hhZG93IGFuZCBwYWludEJveERlY29yYXRpb25zIHRvIGxheW91dCB0eXBlIGFic3Ry
YWN0aW9uIAorICAgICAgICAgZnJvbSBtb3JlIGludGVncmFsIHR5cGVzLgorIAorICAgICAgICAg
Tm8gbmV3IHRlc3RzIGFzIHRoaXMgaXMganVzdCBtb3ZpbmcgdG8gYW4gYWJzdHJhY3Rpb24uCisg
CisgICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcDoKKyAgICAgICAgIChXZWJD
b3JlOjpJbmxpbmVGbG93Qm94OjpwYWludEJveFNoYWRvdyk6CisgICAgICAgICAoV2ViQ29yZTo6
SW5saW5lRmxvd0JveDo6cGFpbnRCb3hEZWNvcmF0aW9ucyk6CisgICAgICAgICAqIHJlbmRlcmlu
Zy9JbmxpbmVGbG93Qm94Lmg6CisgICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgor
ICAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cGFpbnRCb3hEZWNvcmF0aW9ucyk6CisgICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guaDoKKyAgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9i
amVjdDo6cGFpbnRCb3hTaGFkb3cpOgorICAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9k
ZWxPYmplY3QuaDoKKyAgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0LmNwcDoKKyAg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJGaWVsZHNldDo6cGFpbnRCb3hEZWNvcmF0aW9ucyk6Cisg
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5oOgorICAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVGFibGUuY3BwOgorICAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjpwYWlu
dEJveERlY29yYXRpb25zKToKKyAgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmg6Cisg
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwOgorICAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRhYmxlQ2VsbDo6cGFpbnRCb3hEZWNvcmF0aW9ucyk6CisgICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaDoKKyAgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZp
ZXcuY3BwOgorICAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OnBhaW50Qm94RGVjb3JhdGlv
bnMpOgorICAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5oOgorCiAyMDExLTA2LTI4ICBF
bWlsIEEgRWtsdW5kICA8ZWFlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBF
cmljIFNlaWRlbC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2Rl
bE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3hNb2RlbE9iamVjdC5oCShyZXZpc2lvbiA4OTk3NykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAsNyArMTIw
LDcgQEAKIAogICAgIHZvaWQgcGFpbnRCb3JkZXIoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50
UmVjdCYsIGNvbnN0IFJlbmRlclN0eWxlKiwgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlID0gQmFj
a2dyb3VuZEJsZWVkTm9uZSwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlID0gdHJ1ZSwgYm9v
bCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSA9IHRydWUpOwogICAgIGJvb2wgcGFpbnROaW5lUGll
Y2VJbWFnZShHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgUmVuZGVyU3R5
bGUqLCBjb25zdCBOaW5lUGllY2VJbWFnZSYsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRl
U291cmNlT3Zlcik7Ci0gICAgdm9pZCBwYWludEJveFNoYWRvdyhHcmFwaGljc0NvbnRleHQqLCBj
b25zdCBJbnRSZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUqLCBTaGFkb3dTdHlsZSwgYm9vbCBpbmNs
dWRlTG9naWNhbExlZnRFZGdlID0gdHJ1ZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSA9
IHRydWUpOworICAgIHZvaWQgcGFpbnRCb3hTaGFkb3coR3JhcGhpY3NDb250ZXh0KiwgY29uc3Qg
TGF5b3V0UmVjdCYsIGNvbnN0IFJlbmRlclN0eWxlKiwgU2hhZG93U3R5bGUsIGJvb2wgaW5jbHVk
ZUxvZ2ljYWxMZWZ0RWRnZSA9IHRydWUsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UgPSB0
cnVlKTsKICAgICB2b2lkIHBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiwg
Y29uc3QgQ29sb3ImLCBjb25zdCBGaWxsTGF5ZXIqLCBjb25zdCBMYXlvdXRSZWN0JiwgQmFja2dy
b3VuZEJsZWVkQXZvaWRhbmNlLCBJbmxpbmVGbG93Qm94KiA9IDAsIGNvbnN0IExheW91dFNpemUm
ID0gTGF5b3V0U2l6ZSgpLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIs
IFJlbmRlck9iamVjdCogYmFja2dyb3VuZE9iamVjdCA9IDApOwogICAgIAogICAgIC8vIE92ZXJy
aWRkZW4gYnkgc3ViY2xhc3NlcyB0byBkZXRlcm1pbmUgbGluZSBoZWlnaHQgYW5kIGJhc2VsaW5l
IHBvc2l0aW9uLgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2Vs
bC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
Q2VsbC5jcHAJKHJldmlzaW9uIDg5OTc3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlQ2VsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk5Niw3ICs5OTYsNyBAQAogICAg
IH0KIH0KIAotdm9pZCBSZW5kZXJUYWJsZUNlbGw6OnBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJ
bmZvJiBwYWludEluZm8sIGNvbnN0IEludFBvaW50JiBwYWludE9mZnNldCkKK3ZvaWQgUmVuZGVy
VGFibGVDZWxsOjpwYWludEJveERlY29yYXRpb25zKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiB7CiAgICAgaWYgKCFwYWludEluZm8uc2hvdWxk
UGFpbnRXaXRoaW5Sb290KHRoaXMpKQogICAgICAgICByZXR1cm47CkBAIC0xMDA1LDcgKzEwMDUs
NyBAQAogICAgIGlmICghdGFibGVFbHQtPmNvbGxhcHNlQm9yZGVycygpICYmIHN0eWxlKCktPmVt
cHR5Q2VsbHMoKSA9PSBISURFICYmICFmaXJzdENoaWxkKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIEludFJlY3QgcGFpbnRSZWN0ID0gSW50UmVjdChwYWludE9mZnNldCwgc2l6ZSgpKTsKKyAg
ICBMYXlvdXRSZWN0IHBhaW50UmVjdCA9IExheW91dFJlY3QocGFpbnRPZmZzZXQsIHNpemUoKSk7
CiAgICAgcGFpbnRCb3hTaGFkb3cocGFpbnRJbmZvLmNvbnRleHQsIHBhaW50UmVjdCwgc3R5bGUo
KSwgTm9ybWFsKTsKICAgICAKICAgICAvLyBQYWludCBvdXIgY2VsbCBiYWNrZ3JvdW5kLgpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAkocmV2aXNpb24gODk5NzcpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1
Myw3ICszNTMsNyBAQAogICAgIHZvaWQgcG9wQ29udGVudHNDbGlwKFBhaW50SW5mbyYsIFBhaW50
UGhhc2Ugb3JpZ2luYWxQaGFzZSwgY29uc3QgSW50UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KTsK
IAogICAgIHZpcnR1YWwgdm9pZCBwYWludE9iamVjdChQYWludEluZm8mLCBjb25zdCBJbnRQb2lu
dCYpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCb3hE
ZWNvcmF0aW9ucyhQYWludEluZm8mLCBjb25zdCBJbnRQb2ludCYpOworICAgIHZpcnR1YWwgdm9p
ZCBwYWludEJveERlY29yYXRpb25zKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7CiAg
ICAgdmlydHVhbCB2b2lkIHBhaW50TWFzayhQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYp
OwogICAgIHZpcnR1YWwgdm9pZCBpbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyLCBjb25zdCBJ
bnRSZWN0KiA9IDApOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxv
d0JveC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93
Qm94LmgJKHJldmlzaW9uIDg5OTc3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGlu
ZUZsb3dCb3guaAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDExICsxMDMsMTEgQEAKIAogICAgIElu
dFJlY3Qgcm91bmRlZEZyYW1lUmVjdCgpIGNvbnN0OwogICAgIAotICAgIHZpcnR1YWwgdm9pZCBw
YWludEJveERlY29yYXRpb25zKFBhaW50SW5mbyYsIGNvbnN0IEludFBvaW50Jik7CisgICAgdmly
dHVhbCB2b2lkIHBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9p
bnQmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRNYXNrKFBhaW50SW5mbyYsIGNvbnN0IExheW91
dFBvaW50Jik7CiAgICAgdm9pZCBwYWludEZpbGxMYXllcnMoY29uc3QgUGFpbnRJbmZvJiwgY29u
c3QgQ29sb3ImLCBjb25zdCBGaWxsTGF5ZXIqLCBjb25zdCBMYXlvdXRSZWN0JiwgQ29tcG9zaXRl
T3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyKTsKICAgICB2b2lkIHBhaW50RmlsbExheWVy
KGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IENvbG9yJiwgY29uc3QgRmlsbExheWVyKiwgY29uc3Qg
TGF5b3V0UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3Zlcik7Ci0g
ICAgdm9pZCBwYWludEJveFNoYWRvdyhHcmFwaGljc0NvbnRleHQqLCBSZW5kZXJTdHlsZSosIFNo
YWRvd1N0eWxlLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdm9pZCBwYWludEJveFNoYWRvdyhHcmFw
aGljc0NvbnRleHQqLCBSZW5kZXJTdHlsZSosIFNoYWRvd1N0eWxlLCBjb25zdCBMYXlvdXRSZWN0
Jik7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IEludFBvaW50Jiwg
aW50IGxpbmVUb3AsIGludCBsaW5lQm90dG9tKTsKICAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0UG9p
bnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSW50UG9pbnQm
IHBvaW50SW5Db250YWluZXIsIGNvbnN0IEludFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgaW50
IGxpbmVUb3AsIGludCBsaW5lQm90dG9tKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0lubGluZUZsb3dCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9JbmxpbmVGbG93Qm94LmNwcAkocmV2aXNpb24gODk5NzcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNjMsNyAr
MTA2Myw3IEBACiAgICAgfQogfQogCi12b2lkIElubGluZUZsb3dCb3g6OnBhaW50Qm94U2hhZG93
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgUmVuZGVyU3R5bGUqIHMsIFNoYWRvd1N0eWxlIHNo
YWRvd1N0eWxlLCBjb25zdCBJbnRSZWN0JiBwYWludFJlY3QpCit2b2lkIElubGluZUZsb3dCb3g6
OnBhaW50Qm94U2hhZG93KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgUmVuZGVyU3R5bGUqIHMs
IFNoYWRvd1N0eWxlIHNoYWRvd1N0eWxlLCBjb25zdCBMYXlvdXRSZWN0JiBwYWludFJlY3QpCiB7
CiAgICAgaWYgKCghcHJldkxpbmVCb3goKSAmJiAhbmV4dExpbmVCb3goKSkgfHwgIXBhcmVudCgp
KQogICAgICAgICBib3hNb2RlbE9iamVjdCgpLT5wYWludEJveFNoYWRvdyhjb250ZXh0LCBwYWlu
dFJlY3QsIHMsIHNoYWRvd1N0eWxlKTsKQEAgLTEwOTQsMjAgKzEwOTQsMjAgQEAKICAgICB9CiB9
CiAKLXZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnRCb3hEZWNvcmF0aW9ucyhQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgSW50UG9pbnQmIHBhaW50T2Zmc2V0KQordm9pZCBJbmxpbmVGbG93Qm94
OjpwYWludEJveERlY29yYXRpb25zKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQ
b2ludCYgcGFpbnRPZmZzZXQpCiB7CiAgICAgaWYgKCFwYWludEluZm8uc2hvdWxkUGFpbnRXaXRo
aW5Sb290KHJlbmRlcmVyKCkpIHx8IHJlbmRlcmVyKCktPnN0eWxlKCktPnZpc2liaWxpdHkoKSAh
PSBWSVNJQkxFIHx8IHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9yZWdyb3VuZCkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgLy8gUGl4ZWwgc25hcCBiYWNrZ3JvdW5kL2JvcmRlciBwYWlu
dGluZy4KLSAgICBJbnRSZWN0IGZyYW1lUmVjdCA9IHJvdW5kZWRGcmFtZVJlY3QoKTsKKyAgICBM
YXlvdXRSZWN0IGZyYW1lUmVjdCA9IHJvdW5kZWRGcmFtZVJlY3QoKTsKIAogICAgIGNvbnN0cmFp
blRvTGluZVRvcEFuZEJvdHRvbUlmTmVlZGVkKGZyYW1lUmVjdCk7CiAgICAgCiAgICAgLy8gTW92
ZSB4L3kgdG8gb3VyIGNvb3JkaW5hdGVzLgotICAgIEludFJlY3QgbG9jYWxSZWN0KGZyYW1lUmVj
dCk7CisgICAgTGF5b3V0UmVjdCBsb2NhbFJlY3QoZnJhbWVSZWN0KTsKICAgICBmbGlwRm9yV3Jp
dGluZ01vZGUobG9jYWxSZWN0KTsKLSAgICBJbnRQb2ludCBhZGp1c3RlZFBhaW50b2Zmc2V0ID0g
cGFpbnRPZmZzZXQgKyBsb2NhbFJlY3QubG9jYXRpb24oKTsKKyAgICBMYXlvdXRQb2ludCBhZGp1
c3RlZFBhaW50b2Zmc2V0ID0gcGFpbnRPZmZzZXQgKyBsb2NhbFJlY3QubG9jYXRpb24oKTsKICAg
ICAKICAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dDsKICAg
ICAKQEAgLTExMTUsNyArMTExNSw3IEBACiAgICAgLy8gYSBsaW5lIG1heSBhY3R1YWxseSBoYXZl
IHRvIHBhaW50IGEgYmFja2dyb3VuZC4KICAgICBSZW5kZXJTdHlsZSogc3R5bGVUb1VzZSA9IHJl
bmRlcmVyKCktPnN0eWxlKG1fZmlyc3RMaW5lKTsKICAgICBpZiAoKCFwYXJlbnQoKSAmJiBtX2Zp
cnN0TGluZSAmJiBzdHlsZVRvVXNlICE9IHJlbmRlcmVyKCktPnN0eWxlKCkpIHx8IChwYXJlbnQo
KSAmJiByZW5kZXJlcigpLT5oYXNCb3hEZWNvcmF0aW9ucygpKSkgewotICAgICAgICBJbnRSZWN0
IHBhaW50UmVjdCA9IEludFJlY3QoYWRqdXN0ZWRQYWludG9mZnNldCwgZnJhbWVSZWN0LnNpemUo
KSk7CisgICAgICAgIExheW91dFJlY3QgcGFpbnRSZWN0ID0gTGF5b3V0UmVjdChhZGp1c3RlZFBh
aW50b2Zmc2V0LCBmcmFtZVJlY3Quc2l6ZSgpKTsKICAgICAgICAgLy8gU2hhZG93IGNvbWVzIGZp
cnN0IGFuZCBpcyBiZWhpbmQgdGhlIGJhY2tncm91bmQgYW5kIGJvcmRlci4KICAgICAgICAgcGFp
bnRCb3hTaGFkb3coY29udGV4dCwgc3R5bGVUb1VzZSwgTm9ybWFsLCBwYWludFJlY3QpOwogCkBA
IC0xMTQ0LDIwICsxMTQ0LDIwIEBACiAgICAgICAgICAgICAgICAgLy8gdGhlIHByZXZpb3VzIGxp
bmUgbGVmdCBvZmYuCiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdoYXQgdGhlIGhlY2sgZG8g
d2UgZG8gd2l0aCBSVEwgaGVyZT8gVGhlIG1hdGggd2UncmUgdXNpbmcgaXMgb2J2aW91c2x5IG5v
dCByaWdodCwKICAgICAgICAgICAgICAgICAvLyBidXQgaXQgaXNuJ3QgZXZlbiBjbGVhciBob3cg
dGhpcyBzaG91bGQgd29yayBhdCBhbGwuCi0gICAgICAgICAgICAgICAgaW50IGxvZ2ljYWxPZmZz
ZXRPbkxpbmUgPSAwOworICAgICAgICAgICAgICAgIExheW91dFVuaXQgbG9naWNhbE9mZnNldE9u
TGluZSA9IDA7CiAgICAgICAgICAgICAgICAgZm9yIChJbmxpbmVGbG93Qm94KiBjdXJyID0gcHJl
dkxpbmVCb3goKTsgY3VycjsgY3VyciA9IGN1cnItPnByZXZMaW5lQm94KCkpCiAgICAgICAgICAg
ICAgICAgICAgIGxvZ2ljYWxPZmZzZXRPbkxpbmUgKz0gY3Vyci0+bG9naWNhbFdpZHRoKCk7Ci0g
ICAgICAgICAgICAgICAgaW50IHRvdGFsTG9naWNhbFdpZHRoID0gbG9naWNhbE9mZnNldE9uTGlu
ZTsKKyAgICAgICAgICAgICAgICBMYXlvdXRVbml0IHRvdGFsTG9naWNhbFdpZHRoID0gbG9naWNh
bE9mZnNldE9uTGluZTsKICAgICAgICAgICAgICAgICBmb3IgKElubGluZUZsb3dCb3gqIGN1cnIg
PSB0aGlzOyBjdXJyOyBjdXJyID0gY3Vyci0+bmV4dExpbmVCb3goKSkKICAgICAgICAgICAgICAg
ICAgICAgdG90YWxMb2dpY2FsV2lkdGggKz0gY3Vyci0+bG9naWNhbFdpZHRoKCk7Ci0gICAgICAg
ICAgICAgICAgaW50IHN0cmlwWCA9IGFkanVzdGVkUGFpbnRvZmZzZXQueCgpIC0gKGlzSG9yaXpv
bnRhbCgpID8gbG9naWNhbE9mZnNldE9uTGluZSA6IDApOwotICAgICAgICAgICAgICAgIGludCBz
dHJpcFkgPSBhZGp1c3RlZFBhaW50b2Zmc2V0LnkoKSAtIChpc0hvcml6b250YWwoKSA/IDAgOiBs
b2dpY2FsT2Zmc2V0T25MaW5lKTsKLSAgICAgICAgICAgICAgICBpbnQgc3RyaXBXaWR0aCA9IGlz
SG9yaXpvbnRhbCgpID8gdG90YWxMb2dpY2FsV2lkdGggOiBmcmFtZVJlY3Qud2lkdGgoKTsKLSAg
ICAgICAgICAgICAgICBpbnQgc3RyaXBIZWlnaHQgPSBpc0hvcml6b250YWwoKSA/IGZyYW1lUmVj
dC5oZWlnaHQoKSA6IHRvdGFsTG9naWNhbFdpZHRoOworICAgICAgICAgICAgICAgIExheW91dFVu
aXQgc3RyaXBYID0gYWRqdXN0ZWRQYWludG9mZnNldC54KCkgLSAoaXNIb3Jpem9udGFsKCkgPyBs
b2dpY2FsT2Zmc2V0T25MaW5lIDogMCk7CisgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBzdHJp
cFkgPSBhZGp1c3RlZFBhaW50b2Zmc2V0LnkoKSAtIChpc0hvcml6b250YWwoKSA/IDAgOiBsb2dp
Y2FsT2Zmc2V0T25MaW5lKTsKKyAgICAgICAgICAgICAgICBMYXlvdXRVbml0IHN0cmlwV2lkdGgg
PSBpc0hvcml6b250YWwoKSA/IHRvdGFsTG9naWNhbFdpZHRoIDogZnJhbWVSZWN0LndpZHRoKCk7
CisgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBzdHJpcEhlaWdodCA9IGlzSG9yaXpvbnRhbCgp
ID8gZnJhbWVSZWN0LmhlaWdodCgpIDogdG90YWxMb2dpY2FsV2lkdGg7CiAKICAgICAgICAgICAg
ICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQpOwogICAg
ICAgICAgICAgICAgIGNvbnRleHQtPmNsaXAocGFpbnRSZWN0KTsKLSAgICAgICAgICAgICAgICBi
b3hNb2RlbE9iamVjdCgpLT5wYWludEJvcmRlcihjb250ZXh0LCBJbnRSZWN0KHN0cmlwWCwgc3Ry
aXBZLCBzdHJpcFdpZHRoLCBzdHJpcEhlaWdodCksIHJlbmRlcmVyKCktPnN0eWxlKCkpOworICAg
ICAgICAgICAgICAgIGJveE1vZGVsT2JqZWN0KCktPnBhaW50Qm9yZGVyKGNvbnRleHQsIExheW91
dFJlY3Qoc3RyaXBYLCBzdHJpcFksIHN0cmlwV2lkdGgsIHN0cmlwSGVpZ2h0KSwgcmVuZGVyZXIo
KS0+c3R5bGUoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAJKHJl
dmlzaW9uIDg5OTc3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVs
T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA5MCw3ICsyMDkwLDcgQEAKICAgICByZXR1
cm4gdW5pb25SZWN0KGJvdW5kcywgb2Zmc2V0Qm91bmRzKTsKIH0KIAotdm9pZCBSZW5kZXJCb3hN
b2RlbE9iamVjdDo6cGFpbnRCb3hTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBJbnRSZWN0JiBwYWludFJlY3QsIGNvbnN0IFJlbmRlclN0eWxlKiBzLCBTaGFkb3dTdHlsZSBz
aGFkb3dTdHlsZSwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dp
Y2FsUmlnaHRFZGdlKQordm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hTaGFkb3co
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiBwYWludFJlY3QsIGNv
bnN0IFJlbmRlclN0eWxlKiBzLCBTaGFkb3dTdHlsZSBzaGFkb3dTdHlsZSwgYm9vbCBpbmNsdWRl
TG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKQogewogICAgIC8v
IEZJWE1FOiBEZWFsIHdpdGggYm9yZGVyLWltYWdlLiAgV291bGQgYmUgZ3JlYXQgdG8gdXNlIGJv
cmRlci1pbWFnZSBhcyBhIG1hc2suCiAKQEAgLTIxMDgsOSArMjEwOCw5IEBACiAgICAgICAgIGlm
IChzaGFkb3ctPnN0eWxlKCkgIT0gc2hhZG93U3R5bGUpCiAgICAgICAgICAgICBjb250aW51ZTsK
IAotICAgICAgICBJbnRTaXplIHNoYWRvd09mZnNldChzaGFkb3ctPngoKSwgc2hhZG93LT55KCkp
OwotICAgICAgICBpbnQgc2hhZG93Qmx1ciA9IHNoYWRvdy0+Ymx1cigpOwotICAgICAgICBpbnQg
c2hhZG93U3ByZWFkID0gc2hhZG93LT5zcHJlYWQoKTsKKyAgICAgICAgTGF5b3V0U2l6ZSBzaGFk
b3dPZmZzZXQoc2hhZG93LT54KCksIHNoYWRvdy0+eSgpKTsKKyAgICAgICAgTGF5b3V0VW5pdCBz
aGFkb3dCbHVyID0gc2hhZG93LT5ibHVyKCk7CisgICAgICAgIExheW91dFVuaXQgc2hhZG93U3By
ZWFkID0gc2hhZG93LT5zcHJlYWQoKTsKICAgICAgICAgCiAgICAgICAgIGlmIChzaGFkb3dPZmZz
ZXQuaXNaZXJvKCkgJiYgIXNoYWRvd0JsdXIgJiYgIXNoYWRvd1NwcmVhZCkKICAgICAgICAgICAg
IGNvbnRpbnVlOwpAQCAtMjEyMyw3ICsyMTIzLDcgQEAKICAgICAgICAgICAgIGlmIChmaWxsUmVj
dC5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIElu
dFJlY3Qgc2hhZG93UmVjdChib3JkZXIucmVjdCgpKTsKKyAgICAgICAgICAgIExheW91dFJlY3Qg
c2hhZG93UmVjdChib3JkZXIucmVjdCgpKTsKICAgICAgICAgICAgIHNoYWRvd1JlY3QuaW5mbGF0
ZShzaGFkb3dCbHVyICsgc2hhZG93U3ByZWFkKTsKICAgICAgICAgICAgIHNoYWRvd1JlY3QubW92
ZShzaGFkb3dPZmZzZXQpOwogCkBAIC0yMTMyLDcgKzIxMzIsNyBAQAogCiAgICAgICAgICAgICAv
LyBNb3ZlIHRoZSBmaWxsIGp1c3Qgb3V0c2lkZSB0aGUgY2xpcCwgYWRkaW5nIDEgcGl4ZWwgc2Vw
YXJhdGlvbiBzbyB0aGF0IHRoZSBmaWxsIGRvZXMgbm90CiAgICAgICAgICAgICAvLyBibGVlZCBp
biAoZHVlIHRvIGFudGlhbGlhc2luZykgaWYgdGhlIGNvbnRleHQgaXMgdHJhbnNmb3JtZWQuCi0g
ICAgICAgICAgICBJbnRTaXplIGV4dHJhT2Zmc2V0KHBhaW50UmVjdC53aWR0aCgpICsgbWF4KDAs
IHNoYWRvd09mZnNldC53aWR0aCgpKSArIHNoYWRvd0JsdXIgKyAyICogc2hhZG93U3ByZWFkICsg
MSwgMCk7CisgICAgICAgICAgICBMYXlvdXRTaXplIGV4dHJhT2Zmc2V0KHBhaW50UmVjdC53aWR0
aCgpICsgbWF4KDAsIHNoYWRvd09mZnNldC53aWR0aCgpKSArIHNoYWRvd0JsdXIgKyAyICogc2hh
ZG93U3ByZWFkICsgMSwgMCk7CiAgICAgICAgICAgICBzaGFkb3dPZmZzZXQgLT0gZXh0cmFPZmZz
ZXQ7CiAgICAgICAgICAgICBmaWxsUmVjdC5tb3ZlKGV4dHJhT2Zmc2V0KTsKIApAQCAtMjE1Nyw3
ICsyMTU3LDcgQEAKICAgICAgICAgICAgICAgICBmaWxsUmVjdC5leHBhbmRSYWRpaShzaGFkb3dT
cHJlYWQpOwogICAgICAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSb3VuZGVkUmVjdChmaWxsUmVj
dCwgQ29sb3I6OmJsYWNrLCBzLT5jb2xvclNwYWNlKCkpOwogICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgICBJbnRSZWN0IHJlY3RUb0NsaXBPdXQgPSBib3JkZXIucmVjdCgpOwor
ICAgICAgICAgICAgICAgIExheW91dFJlY3QgcmVjdFRvQ2xpcE91dCA9IGJvcmRlci5yZWN0KCk7
CiAKICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgYm94IGlzIG9wYXF1ZSwgaXQgaXMgdW5uZWNl
c3NhcnkgdG8gY2xpcCBpdCBvdXQuIEhvd2V2ZXIsIGRvaW5nIHNvIHNhdmVzIHRpbWUKICAgICAg
ICAgICAgICAgICAvLyB3aGVuIHBhaW50aW5nIHRoZSBzaGFkb3cuIE9uIHRoZSBvdGhlciBoYW5k
LCBpdCBpbnRyb2R1Y2VzIHN1YnBpeGVsIGdhcHMgYWxvbmcgdGhlCkBAIC0yMTc2LDcgKzIxNzYs
NyBAQAogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gSW5z
ZXQgc2hhZG93LgotICAgICAgICAgICAgSW50UmVjdCBob2xlUmVjdChib3JkZXIucmVjdCgpKTsK
KyAgICAgICAgICAgIExheW91dFJlY3QgaG9sZVJlY3QoYm9yZGVyLnJlY3QoKSk7CiAgICAgICAg
ICAgICBob2xlUmVjdC5pbmZsYXRlKC1zaGFkb3dTcHJlYWQpOwogCiAgICAgICAgICAgICBpZiAo
aG9sZVJlY3QuaXNFbXB0eSgpKSB7CkBAIC0yMjA1LDcgKzIyMDUsNyBAQAogCiAgICAgICAgICAg
ICBDb2xvciBmaWxsQ29sb3Ioc2hhZG93Q29sb3IucmVkKCksIHNoYWRvd0NvbG9yLmdyZWVuKCks
IHNoYWRvd0NvbG9yLmJsdWUoKSwgMjU1KTsKIAotICAgICAgICAgICAgSW50UmVjdCBvdXRlclJl
Y3QgPSBhcmVhQ2FzdGluZ1NoYWRvd0luSG9sZShib3JkZXIucmVjdCgpLCBzaGFkb3dCbHVyLCBz
aGFkb3dTcHJlYWQsIHNoYWRvd09mZnNldCk7CisgICAgICAgICAgICBMYXlvdXRSZWN0IG91dGVy
UmVjdCA9IGFyZWFDYXN0aW5nU2hhZG93SW5Ib2xlKGJvcmRlci5yZWN0KCksIHNoYWRvd0JsdXIs
IHNoYWRvd1NwcmVhZCwgc2hhZG93T2Zmc2V0KTsKICAgICAgICAgICAgIFJvdW5kZWRJbnRSZWN0
IHJvdW5kZWRIb2xlKGhvbGVSZWN0LCBib3JkZXIucmFkaWkoKSk7CiAKICAgICAgICAgICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7CkBAIC0yMjE3LDcg
KzIyMTcsNyBAQAogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgY29udGV4dC0+
Y2xpcChib3JkZXIucmVjdCgpKTsKIAotICAgICAgICAgICAgSW50U2l6ZSBleHRyYU9mZnNldCgy
ICogcGFpbnRSZWN0LndpZHRoKCkgKyBtYXgoMCwgc2hhZG93T2Zmc2V0LndpZHRoKCkpICsgc2hh
ZG93Qmx1ciAtIDIgKiBzaGFkb3dTcHJlYWQgKyAxLCAwKTsKKyAgICAgICAgICAgIExheW91dFNp
emUgZXh0cmFPZmZzZXQoMiAqIHBhaW50UmVjdC53aWR0aCgpICsgbWF4KDAsIHNoYWRvd09mZnNl
dC53aWR0aCgpKSArIHNoYWRvd0JsdXIgLSAyICogc2hhZG93U3ByZWFkICsgMSwgMCk7CiAgICAg
ICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoZXh0cmFPZmZzZXQud2lkdGgoKSwgZXh0cmFPZmZz
ZXQuaGVpZ2h0KCkpOwogICAgICAgICAgICAgc2hhZG93T2Zmc2V0IC09IGV4dHJhT2Zmc2V0Owog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAkocmV2aXNpb24gODk5
NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODI3LDExICs4MjcsMTEgQEAKICAgICByZXR1cm4gQmFja2dyb3VuZEJsZWVkVXNl
VHJhbnNwYXJlbmN5TGF5ZXI7CiB9CiAKLXZvaWQgUmVuZGVyQm94OjpwYWludEJveERlY29yYXRp
b25zKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRQb2ludCYgcGFpbnRPZmZzZXQpCit2
b2lkIFJlbmRlckJveDo6cGFpbnRCb3hEZWNvcmF0aW9ucyhQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogewogICAgIGlmICghcGFpbnRJbmZvLnNo
b3VsZFBhaW50V2l0aGluUm9vdCh0aGlzKSkKICAgICAgICAgcmV0dXJuOwotICAgIEludFJlY3Qg
cGFpbnRSZWN0KHBhaW50T2Zmc2V0LCBzaXplKCkpOworICAgIExheW91dFJlY3QgcGFpbnRSZWN0
KHBhaW50T2Zmc2V0LCBzaXplKCkpOwogCiAgICAgLy8gYm9yZGVyLWZpdCBjYW4gYWRqdXN0IHdo
ZXJlIHdlIHBhaW50IG91ciBib3JkZXIgYW5kIGJhY2tncm91bmQuICBJZiBzZXQsIHdlIHNudWds
eSBmaXQgb3VyIGxpbmUgYm94IGRlc2NlbmRhbnRzLiAgKFRoZSBpQ2hhdAogICAgIC8vIGJhbGxv
b24gbGF5b3V0IGlzIGFuIGV4YW1wbGUgb2YgdGhpcykuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuaAkocmV2aXNpb24gODk5NzcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyAr
NDQsNyBAQAogICAgIHZpcnR1YWwgYm9vbCBhdm9pZHNGbG9hdHMoKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9CiAgICAgdmlydHVhbCBib29sIHN0cmV0Y2hlc1RvTWluSW50cmluc2ljTG9naWNhbFdp
ZHRoKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50Qm94
RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiwgY29uc3QgSW50UG9pbnQmKTsKKyAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRCb3hEZWNvcmF0aW9ucyhQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwog
ICAgIHZpcnR1YWwgdm9pZCBwYWludE1hc2soUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQm
KTsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0
LmNwcAkocmV2aXNpb24gODk5NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RmllbGRzZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsMTIgKzExOCwxMiBAQAogICAgIHJl
dHVybiAwOwogfQogCi12b2lkIFJlbmRlckZpZWxkc2V0OjpwYWludEJveERlY29yYXRpb25zKFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRQb2ludCYgcGFpbnRPZmZzZXQpCit2b2lkIFJl
bmRlckZpZWxkc2V0OjpwYWludEJveERlY29yYXRpb25zKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiB7CiAgICAgaWYgKCFwYWludEluZm8uc2hv
dWxkUGFpbnRXaXRoaW5Sb290KHRoaXMpKQogICAgICAgICByZXR1cm47CiAKLSAgICBJbnRSZWN0
IHBhaW50UmVjdChwYWludE9mZnNldCwgc2l6ZSgpKTsKKyAgICBMYXlvdXRSZWN0IHBhaW50UmVj
dChwYWludE9mZnNldCwgc2l6ZSgpKTsKICAgICBSZW5kZXJCb3gqIGxlZ2VuZCA9IGZpbmRMZWdl
bmQoKTsKICAgICBpZiAoIWxlZ2VuZCkKICAgICAgICAgcmV0dXJuIFJlbmRlckJsb2NrOjpwYWlu
dEJveERlY29yYXRpb25zKHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOwpAQCAtMTMyLDExICsxMzIs
MTEgQEAKICAgICAvLyBjYXNlcyB0aGUgbGVnZW5kIGlzIGVtYmVkZGVkIGluIHRoZSByaWdodCBh
bmQgYm90dG9tIGJvcmRlcnMgcmVzcGVjdGl2ZWx5LgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzIzNgogICAgIGlmIChzdHlsZSgpLT5pc0hvcml6b250
YWxXcml0aW5nTW9kZSgpKSB7Ci0gICAgICAgIGludCB5T2ZmID0gKGxlZ2VuZC0+eSgpID4gMCkg
PyAwIDogKGxlZ2VuZC0+aGVpZ2h0KCkgLSBib3JkZXJUb3AoKSkgLyAyOworICAgICAgICBMYXlv
dXRVbml0IHlPZmYgPSAobGVnZW5kLT55KCkgPiAwKSA/IDAgOiAobGVnZW5kLT5oZWlnaHQoKSAt
IGJvcmRlclRvcCgpKSAvIDI7CiAgICAgICAgIHBhaW50UmVjdC5zZXRIZWlnaHQocGFpbnRSZWN0
LmhlaWdodCgpIC0geU9mZik7CiAgICAgICAgIHBhaW50UmVjdC5zZXRZKHBhaW50UmVjdC55KCkg
KyB5T2ZmKTsKICAgICB9IGVsc2UgewotICAgICAgICBpbnQgeE9mZiA9IChsZWdlbmQtPngoKSA+
IDApID8gMCA6IChsZWdlbmQtPndpZHRoKCkgLSBib3JkZXJMZWZ0KCkpIC8gMjsKKyAgICAgICAg
TGF5b3V0VW5pdCB4T2ZmID0gKGxlZ2VuZC0+eCgpID4gMCkgPyAwIDogKGxlZ2VuZC0+d2lkdGgo
KSAtIGJvcmRlckxlZnQoKSkgLyAyOwogICAgICAgICBwYWludFJlY3Quc2V0V2lkdGgocGFpbnRS
ZWN0LndpZHRoKCkgLSB4T2ZmKTsKICAgICAgICAgcGFpbnRSZWN0LnNldFgocGFpbnRSZWN0Lngo
KSArIHhPZmYpOwogICAgIH0KQEAgLTE1NiwxMyArMTU2LDEzIEBACiAgICAgLy8gY2FzZXMgdGhl
IGxlZ2VuZCBpcyBlbWJlZGRlZCBpbiB0aGUgcmlnaHQgYW5kIGJvdHRvbSBib3JkZXJzIHJlc3Bl
Y3RpdmVseS4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDcyMzYKICAgICBpZiAoc3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkgewotICAg
ICAgICBpbnQgY2xpcFRvcCA9IHBhaW50UmVjdC55KCk7Ci0gICAgICAgIGludCBjbGlwSGVpZ2h0
ID0gbWF4KHN0YXRpY19jYXN0PGludD4oc3R5bGUoKS0+Ym9yZGVyVG9wV2lkdGgoKSksIGxlZ2Vu
ZC0+aGVpZ2h0KCkpOwotICAgICAgICBncmFwaGljc0NvbnRleHQtPmNsaXBPdXQoSW50UmVjdChw
YWludFJlY3QueCgpICsgbGVnZW5kLT54KCksIGNsaXBUb3AsIGxlZ2VuZC0+d2lkdGgoKSwgY2xp
cEhlaWdodCkpOworICAgICAgICBMYXlvdXRVbml0IGNsaXBUb3AgPSBwYWludFJlY3QueSgpOwor
ICAgICAgICBMYXlvdXRVbml0IGNsaXBIZWlnaHQgPSBtYXgoc3RhdGljX2Nhc3Q8TGF5b3V0VW5p
dD4oc3R5bGUoKS0+Ym9yZGVyVG9wV2lkdGgoKSksIGxlZ2VuZC0+aGVpZ2h0KCkpOworICAgICAg
ICBncmFwaGljc0NvbnRleHQtPmNsaXBPdXQoTGF5b3V0UmVjdChwYWludFJlY3QueCgpICsgbGVn
ZW5kLT54KCksIGNsaXBUb3AsIGxlZ2VuZC0+d2lkdGgoKSwgY2xpcEhlaWdodCkpOwogICAgIH0g
ZWxzZSB7Ci0gICAgICAgIGludCBjbGlwTGVmdCA9IHBhaW50UmVjdC54KCk7Ci0gICAgICAgIGlu
dCBjbGlwV2lkdGggPSBtYXgoc3RhdGljX2Nhc3Q8aW50PihzdHlsZSgpLT5ib3JkZXJMZWZ0V2lk
dGgoKSksIGxlZ2VuZC0+d2lkdGgoKSk7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xpcE91
dChJbnRSZWN0KGNsaXBMZWZ0LCBwYWludFJlY3QueSgpICsgbGVnZW5kLT55KCksIGNsaXBXaWR0
aCwgbGVnZW5kLT5oZWlnaHQoKSkpOworICAgICAgICBMYXlvdXRVbml0IGNsaXBMZWZ0ID0gcGFp
bnRSZWN0LngoKTsKKyAgICAgICAgTGF5b3V0VW5pdCBjbGlwV2lkdGggPSBtYXgoc3RhdGljX2Nh
c3Q8TGF5b3V0VW5pdD4oc3R5bGUoKS0+Ym9yZGVyTGVmdFdpZHRoKCkpLCBsZWdlbmQtPndpZHRo
KCkpOworICAgICAgICBncmFwaGljc0NvbnRleHQtPmNsaXBPdXQoTGF5b3V0UmVjdChjbGlwTGVm
dCwgcGFpbnRSZWN0LnkoKSArIGxlZ2VuZC0+eSgpLCBjbGlwV2lkdGgsIGxlZ2VuZC0+aGVpZ2h0
KCkpKTsKICAgICB9CiAKICAgICBwYWludEJvcmRlcihwYWludEluZm8uY29udGV4dCwgcGFpbnRS
ZWN0LCBzdHlsZSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5j
cHAJKHJldmlzaW9uIDg5OTc3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZp
ZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODUsNyArMTg1LDcgQEAKICAgICAgICAgJiYgIWlz
Q29tcG9zaXRlZChvYmplY3QpOwogfQogICAgIAotdm9pZCBSZW5kZXJWaWV3OjpwYWludEJveERl
Y29yYXRpb25zKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRQb2ludCYpCit2b2lkIFJl
bmRlclZpZXc6OnBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dFBvaW50JikKIHsKICAgICAvLyBDaGVjayB0byBzZWUgaWYgd2UgYXJlIGVuY2xvc2Vk
IGJ5IGEgbGF5ZXIgdGhhdCByZXF1aXJlcyBjb21wbGV4IHBhaW50aW5nIHJ1bGVzLiAgSWYgc28s
IHdlIGNhbm5vdCBibGl0CiAgICAgLy8gd2hlbiBzY3JvbGxpbmcsIGFuZCB3ZSBuZWVkIHRvIHVz
ZSBzbG93IHJlcGFpbnRzLiAgRXhhbXBsZXMgb2YgbGF5ZXJzIHRoYXQgcmVxdWlyZSB0aGlzIGFy
ZSB0cmFuc3BhcmVudCBsYXllcnMsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUYWJsZS5jcHAJKHJldmlzaW9uIDg5OTc3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQ5LDEyICs1NDksMTIgQEAKICAg
ICB9CiB9CiAKLXZvaWQgUmVuZGVyVGFibGU6OnBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IEludFBvaW50JiBwYWludE9mZnNldCkKK3ZvaWQgUmVuZGVyVGFi
bGU6OnBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91
dFBvaW50JiBwYWludE9mZnNldCkKIHsKICAgICBpZiAoIXBhaW50SW5mby5zaG91bGRQYWludFdp
dGhpblJvb3QodGhpcykpCiAgICAgICAgIHJldHVybjsKIAotICAgIEludFJlY3QgcmVjdChwYWlu
dE9mZnNldCwgc2l6ZSgpKTsKKyAgICBMYXlvdXRSZWN0IHJlY3QocGFpbnRPZmZzZXQsIHNpemUo
KSk7CiAgICAgc3VidHJhY3RDYXB0aW9uUmVjdChyZWN0KTsKIAogICAgIHBhaW50Qm94U2hhZG93
KHBhaW50SW5mby5jb250ZXh0LCByZWN0LCBzdHlsZSgpLCBOb3JtYWwpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCShyZXZpc2lvbiA4OTk3NykKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcw
LDcgQEAKICAgICB2aXJ0dWFsIHZvaWQgcmVwYWludFJlY3RhbmdsZUluVmlld0FuZENvbXBvc2l0
ZWRMYXllcnMoY29uc3QgSW50UmVjdCYsIGJvb2wgaW1tZWRpYXRlID0gZmFsc2UpOwogCiAgICAg
dmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IEludFBvaW50Jik7Ci0gICAgdmly
dHVhbCB2b2lkIHBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiwgY29uc3QgSW50UG9pbnQm
KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCb3hEZWNvcmF0aW9ucyhQYWludEluZm8mLCBjb25z
dCBMYXlvdXRQb2ludCYpOwogCiAgICAgZW51bSBTZWxlY3Rpb25SZXBhaW50TW9kZSB7IFJlcGFp
bnROZXdYT1JPbGQsIFJlcGFpbnROZXdNaW51c09sZCB9OwogICAgIHZvaWQgc2V0U2VsZWN0aW9u
KFJlbmRlck9iamVjdCogc3RhcnQsIGludCBzdGFydFBvcywgUmVuZGVyT2JqZWN0KiBlbmQsIGlu
dCBlbmRQb3MsIFNlbGVjdGlvblJlcGFpbnRNb2RlID0gUmVwYWludE5ld1hPUk9sZCk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oCShyZXZpc2lvbiA4
OTk3NykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaAkod29y
a2luZyBjb3B5KQpAQCAtMTQyLDcgKzE0Miw3IEBACiAKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0
ZUxvZ2ljYWxXaWR0aCgpOwogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50Qm94RGVjb3JhdGlvbnMo
UGFpbnRJbmZvJiwgY29uc3QgSW50UG9pbnQmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCb3hE
ZWNvcmF0aW9ucyhQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwogICAgIHZpcnR1YWwg
dm9pZCBwYWludE1hc2soUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKIAogICAgIHZp
cnR1YWwgSW50U2l6ZSBvZmZzZXRGcm9tQ29udGFpbmVyKFJlbmRlck9iamVjdCosIGNvbnN0IElu
dFBvaW50JikgY29uc3Q7Cg==
</data>
<flag name="commit-queue"
          id="93386"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>