<?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>95213</bug_id>
          
          <creation_ts>2012-08-28 09:51:33 -0700</creation_ts>
          <short_desc>[New Multicolumn] Rename some RenderFlowThread methods and add some arguments to functions</short_desc>
          <delta_ts>2012-08-28 10:59:08 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dave Hyatt">hyatt</reporter>
          <assigned_to name="Dave Hyatt">hyatt</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>706448</commentid>
    <comment_count>0</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2012-08-28 09:51:33 -0700</bug_when>
    <thetext>Rename paintIntoRegion and hitTestRegion so that they can take a flow thread portion that isn&apos;t necessarily tied to the flow thread portion of the entire region. In order to work with region sets like the new multicolumn layout, these functions have to be able to paint a portion of a portion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706454</commentid>
    <comment_count>1</comment_count>
      <attachid>161002</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2012-08-28 09:55:50 -0700</bug_when>
    <thetext>Created attachment 161002
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706463</commentid>
    <comment_count>2</comment_count>
      <attachid>161002</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-08-28 10:05:57 -0700</bug_when>
    <thetext>Comment on attachment 161002
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        Rename regionRect()/setRegionRect()/m_regionRect on RenderRegion to be flowThreadPortionRect instead.

flowThreadPortion is a bit of a mouthful, but I can&apos;t think of anything better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706516</commentid>
    <comment_count>3</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2012-08-28 10:59:08 -0700</bug_when>
    <thetext>Landed in r126895.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161002</attachid>
            <date>2012-08-28 09:55:50 -0700</date>
            <delta_ts>2012-08-28 10:05:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>25749</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNjg4OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDEyLTA4LTI4ICBEYXZpZCBI
eWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KKworICAgICAgICBbTmV3IE11bHRpY29sdW1uXSBSZW5h
bWUgc29tZSBmbG93IHRocmVhZCBtZXRob2RzIGFuZCByZWdpb24gbWV0aG9kcy9tZW1iZXJzIHRv
IG1ha2UgdGhlbQorICAgICAgICBtb3JlIGFjY3VyYXRlIGFuZCBhbHNvIGNoYW5nZSBzb21lIGZ1
bmN0aW9uIHNpZ25hdHVyZXMgc28gdGhleSBjYW4gYmUgdXNlZCBieSBSZW5kZXJNdWx0aUNvbHVt
blNldC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1
MjEzCisgICAgICAgIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBSZW5hbWUgcmVnaW9uUmVjdCgpL3NldFJlZ2lvblJlY3QoKS9tX3JlZ2lvblJlY3Qgb24g
UmVuZGVyUmVnaW9uIHRvIGJlIGZsb3dUaHJlYWRQb3J0aW9uUmVjdCBpbnN0ZWFkLgorICAgICAg
ICBUaGUgdGVybSByZWdpb25SZWN0KCkgbWFrZXMgaXQgc291bmQgbGlrZSB5b3UncmUgcGFpbnRp
bmcgYSByZWN0IGluIHRoZSByZWdpb24ncyBjb29yZGluYXRlIHNwYWNlLAorICAgICAgICBidXQg
cmVnaW9uUmVjdCgpIGFjdHVhbGx5IHJlcHJlc2VudHMgdGhlIHBvcnRpb24gb2YgdGhlIGZsb3cg
dGhyZWFkIGluIHRoZSBmbG93IHRocmVhZCdzIGNvb3JkaW5hdGUgc3BhY2UKKyAgICAgICAgdGhh
dCB0aGlzIHJlZ2lvbiAib3ducy4iCisgICAgICAgIAorICAgICAgICBBbHNvIGZpeCBwYWludElu
dG9SZWdpb24gYW5kIGhpdFRlc3RSZWdpb24gdG8gdGFrZSBzcGVjaWZpYyBmbG93IHRocmVhZCBw
b3J0aW9uIHJlY3RzIHRvIHBhaW50LiBUaGlzCisgICAgICAgIGFsbG93cyBhIHJlZ2lvbiBzZXQg
dG8gcGFpbnQgYSBwb3J0aW9uIG9mIGEgcG9ydGlvbiwgaS5lLiwgaWYgYSBtdWx0aWNvbHVtbiBz
ZXQgb3ducyBwYXJ0IG9mIHRoZSBmbG93IHRocmVhZAorICAgICAgICBpdCBoYXMgdG8gYmUgYWJs
ZSB0byBmdXJ0aGVyIGJyZWFrIHVwIHRoYXQgcGFydCBpbnRvIGluZGl2aWR1YWwgY29sdW1ucyBh
bmQgaXNzdWUgbXVsdGlwbGUgcGFpbnQgY2FsbHMsIG9uZQorICAgICAgICBmb3IgZWFjaCBjb2x1
bW4uCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjpsYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyRmxvd1RocmVhZDo6cGFpbnRGbG93VGhyZWFkUG9ydGlvbkluUmVnaW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6OmhpdFRlc3RGbG93VGhyZWFkUG9ydGlvbklu
UmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6OnJlcGFpbnRSZWN0
YW5nbGVJblJlZ2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6cmVu
ZGVyUmVnaW9uRm9yTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjpy
ZWdpb25Mb2dpY2FsVG9wRm9yTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhy
ZWFkOjpyZWdpb25Mb2dpY2FsV2lkdGhGb3JMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckZsb3dUaHJlYWQ6OnJlZ2lvbkxvZ2ljYWxIZWlnaHRGb3JMaW5lKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckZsb3dUaHJlYWQ6OnJlZ2lvblJlbWFpbmluZ0xvZ2ljYWxIZWlnaHRGb3JMaW5l
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6Om1hcEZyb21GbG93VG9SZWdp
b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6Y29udGVudExvZ2ljYWxM
ZWZ0T2ZGaXJzdFJlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjpj
b21wdXRlT3ZlcmZsb3dTdGF0ZUZvclJlZ2lvbnMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJGbG93VGhyZWFkLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck11bHRpQ29sdW1uU2V0Ojpjb2x1bW5Db3Vu
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNdWx0aUNvbHVtblNldDo6cGFpbnRDb2x1bW5D
b250ZW50cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJSZWdpb246OmZsb3dUaHJlYWRQb3J0aW9uT3ZlcmZsb3dSZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlZ2lvbjo6cGFpbnRSZXBsYWNlZCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJSZWdpb246Om5vZGVBdFBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclJlZ2lvbjo6bGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlZ2lvbjo6
b2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclJlZ2lvbi5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVnaW9uOjpzZXRGbG93VGhy
ZWFkUG9ydGlvblJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVnaW9uOjpmbG93VGhy
ZWFkUG9ydGlvblJlY3QpOgorICAgICAgICAoUmVuZGVyUmVnaW9uKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyUmVnaW9uU2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlZ2lv
blNldDo6ZXhwYW5kVG9FbmNvbXBhc3NGbG93VGhyZWFkQ29udGVudHNJZk5lZWRlZCk6CisKIDIw
MTItMDgtMjggIElhaW4gTWVycmljayAgPGh1c2t5QGNocm9taXVtLm9yZz4KIAogICAgICAgICBb
Y2hyb21pdW1dIFNwbGl0IHNvbWUgQVNTRVJUKGEgJiYgYiAmJiBjKSBzdGF0ZW1lbnRzIGludG8g
c2VwYXJhdGUgbGluZXMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxv
d1RocmVhZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZsb3dUaHJlYWQuY3BwCShyZXZpc2lvbiAxMjY2MDIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NSw3ICsxNzUs
NyBAQCB2b2lkIFJlbmRlckZsb3dUaHJlYWQ6OmxheW91dCgpCiAgICAgICAgICAgICAgICAgTGF5
b3V0VW5pdCByZWdpb25Mb2dpY2FsSGVpZ2h0ID0gcmVnaW9uLT5sb2dpY2FsSGVpZ2h0Rm9yRmxv
d1RocmVhZENvbnRlbnQoKTsKICAgICAKICAgICAgICAgICAgICAgICBMYXlvdXRSZWN0IHJlZ2lv
blJlY3Qoc3R5bGUoKS0+ZGlyZWN0aW9uKCkgPT0gTFRSID8gWkVST19MQVlPVVRfVU5JVCA6IGxv
Z2ljYWxXaWR0aCgpIC0gcmVnaW9uTG9naWNhbFdpZHRoLCBsb2dpY2FsSGVpZ2h0LCByZWdpb25M
b2dpY2FsV2lkdGgsIHJlZ2lvbkxvZ2ljYWxIZWlnaHQpOwotICAgICAgICAgICAgICAgIHJlZ2lv
bi0+c2V0UmVnaW9uUmVjdChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gcmVnaW9uUmVjdCA6
IHJlZ2lvblJlY3QudHJhbnNwb3NlZFJlY3QoKSk7CisgICAgICAgICAgICAgICAgcmVnaW9uLT5z
ZXRGbG93VGhyZWFkUG9ydGlvblJlY3QoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IHJlZ2lv
blJlY3QgOiByZWdpb25SZWN0LnRyYW5zcG9zZWRSZWN0KCkpOwogICAgICAgICAgICAgICAgIGxv
Z2ljYWxIZWlnaHQgKz0gcmVnaW9uTG9naWNhbEhlaWdodDsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQpAQCAtMjM0LDcgKzIzNCw3IEBAIHZvaWQgUmVuZGVyRmxvd1RocmVhZDo6Y29tcHV0ZUxv
Z2ljYWxIZWkKICAgICBzZXRMb2dpY2FsSGVpZ2h0KGxvZ2ljYWxIZWlnaHQpOwogfQogCi12b2lk
IFJlbmRlckZsb3dUaHJlYWQ6OnBhaW50SW50b1JlZ2lvbihQYWludEluZm8mIHBhaW50SW5mbywg
UmVuZGVyUmVnaW9uKiByZWdpb24sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKK3Zv
aWQgUmVuZGVyRmxvd1RocmVhZDo6cGFpbnRGbG93VGhyZWFkUG9ydGlvbkluUmVnaW9uKFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBSZW5kZXJSZWdpb24qIHJlZ2lvbiwgTGF5b3V0UmVjdCBmbG93VGhy
ZWFkUG9ydGlvblJlY3QsIExheW91dFJlY3QgZmxvd1RocmVhZFBvcnRpb25PdmVyZmxvd1JlY3Qs
IGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkgY29uc3QKIHsKICAgICBHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dDsKICAgICBpZiAoIWNvbnRleHQpCkBA
IC0yNDMsOSArMjQzLDcgQEAgdm9pZCBSZW5kZXJGbG93VGhyZWFkOjpwYWludEludG9SZWdpb24o
UAogICAgIC8vIEFkanVzdCB0aGUgY2xpcHBpbmcgcmVjdCBmb3IgdGhlIHJlZ2lvbi4KICAgICAv
LyBwYWludE9mZnNldCBjb250YWlucyB0aGUgb2Zmc2V0IHdoZXJlIHRoZSBwYWludGluZyBzaG91
bGQgb2NjdXIKICAgICAvLyBhZGp1c3RlZCB3aXRoIHRoZSByZWdpb24gcGFkZGluZyBhbmQgYm9y
ZGVyLgotICAgIExheW91dFJlY3QgcmVnaW9uUmVjdChyZWdpb24tPnJlZ2lvblJlY3QoKSk7Ci0g
ICAgTGF5b3V0UmVjdCByZWdpb25PdmVyc2V0UmVjdChyZWdpb24tPnJlZ2lvbk92ZXJzZXRSZWN0
KCkpOwotICAgIExheW91dFJlY3QgcmVnaW9uQ2xpcHBpbmdSZWN0KHBhaW50T2Zmc2V0ICsgKHJl
Z2lvbk92ZXJzZXRSZWN0LmxvY2F0aW9uKCkgLSByZWdpb25SZWN0LmxvY2F0aW9uKCkpLCByZWdp
b25PdmVyc2V0UmVjdC5zaXplKCkpOworICAgIExheW91dFJlY3QgcmVnaW9uQ2xpcHBpbmdSZWN0
KHBhaW50T2Zmc2V0ICsgKGZsb3dUaHJlYWRQb3J0aW9uT3ZlcmZsb3dSZWN0LmxvY2F0aW9uKCkg
LSBmbG93VGhyZWFkUG9ydGlvblJlY3QubG9jYXRpb24oKSksIGZsb3dUaHJlYWRQb3J0aW9uT3Zl
cmZsb3dSZWN0LnNpemUoKSk7CiAKICAgICBQYWludEluZm8gaW5mbyhwYWludEluZm8pOwogICAg
IGluZm8ucmVjdC5pbnRlcnNlY3QocGl4ZWxTbmFwcGVkSW50UmVjdChyZWdpb25DbGlwcGluZ1Jl
Y3QpKTsKQEAgLTI1NywxNCArMjU1LDE0IEBAIHZvaWQgUmVuZGVyRmxvd1RocmVhZDo6cGFpbnRJ
bnRvUmVnaW9uKFAKIAogICAgICAgICAvLyBSZW5kZXJGbG93VGhyZWFkIHNob3VsZCBzdGFydCBw
YWludGluZyBpdHMgY29udGVudCBpbiBhIHBvc2l0aW9uIHRoYXQgaXMgb2Zmc2V0CiAgICAgICAg
IC8vIGZyb20gdGhlIHJlZ2lvbiByZWN0J3MgY3VycmVudCBwb3NpdGlvbi4gVGhlIGFtb3VudCBv
ZiBvZmZzZXQgaXMgZXF1YWwgdG8gdGhlIGxvY2F0aW9uIG9mCi0gICAgICAgIC8vIHJlZ2lvbiBp
biBmbG93IGNvb3JkaW5hdGVzLgorICAgICAgICAvLyB0aGUgZmxvdyB0aHJlYWQgcG9ydGlvbiBp
biB0aGUgZmxvdyB0aHJlYWQncyBsb2NhbCBjb29yZGluYXRlcy4KICAgICAgICAgSW50UG9pbnQg
cmVuZGVyRmxvd1RocmVhZE9mZnNldDsKICAgICAgICAgaWYgKHN0eWxlKCktPmlzRmxpcHBlZEJs
b2Nrc1dyaXRpbmdNb2RlKCkpIHsKLSAgICAgICAgICAgIExheW91dFJlY3QgZmxpcHBlZFJlZ2lv
blJlY3QocmVnaW9uUmVjdCk7Ci0gICAgICAgICAgICBmbGlwRm9yV3JpdGluZ01vZGUoZmxpcHBl
ZFJlZ2lvblJlY3QpOwotICAgICAgICAgICAgcmVuZGVyRmxvd1RocmVhZE9mZnNldCA9IHJvdW5k
ZWRJbnRQb2ludChwYWludE9mZnNldCAtIGZsaXBwZWRSZWdpb25SZWN0LmxvY2F0aW9uKCkpOwor
ICAgICAgICAgICAgTGF5b3V0UmVjdCBmbGlwcGVkRmxvd1RocmVhZFBvcnRpb25SZWN0KGZsb3dU
aHJlYWRQb3J0aW9uUmVjdCk7CisgICAgICAgICAgICBmbGlwRm9yV3JpdGluZ01vZGUoZmxpcHBl
ZEZsb3dUaHJlYWRQb3J0aW9uUmVjdCk7CisgICAgICAgICAgICByZW5kZXJGbG93VGhyZWFkT2Zm
c2V0ID0gcm91bmRlZEludFBvaW50KHBhaW50T2Zmc2V0IC0gZmxpcHBlZEZsb3dUaHJlYWRQb3J0
aW9uUmVjdC5sb2NhdGlvbigpKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICByZW5kZXJG
bG93VGhyZWFkT2Zmc2V0ID0gcm91bmRlZEludFBvaW50KHBhaW50T2Zmc2V0IC0gcmVnaW9uUmVj
dC5sb2NhdGlvbigpKTsKKyAgICAgICAgICAgIHJlbmRlckZsb3dUaHJlYWRPZmZzZXQgPSByb3Vu
ZGVkSW50UG9pbnQocGFpbnRPZmZzZXQgLSBmbG93VGhyZWFkUG9ydGlvblJlY3QubG9jYXRpb24o
KSk7CiAKICAgICAgICAgY29udGV4dC0+dHJhbnNsYXRlKHJlbmRlckZsb3dUaHJlYWRPZmZzZXQu
eCgpLCByZW5kZXJGbG93VGhyZWFkT2Zmc2V0LnkoKSk7CiAgICAgICAgIGluZm8ucmVjdC5tb3Zl
QnkoLXJlbmRlckZsb3dUaHJlYWRPZmZzZXQpOwpAQCAtMjc1LDIxICsyNzMsMTkgQEAgdm9pZCBS
ZW5kZXJGbG93VGhyZWFkOjpwYWludEludG9SZWdpb24oUAogICAgIH0KIH0KIAotYm9vbCBSZW5k
ZXJGbG93VGhyZWFkOjpoaXRUZXN0UmVnaW9uKFJlbmRlclJlZ2lvbiogcmVnaW9uLCBjb25zdCBI
aXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBjb25zdCBIaXRU
ZXN0UG9pbnQmIHBvaW50SW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRl
ZE9mZnNldCkKK2Jvb2wgUmVuZGVyRmxvd1RocmVhZDo6aGl0VGVzdEZsb3dUaHJlYWRQb3J0aW9u
SW5SZWdpb24oUmVuZGVyUmVnaW9uKiByZWdpb24sIExheW91dFJlY3QgZmxvd1RocmVhZFBvcnRp
b25SZWN0LCBMYXlvdXRSZWN0IGZsb3dUaHJlYWRQb3J0aW9uT3ZlcmZsb3dSZWN0LCBjb25zdCBI
aXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBjb25zdCBIaXRU
ZXN0UG9pbnQmIHBvaW50SW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRl
ZE9mZnNldCkgY29uc3QKIHsKLSAgICBMYXlvdXRSZWN0IHJlZ2lvblJlY3QocmVnaW9uLT5yZWdp
b25SZWN0KCkpOwotICAgIExheW91dFJlY3QgcmVnaW9uT3ZlcnNldFJlY3QgPSByZWdpb24tPnJl
Z2lvbk92ZXJzZXRSZWN0KCk7Ci0gICAgTGF5b3V0UmVjdCByZWdpb25DbGlwcGluZ1JlY3QoYWNj
dW11bGF0ZWRPZmZzZXQgKyAocmVnaW9uT3ZlcnNldFJlY3QubG9jYXRpb24oKSAtIHJlZ2lvblJl
Y3QubG9jYXRpb24oKSksIHJlZ2lvbk92ZXJzZXRSZWN0LnNpemUoKSk7CisgICAgTGF5b3V0UmVj
dCByZWdpb25DbGlwcGluZ1JlY3QoYWNjdW11bGF0ZWRPZmZzZXQgKyAoZmxvd1RocmVhZFBvcnRp
b25PdmVyZmxvd1JlY3QubG9jYXRpb24oKSAtIGZsb3dUaHJlYWRQb3J0aW9uUmVjdC5sb2NhdGlv
bigpKSwgZmxvd1RocmVhZFBvcnRpb25PdmVyZmxvd1JlY3Quc2l6ZSgpKTsKICAgICBpZiAoIXJl
Z2lvbkNsaXBwaW5nUmVjdC5jb250YWlucyhwb2ludEluQ29udGFpbmVyLnBvaW50KCkpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBMYXlvdXRTaXplIHJlbmRlckZsb3dUaHJlYWRPZmZz
ZXQ7CiAgICAgaWYgKHN0eWxlKCktPmlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkpIHsKLSAg
ICAgICAgTGF5b3V0UmVjdCBmbGlwcGVkUmVnaW9uUmVjdChyZWdpb25SZWN0KTsKLSAgICAgICAg
ZmxpcEZvcldyaXRpbmdNb2RlKGZsaXBwZWRSZWdpb25SZWN0KTsKLSAgICAgICAgcmVuZGVyRmxv
d1RocmVhZE9mZnNldCA9IGFjY3VtdWxhdGVkT2Zmc2V0IC0gZmxpcHBlZFJlZ2lvblJlY3QubG9j
YXRpb24oKTsKKyAgICAgICAgTGF5b3V0UmVjdCBmbGlwcGVkRmxvd1RocmVhZFBvcnRpb25SZWN0
KGZsb3dUaHJlYWRQb3J0aW9uUmVjdCk7CisgICAgICAgIGZsaXBGb3JXcml0aW5nTW9kZShmbGlw
cGVkRmxvd1RocmVhZFBvcnRpb25SZWN0KTsKKyAgICAgICAgcmVuZGVyRmxvd1RocmVhZE9mZnNl
dCA9IGFjY3VtdWxhdGVkT2Zmc2V0IC0gZmxpcHBlZEZsb3dUaHJlYWRQb3J0aW9uUmVjdC5sb2Nh
dGlvbigpOwogICAgIH0gZWxzZQotICAgICAgICByZW5kZXJGbG93VGhyZWFkT2Zmc2V0ID0gYWNj
dW11bGF0ZWRPZmZzZXQgLSByZWdpb25SZWN0LmxvY2F0aW9uKCk7CisgICAgICAgIHJlbmRlckZs
b3dUaHJlYWRPZmZzZXQgPSBhY2N1bXVsYXRlZE9mZnNldCAtIGZsb3dUaHJlYWRQb3J0aW9uUmVj
dC5sb2NhdGlvbigpOwogCiAgICAgLy8gQWx3YXlzIGlnbm9yZSBjbGlwcGluZywgc2luY2UgdGhl
IFJlbmRlckZsb3dUaHJlYWQgaGFzIG5vdGhpbmcgdG8gZG8gd2l0aCB0aGUgYm91bmRzIG9mIHRo
ZSBGcmFtZVZpZXcuCiAgICAgSGl0VGVzdFJlcXVlc3QgbmV3UmVxdWVzdChyZXF1ZXN0LnR5cGUo
KSB8IEhpdFRlc3RSZXF1ZXN0OjpJZ25vcmVDbGlwcGluZyk7CkBAIC0zMjQsMTggKzMyMCwxOCBA
QCB2b2lkIFJlbmRlckZsb3dUaHJlYWQ6OnJlcGFpbnRSZWN0YW5nbGVJCiAgICAgICAgICAgICBj
b250aW51ZTsKIAogICAgICAgICAvLyBXZSBvbmx5IGhhdmUgdG8gaXNzdWUgYSByZXBhaW50IGlu
IHRoaXMgcmVnaW9uIGlmIHRoZSByZWdpb24gcmVjdCBpbnRlcnNlY3RzIHRoZSByZXBhaW50IHJl
Y3QuCi0gICAgICAgIExheW91dFJlY3QgZmxpcHBlZFJlZ2lvblJlY3QocmVnaW9uLT5yZWdpb25S
ZWN0KCkpOwotICAgICAgICBMYXlvdXRSZWN0IGZsaXBwZWRSZWdpb25PdmVyc2V0UmVjdChyZWdp
b24tPnJlZ2lvbk92ZXJzZXRSZWN0KCkpOwotICAgICAgICBmbGlwRm9yV3JpdGluZ01vZGUoZmxp
cHBlZFJlZ2lvblJlY3QpOyAvLyBQdXQgdGhlIHJlZ2lvbiByZWN0cyBpbnRvIHBoeXNpY2FsIGNv
b3JkaW5hdGVzLgotICAgICAgICBmbGlwRm9yV3JpdGluZ01vZGUoZmxpcHBlZFJlZ2lvbk92ZXJz
ZXRSZWN0KTsKKyAgICAgICAgTGF5b3V0UmVjdCBmbGlwcGVkRmxvd1RocmVhZFBvcnRpb25SZWN0
KHJlZ2lvbi0+Zmxvd1RocmVhZFBvcnRpb25SZWN0KCkpOworICAgICAgICBMYXlvdXRSZWN0IGZs
aXBwZWRGbG93VGhyZWFkUG9ydGlvbk92ZXJmbG93UmVjdChyZWdpb24tPmZsb3dUaHJlYWRQb3J0
aW9uT3ZlcmZsb3dSZWN0KCkpOworICAgICAgICBmbGlwRm9yV3JpdGluZ01vZGUoZmxpcHBlZEZs
b3dUaHJlYWRQb3J0aW9uUmVjdCk7IC8vIFB1dCB0aGUgcmVnaW9uIHJlY3RzIGludG8gcGh5c2lj
YWwgY29vcmRpbmF0ZXMuCisgICAgICAgIGZsaXBGb3JXcml0aW5nTW9kZShmbGlwcGVkRmxvd1Ro
cmVhZFBvcnRpb25PdmVyZmxvd1JlY3QpOwogCiAgICAgICAgIExheW91dFJlY3QgY2xpcHBlZFJl
Y3QocmVwYWludFJlY3QpOwotICAgICAgICBjbGlwcGVkUmVjdC5pbnRlcnNlY3QoZmxpcHBlZFJl
Z2lvbk92ZXJzZXRSZWN0KTsKKyAgICAgICAgY2xpcHBlZFJlY3QuaW50ZXJzZWN0KGZsaXBwZWRG
bG93VGhyZWFkUG9ydGlvbk92ZXJmbG93UmVjdCk7CiAgICAgICAgIGlmIChjbGlwcGVkUmVjdC5p
c0VtcHR5KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAvLyBQdXQgdGhlIHJl
Z2lvbiByZWN0IGludG8gdGhlIHJlZ2lvbidzIHBoeXNpY2FsIGNvb3JkaW5hdGUgc3BhY2UuCi0g
ICAgICAgIGNsaXBwZWRSZWN0LnNldExvY2F0aW9uKHJlZ2lvbi0+Y29udGVudEJveFJlY3QoKS5s
b2NhdGlvbigpICsgKGNsaXBwZWRSZWN0LmxvY2F0aW9uKCkgLSBmbGlwcGVkUmVnaW9uUmVjdC5s
b2NhdGlvbigpKSk7CisgICAgICAgIGNsaXBwZWRSZWN0LnNldExvY2F0aW9uKHJlZ2lvbi0+Y29u
dGVudEJveFJlY3QoKS5sb2NhdGlvbigpICsgKGNsaXBwZWRSZWN0LmxvY2F0aW9uKCkgLSBmbGlw
cGVkRmxvd1RocmVhZFBvcnRpb25SZWN0LmxvY2F0aW9uKCkpKTsKIAogICAgICAgICAvLyBOb3cg
c3dpdGNoIHRvIHRoZSByZWdpb24ncyB3cml0aW5nIG1vZGUgY29vcmRpbmF0ZSBzcGFjZSBhbmQg
bGV0IGl0IHJlcGFpbnQgaXRzZWxmLgogICAgICAgICByZWdpb24tPmZsaXBGb3JXcml0aW5nTW9k
ZShjbGlwcGVkUmVjdCk7CkBAIC0zNjYsNyArMzYyLDcgQEAgUmVuZGVyUmVnaW9uKiBSZW5kZXJG
bG93VGhyZWFkOjpyZW5kZXJSZQogICAgICAgICBpZiAocG9zaXRpb24gPD0gMCkKICAgICAgICAg
ICAgIHJldHVybiByZWdpb247CiAKLSAgICAgICAgTGF5b3V0UmVjdCByZWdpb25SZWN0ID0gcmVn
aW9uLT5yZWdpb25SZWN0KCk7CisgICAgICAgIExheW91dFJlY3QgcmVnaW9uUmVjdCA9IHJlZ2lv
bi0+Zmxvd1RocmVhZFBvcnRpb25SZWN0KCk7CiAKICAgICAgICAgaWYgKCh1c2VIb3Jpem9udGFs
V3JpdGluZ01vZGUgJiYgcG9zaXRpb24gPCByZWdpb25SZWN0Lm1heFkoKSkgfHwgKCF1c2VIb3Jp
em9udGFsV3JpdGluZ01vZGUgJiYgcG9zaXRpb24gPCByZWdpb25SZWN0Lm1heFgoKSkpCiAgICAg
ICAgICAgICByZXR1cm4gcmVnaW9uOwpAQCAtMzgzLDcgKzM3OSw3IEBAIExheW91dFVuaXQgUmVu
ZGVyRmxvd1RocmVhZDo6cmVnaW9uTG9naWMKICAgICBSZW5kZXJSZWdpb24qIHJlZ2lvbiA9IHJl
bmRlclJlZ2lvbkZvckxpbmUocG9zaXRpb24pOwogICAgIGlmICghcmVnaW9uKQogICAgICAgICBy
ZXR1cm4gMDsKLSAgICByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IHJlZ2lvbi0+
cmVnaW9uUmVjdCgpLnkoKSA6IHJlZ2lvbi0+cmVnaW9uUmVjdCgpLngoKTsKKyAgICByZXR1cm4g
aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IHJlZ2lvbi0+Zmxvd1RocmVhZFBvcnRpb25SZWN0
KCkueSgpIDogcmVnaW9uLT5mbG93VGhyZWFkUG9ydGlvblJlY3QoKS54KCk7CiB9CiAKIExheW91
dFVuaXQgUmVuZGVyRmxvd1RocmVhZDo6cmVnaW9uTG9naWNhbFdpZHRoRm9yTGluZShMYXlvdXRV
bml0IHBvc2l0aW9uKSBjb25zdApAQCAtMzkxLDcgKzM4Nyw3IEBAIExheW91dFVuaXQgUmVuZGVy
Rmxvd1RocmVhZDo6cmVnaW9uTG9naWMKICAgICBSZW5kZXJSZWdpb24qIHJlZ2lvbiA9IHJlbmRl
clJlZ2lvbkZvckxpbmUocG9zaXRpb24sIHRydWUpOwogICAgIGlmICghcmVnaW9uKQogICAgICAg
ICByZXR1cm4gY29udGVudExvZ2ljYWxXaWR0aCgpOwotICAgIHJldHVybiBpc0hvcml6b250YWxX
cml0aW5nTW9kZSgpID8gcmVnaW9uLT5yZWdpb25SZWN0KCkud2lkdGgoKSA6IHJlZ2lvbi0+cmVn
aW9uUmVjdCgpLmhlaWdodCgpOworICAgIHJldHVybiBpc0hvcml6b250YWxXcml0aW5nTW9kZSgp
ID8gcmVnaW9uLT5mbG93VGhyZWFkUG9ydGlvblJlY3QoKS53aWR0aCgpIDogcmVnaW9uLT5mbG93
VGhyZWFkUG9ydGlvblJlY3QoKS5oZWlnaHQoKTsKIH0KIAogTGF5b3V0VW5pdCBSZW5kZXJGbG93
VGhyZWFkOjpyZWdpb25Mb2dpY2FsSGVpZ2h0Rm9yTGluZShMYXlvdXRVbml0IHBvc2l0aW9uKSBj
b25zdApAQCAtMzk5LDcgKzM5NSw3IEBAIExheW91dFVuaXQgUmVuZGVyRmxvd1RocmVhZDo6cmVn
aW9uTG9naWMKICAgICBSZW5kZXJSZWdpb24qIHJlZ2lvbiA9IHJlbmRlclJlZ2lvbkZvckxpbmUo
cG9zaXRpb24pOwogICAgIGlmICghcmVnaW9uKQogICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1
cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IHJlZ2lvbi0+cmVnaW9uUmVjdCgpLmhlaWdo
dCgpIDogcmVnaW9uLT5yZWdpb25SZWN0KCkud2lkdGgoKTsKKyAgICByZXR1cm4gaXNIb3Jpem9u
dGFsV3JpdGluZ01vZGUoKSA/IHJlZ2lvbi0+Zmxvd1RocmVhZFBvcnRpb25SZWN0KCkuaGVpZ2h0
KCkgOiByZWdpb24tPmZsb3dUaHJlYWRQb3J0aW9uUmVjdCgpLndpZHRoKCk7CiB9CiAKIExheW91
dFVuaXQgUmVuZGVyRmxvd1RocmVhZDo6cmVnaW9uUmVtYWluaW5nTG9naWNhbEhlaWdodEZvckxp
bmUoTGF5b3V0VW5pdCBwb3NpdGlvbiwgUGFnZUJvdW5kYXJ5UnVsZSBwYWdlQm91bmRhcnlSdWxl
KSBjb25zdApAQCAtNDA4LDEyICs0MDQsMTIgQEAgTGF5b3V0VW5pdCBSZW5kZXJGbG93VGhyZWFk
OjpyZWdpb25SZW1haQogICAgIGlmICghcmVnaW9uKQogICAgICAgICByZXR1cm4gMDsKIAotICAg
IExheW91dFVuaXQgcmVnaW9uTG9naWNhbEJvdHRvbSA9IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2Rl
KCkgPyByZWdpb24tPnJlZ2lvblJlY3QoKS5tYXhZKCkgOiByZWdpb24tPnJlZ2lvblJlY3QoKS5t
YXhYKCk7CisgICAgTGF5b3V0VW5pdCByZWdpb25Mb2dpY2FsQm90dG9tID0gaXNIb3Jpem9udGFs
V3JpdGluZ01vZGUoKSA/IHJlZ2lvbi0+Zmxvd1RocmVhZFBvcnRpb25SZWN0KCkubWF4WSgpIDog
cmVnaW9uLT5mbG93VGhyZWFkUG9ydGlvblJlY3QoKS5tYXhYKCk7CiAgICAgTGF5b3V0VW5pdCBy
ZW1haW5pbmdIZWlnaHQgPSByZWdpb25Mb2dpY2FsQm90dG9tIC0gcG9zaXRpb247CiAgICAgaWYg
KHBhZ2VCb3VuZGFyeVJ1bGUgPT0gSW5jbHVkZVBhZ2VCb3VuZGFyeSkgewogICAgICAgICAvLyBJ
ZiBJbmNsdWRlUGFnZUJvdW5kYXJ5IGlzIHNldCwgdGhlIGxpbmUgZXhhY3RseSBvbiB0aGUgdG9w
IGVkZ2Ugb2YgYQogICAgICAgICAvLyByZWdpb24gd2lsbCBhY3QgYXMgYmVpbmcgcGFydCBvZiB0
aGUgcHJldmlvdXMgcmVnaW9uLgotICAgICAgICBMYXlvdXRVbml0IHJlZ2lvbkhlaWdodCA9IGlz
SG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyByZWdpb24tPnJlZ2lvblJlY3QoKS5oZWlnaHQoKSA6
IHJlZ2lvbi0+cmVnaW9uUmVjdCgpLndpZHRoKCk7CisgICAgICAgIExheW91dFVuaXQgcmVnaW9u
SGVpZ2h0ID0gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IHJlZ2lvbi0+Zmxvd1RocmVhZFBv
cnRpb25SZWN0KCkuaGVpZ2h0KCkgOiByZWdpb24tPmZsb3dUaHJlYWRQb3J0aW9uUmVjdCgpLndp
ZHRoKCk7CiAgICAgICAgIHJlbWFpbmluZ0hlaWdodCA9IGludE1vZChyZW1haW5pbmdIZWlnaHQs
IHJlZ2lvbkhlaWdodCk7CiAgICAgfQogICAgIHJldHVybiByZW1haW5pbmdIZWlnaHQ7CkBAIC00
MzYsNyArNDMyLDcgQEAgUmVuZGVyUmVnaW9uKiBSZW5kZXJGbG93VGhyZWFkOjptYXBGcm9tRgog
ICAgIGlmICghcmVuZGVyUmVnaW9uKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIExheW91dFJl
Y3QgZmxpcHBlZFJlZ2lvblJlY3QocmVuZGVyUmVnaW9uLT5yZWdpb25SZWN0KCkpOworICAgIExh
eW91dFJlY3QgZmxpcHBlZFJlZ2lvblJlY3QocmVuZGVyUmVnaW9uLT5mbG93VGhyZWFkUG9ydGlv
blJlY3QoKSk7CiAgICAgZmxpcEZvcldyaXRpbmdNb2RlKGZsaXBwZWRSZWdpb25SZWN0KTsKIAog
ICAgIHRyYW5zZm9ybVN0YXRlLm1vdmUocmVuZGVyUmVnaW9uLT5jb250ZW50Qm94UmVjdCgpLmxv
Y2F0aW9uKCkgLSBmbGlwcGVkUmVnaW9uUmVjdC5sb2NhdGlvbigpKTsKQEAgLTU0NCw3ICs1NDAs
NyBAQCBMYXlvdXRVbml0IFJlbmRlckZsb3dUaHJlYWQ6OmNvbnRlbnRMb2dpCiAgICAgICAgIFJl
bmRlclJlZ2lvbiogcmVnaW9uID0gKml0ZXI7CiAgICAgICAgIGlmICghcmVnaW9uLT5pc1ZhbGlk
KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgcmV0dXJuIGlzSG9yaXpvbnRhbFdy
aXRpbmdNb2RlKCkgPyByZWdpb24tPnJlZ2lvblJlY3QoKS54KCkgOiByZWdpb24tPnJlZ2lvblJl
Y3QoKS55KCk7CisgICAgICAgIHJldHVybiBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gcmVn
aW9uLT5mbG93VGhyZWFkUG9ydGlvblJlY3QoKS54KCkgOiByZWdpb24tPmZsb3dUaHJlYWRQb3J0
aW9uUmVjdCgpLnkoKTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0
dXJuIDA7CkBAIC02NzIsOCArNjY4LDggQEAgdm9pZCBSZW5kZXJGbG93VGhyZWFkOjpjb21wdXRl
T3ZlcmZsb3dTdAogICAgICAgICAgICAgcmVnaW9uLT5zZXRSZWdpb25TdGF0ZShSZW5kZXJSZWdp
b246OlJlZ2lvblVuZGVmaW5lZCk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQot
ICAgICAgICBMYXlvdXRVbml0IGZsb3dNaW4gPSBoZWlnaHQgLSAoaXNIb3Jpem9udGFsV3JpdGlu
Z01vZGUoKSA/IHJlZ2lvbi0+cmVnaW9uUmVjdCgpLnkoKSA6IHJlZ2lvbi0+cmVnaW9uUmVjdCgp
LngoKSk7Ci0gICAgICAgIExheW91dFVuaXQgZmxvd01heCA9IGhlaWdodCAtIChpc0hvcml6b250
YWxXcml0aW5nTW9kZSgpID8gcmVnaW9uLT5yZWdpb25SZWN0KCkubWF4WSgpIDogcmVnaW9uLT5y
ZWdpb25SZWN0KCkubWF4WCgpKTsKKyAgICAgICAgTGF5b3V0VW5pdCBmbG93TWluID0gaGVpZ2h0
IC0gKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyByZWdpb24tPmZsb3dUaHJlYWRQb3J0aW9u
UmVjdCgpLnkoKSA6IHJlZ2lvbi0+Zmxvd1RocmVhZFBvcnRpb25SZWN0KCkueCgpKTsKKyAgICAg
ICAgTGF5b3V0VW5pdCBmbG93TWF4ID0gaGVpZ2h0IC0gKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2Rl
KCkgPyByZWdpb24tPmZsb3dUaHJlYWRQb3J0aW9uUmVjdCgpLm1heFkoKSA6IHJlZ2lvbi0+Zmxv
d1RocmVhZFBvcnRpb25SZWN0KCkubWF4WCgpKTsKICAgICAgICAgUmVuZGVyUmVnaW9uOjpSZWdp
b25TdGF0ZSBwcmV2aW91c1N0YXRlID0gcmVnaW9uLT5yZWdpb25TdGF0ZSgpOwogICAgICAgICBS
ZW5kZXJSZWdpb246OlJlZ2lvblN0YXRlIHN0YXRlID0gUmVuZGVyUmVnaW9uOjpSZWdpb25GaXQ7
CiAgICAgICAgIGlmIChmbG93TWluIDw9IDApCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRmxvd1RocmVhZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGbG93VGhyZWFkLmgJKHJldmlzaW9uIDEyNjU5NikKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmgJKHdvcmtpbmcgY29weSkKQEAgLTc2LDgg
Kzc2LDggQEAgcHVibGljOgogICAgIHZvaWQgY29tcHV0ZUxvZ2ljYWxXaWR0aCgpOwogICAgIHZv
aWQgY29tcHV0ZUxvZ2ljYWxIZWlnaHQoKTsKIAotICAgIHZvaWQgcGFpbnRJbnRvUmVnaW9uKFBh
aW50SW5mbyYsIFJlbmRlclJlZ2lvbiosIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCk7
Ci0gICAgYm9vbCBoaXRUZXN0UmVnaW9uKFJlbmRlclJlZ2lvbiosIGNvbnN0IEhpdFRlc3RSZXF1
ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RQb2ludCYgcG9pbnRJbkNvbnRhaW5l
ciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KTsKKyAgICB2b2lkIHBhaW50
Rmxvd1RocmVhZFBvcnRpb25JblJlZ2lvbihQYWludEluZm8mLCBSZW5kZXJSZWdpb24qLCBMYXlv
dXRSZWN0IGZsb3dUaHJlYWRQb3J0aW9uUmVjdCwgTGF5b3V0UmVjdCBmbG93VGhyZWFkUG9ydGlv
bk92ZXJmbG93UmVjdCwgY29uc3QgTGF5b3V0UG9pbnQmKSBjb25zdDsKKyAgICBib29sIGhpdFRl
c3RGbG93VGhyZWFkUG9ydGlvbkluUmVnaW9uKFJlbmRlclJlZ2lvbiosIExheW91dFJlY3QgZmxv
d1RocmVhZFBvcnRpb25SZWN0LCBMYXlvdXRSZWN0IGZsb3dUaHJlYWRQb3J0aW9uT3ZlcmZsb3dS
ZWN0LCBjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0
UG9pbnQmIHBvaW50SW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9m
ZnNldCkgY29uc3Q7CiAKICAgICBib29sIGhhc1JlZ2lvbnMoKSBjb25zdCB7IHJldHVybiBtX3Jl
Z2lvbkxpc3Quc2l6ZSgpOyB9CiAgICAgYm9vbCBoYXNWYWxpZFJlZ2lvbnMoKSBjb25zdCB7IEFT
U0VSVCghbV9yZWdpb25zSW52YWxpZGF0ZWQpOyByZXR1cm4gbV9oYXNWYWxpZFJlZ2lvbnM7IH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1u
U2V0LmNwcAkocmV2aXNpb24gMTI2NjAzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck11bHRpQ29sdW1uU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNyBAQCB1
bnNpZ25lZCBSZW5kZXJNdWx0aUNvbHVtblNldDo6Y29sdW1uQ291CiAgICAgICAgIHJldHVybiAw
OwogICAgIAogICAgIC8vIE91ciByZWdpb24gcmVjdCBkZXRlcm1pbmVzIG91ciBjb2x1bW4gY291
bnQuIFdlIGhhdmUgYXMgbWFueSBjb2x1bW5zIGFzIG5lZWRlZCB0byBmaXQgYWxsIHRoZSBjb250
ZW50LgotICAgIExheW91dFVuaXQgbG9naWNhbEhlaWdodEluQ29sdW1ucyA9IGZsb3dUaHJlYWQo
KS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IHJlZ2lvblJlY3QoKS5oZWlnaHQoKSA6IHJl
Z2lvblJlY3QoKS53aWR0aCgpOworICAgIExheW91dFVuaXQgbG9naWNhbEhlaWdodEluQ29sdW1u
cyA9IGZsb3dUaHJlYWQoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGZsb3dUaHJlYWRQ
b3J0aW9uUmVjdCgpLmhlaWdodCgpIDogZmxvd1RocmVhZFBvcnRpb25SZWN0KCkud2lkdGgoKTsK
ICAgICByZXR1cm4gY2VpbChzdGF0aWNfY2FzdDxmbG9hdD4obG9naWNhbEhlaWdodEluQ29sdW1u
cykgLyBjb21wdXRlZENvbHVtbkhlaWdodCgpKTsKIH0KIApAQCAtMTY3LDcgKzE2Nyw3IEBAIHZv
aWQgUmVuZGVyTXVsdGlDb2x1bW5TZXQ6OnBhaW50Q29sdW1uUnUKIHZvaWQgUmVuZGVyTXVsdGlD
b2x1bW5TZXQ6OnBhaW50Q29sdW1uQ29udGVudHMoUGFpbnRJbmZvJiAvKnBhaW50SW5mbyovLCBj
b25zdCBMYXlvdXRQb2ludCYgLypwYWludE9mZnNldCovKQogewogICAgIC8vIEZvciBlYWNoIHJl
Y3RhbmdsZSwgc2V0IGl0IGFzIHRoZSByZWdpb24gcmVjdGFuZ2xlIGFuZCB0aGVuIGxldCBmbG93
IHRocmVhZCBwYWludGluZyBkbyB0aGUgcmVzdC4KLSAgICAvLyBXZSBtYWtlIG11bHRpcGxlIGNh
bGxzIHRvIHBhaW50SW50b1JlZ2lvbiwgY2hhbmdpbmcgdGhlIHJlY3RhbmdsZXMgZWFjaCB0aW1l
LgorICAgIC8vIFdlIG1ha2UgbXVsdGlwbGUgY2FsbHMgdG8gcGFpbnRGbG93VGhyZWFkUG9ydGlv
bkluUmVnaW9uLCBjaGFuZ2luZyB0aGUgcmVjdGFuZ2xlcyBlYWNoIHRpbWUuCiAgICAgdW5zaWdu
ZWQgY29sQ291bnQgPSBjb2x1bW5Db3VudCgpOwogICAgIGlmICghY29sQ291bnQpCiAgICAgICAg
IHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3Bw
CShyZXZpc2lvbiAxMjY1OTYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVn
aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNyBAQCBMYXlvdXRVbml0IFJlbmRl
clJlZ2lvbjo6bG9naWNhbEhlaWdodEZvCiAgICAgcmV0dXJuIG1fZmxvd1RocmVhZC0+aXNIb3Jp
em9udGFsV3JpdGluZ01vZGUoKSA/IGNvbnRlbnRIZWlnaHQoKSA6IGNvbnRlbnRXaWR0aCgpOwog
fQogCi1MYXlvdXRSZWN0IFJlbmRlclJlZ2lvbjo6cmVnaW9uT3ZlcnNldFJlY3QoKSBjb25zdAor
TGF5b3V0UmVjdCBSZW5kZXJSZWdpb246OmZsb3dUaHJlYWRQb3J0aW9uT3ZlcmZsb3dSZWN0KCkg
Y29uc3QKIHsKICAgICAvLyBGSVhNRTogV291bGQgbGlrZSB0byBqdXN0IHVzZSBoYXNPdmVyZmxv
d0NsaXAoKSBidXQgd2UgYXJlbid0IGEgYmxvY2sgeWV0LiBXaGVuIFJlbmRlclJlZ2lvbiBpcyBl
bGltaW5hdGVkIGFuZAogICAgIC8vIGZvbGRlZCBpbnRvIFJlbmRlckJsb2NrLCBzd2l0Y2ggdG8g
aGFzT3ZlcmZsb3dDbGlwKCkuCkBAIC03MCw3ICs3MCw3IEBAIExheW91dFJlY3QgUmVuZGVyUmVn
aW9uOjpyZWdpb25PdmVyc2V0UmUKICAgICBib29sIGNsaXBZID0gc3R5bGUoKS0+b3ZlcmZsb3dZ
KCkgIT0gT1ZJU0lCTEU7CiAgICAgYm9vbCBpc0xhc3RSZWdpb25XaXRoUmVnaW9uT3ZlcmZsb3dC
cmVhayA9IChpc0xhc3RSZWdpb24oKSAmJiAoc3R5bGUoKS0+cmVnaW9uT3ZlcmZsb3coKSA9PSBC
cmVha1JlZ2lvbk92ZXJmbG93KSk7CiAgICAgaWYgKChjbGlwWCAmJiBjbGlwWSkgfHwgIWlzVmFs
aWQoKSB8fCAhbV9mbG93VGhyZWFkIHx8IGlzTGFzdFJlZ2lvbldpdGhSZWdpb25PdmVyZmxvd0Jy
ZWFrKQotICAgICAgICByZXR1cm4gcmVnaW9uUmVjdCgpOworICAgICAgICByZXR1cm4gZmxvd1Ro
cmVhZFBvcnRpb25SZWN0KCk7CiAKICAgICBMYXlvdXRSZWN0IGZsb3dUaHJlYWRPdmVyZmxvdyA9
IG1fZmxvd1RocmVhZC0+dmlzdWFsT3ZlcmZsb3dSZWN0KCk7CiAKQEAgLTc4LDE2ICs3OCwxNiBA
QCBMYXlvdXRSZWN0IFJlbmRlclJlZ2lvbjo6cmVnaW9uT3ZlcnNldFJlCiAgICAgTGF5b3V0VW5p
dCBvdXRsaW5lU2l6ZSA9IG1heGltYWxPdXRsaW5lU2l6ZShQYWludFBoYXNlT3V0bGluZSk7CiAg
ICAgTGF5b3V0UmVjdCBjbGlwUmVjdDsKICAgICBpZiAobV9mbG93VGhyZWFkLT5pc0hvcml6b250
YWxXcml0aW5nTW9kZSgpKSB7Ci0gICAgICAgIExheW91dFVuaXQgbWluWSA9IGlzRmlyc3RSZWdp
b24oKSA/IChmbG93VGhyZWFkT3ZlcmZsb3cueSgpIC0gb3V0bGluZVNpemUpIDogcmVnaW9uUmVj
dCgpLnkoKTsKLSAgICAgICAgTGF5b3V0VW5pdCBtYXhZID0gaXNMYXN0UmVnaW9uKCkgPyBtYXgo
cmVnaW9uUmVjdCgpLm1heFkoKSwgZmxvd1RocmVhZE92ZXJmbG93Lm1heFkoKSkgKyBvdXRsaW5l
U2l6ZSA6IHJlZ2lvblJlY3QoKS5tYXhZKCk7Ci0gICAgICAgIExheW91dFVuaXQgbWluWCA9IGNs
aXBYID8gcmVnaW9uUmVjdCgpLngoKSA6IChmbG93VGhyZWFkT3ZlcmZsb3cueCgpIC0gb3V0bGlu
ZVNpemUpOwotICAgICAgICBMYXlvdXRVbml0IG1heFggPSBjbGlwWCA/IHJlZ2lvblJlY3QoKS5t
YXhYKCkgOiAoZmxvd1RocmVhZE92ZXJmbG93Lm1heFgoKSArIG91dGxpbmVTaXplKTsKKyAgICAg
ICAgTGF5b3V0VW5pdCBtaW5ZID0gaXNGaXJzdFJlZ2lvbigpID8gKGZsb3dUaHJlYWRPdmVyZmxv
dy55KCkgLSBvdXRsaW5lU2l6ZSkgOiBmbG93VGhyZWFkUG9ydGlvblJlY3QoKS55KCk7CisgICAg
ICAgIExheW91dFVuaXQgbWF4WSA9IGlzTGFzdFJlZ2lvbigpID8gbWF4KGZsb3dUaHJlYWRQb3J0
aW9uUmVjdCgpLm1heFkoKSwgZmxvd1RocmVhZE92ZXJmbG93Lm1heFkoKSkgKyBvdXRsaW5lU2l6
ZSA6IGZsb3dUaHJlYWRQb3J0aW9uUmVjdCgpLm1heFkoKTsKKyAgICAgICAgTGF5b3V0VW5pdCBt
aW5YID0gY2xpcFggPyBmbG93VGhyZWFkUG9ydGlvblJlY3QoKS54KCkgOiAoZmxvd1RocmVhZE92
ZXJmbG93LngoKSAtIG91dGxpbmVTaXplKTsKKyAgICAgICAgTGF5b3V0VW5pdCBtYXhYID0gY2xp
cFggPyBmbG93VGhyZWFkUG9ydGlvblJlY3QoKS5tYXhYKCkgOiAoZmxvd1RocmVhZE92ZXJmbG93
Lm1heFgoKSArIG91dGxpbmVTaXplKTsKICAgICAgICAgY2xpcFJlY3QgPSBMYXlvdXRSZWN0KG1p
blgsIG1pblksIG1heFggLSBtaW5YLCBtYXhZIC0gbWluWSk7CiAgICAgfSBlbHNlIHsKLSAgICAg
ICAgTGF5b3V0VW5pdCBtaW5YID0gaXNGaXJzdFJlZ2lvbigpID8gKGZsb3dUaHJlYWRPdmVyZmxv
dy54KCkgLSBvdXRsaW5lU2l6ZSkgOiByZWdpb25SZWN0KCkueCgpOwotICAgICAgICBMYXlvdXRV
bml0IG1heFggPSBpc0xhc3RSZWdpb24oKSA/IG1heChyZWdpb25SZWN0KCkubWF4WCgpLCBmbG93
VGhyZWFkT3ZlcmZsb3cubWF4WCgpKSArIG91dGxpbmVTaXplIDogcmVnaW9uUmVjdCgpLm1heFgo
KTsKLSAgICAgICAgTGF5b3V0VW5pdCBtaW5ZID0gY2xpcFkgPyByZWdpb25SZWN0KCkueSgpIDog
KGZsb3dUaHJlYWRPdmVyZmxvdy55KCkgLSBvdXRsaW5lU2l6ZSk7Ci0gICAgICAgIExheW91dFVu
aXQgbWF4WSA9IGNsaXBZID8gcmVnaW9uUmVjdCgpLm1heFkoKSA6IChmbG93VGhyZWFkT3ZlcmZs
b3cubWF4WSgpICsgb3V0bGluZVNpemUpOworICAgICAgICBMYXlvdXRVbml0IG1pblggPSBpc0Zp
cnN0UmVnaW9uKCkgPyAoZmxvd1RocmVhZE92ZXJmbG93LngoKSAtIG91dGxpbmVTaXplKSA6IGZs
b3dUaHJlYWRQb3J0aW9uUmVjdCgpLngoKTsKKyAgICAgICAgTGF5b3V0VW5pdCBtYXhYID0gaXNM
YXN0UmVnaW9uKCkgPyBtYXgoZmxvd1RocmVhZFBvcnRpb25SZWN0KCkubWF4WCgpLCBmbG93VGhy
ZWFkT3ZlcmZsb3cubWF4WCgpKSArIG91dGxpbmVTaXplIDogZmxvd1RocmVhZFBvcnRpb25SZWN0
KCkubWF4WCgpOworICAgICAgICBMYXlvdXRVbml0IG1pblkgPSBjbGlwWSA/IGZsb3dUaHJlYWRQ
b3J0aW9uUmVjdCgpLnkoKSA6IChmbG93VGhyZWFkT3ZlcmZsb3cueSgpIC0gb3V0bGluZVNpemUp
OworICAgICAgICBMYXlvdXRVbml0IG1heFkgPSBjbGlwWSA/IGZsb3dUaHJlYWRQb3J0aW9uUmVj
dCgpLm1heFkoKSA6IChmbG93VGhyZWFkT3ZlcmZsb3cubWF4WSgpICsgb3V0bGluZVNpemUpOwog
ICAgICAgICBjbGlwUmVjdCA9IExheW91dFJlY3QobWluWCwgbWluWSwgbWF4WCAtIG1pblgsIG1h
eFkgLSBtaW5ZKTsKICAgICB9CiAKQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIFJlbmRlclJlZ2lv
bjo6cGFpbnRSZXBsYWNlZChQYWludEluCiAgICAgICAgIHJldHVybjsKIAogICAgIHNldFJlZ2lv
bk9iamVjdHNSZWdpb25TdHlsZSgpOwotICAgIG1fZmxvd1RocmVhZC0+cGFpbnRJbnRvUmVnaW9u
KHBhaW50SW5mbywgdGhpcywgTGF5b3V0UG9pbnQocGFpbnRPZmZzZXQueCgpICsgYm9yZGVyTGVm
dCgpICsgcGFkZGluZ0xlZnQoKSwgcGFpbnRPZmZzZXQueSgpICsgYm9yZGVyVG9wKCkgKyBwYWRk
aW5nVG9wKCkpKTsKKyAgICBtX2Zsb3dUaHJlYWQtPnBhaW50Rmxvd1RocmVhZFBvcnRpb25JblJl
Z2lvbihwYWludEluZm8sIHRoaXMsIGZsb3dUaHJlYWRQb3J0aW9uUmVjdCgpLCBmbG93VGhyZWFk
UG9ydGlvbk92ZXJmbG93UmVjdCgpLCBMYXlvdXRQb2ludChwYWludE9mZnNldC54KCkgKyBib3Jk
ZXJMZWZ0KCkgKyBwYWRkaW5nTGVmdCgpLCBwYWludE9mZnNldC55KCkgKyBib3JkZXJUb3AoKSAr
IHBhZGRpbmdUb3AoKSkpOwogICAgIHJlc3RvcmVSZWdpb25PYmplY3RzT3JpZ2luYWxTdHlsZSgp
OwogfQogCkBAIC0xMzEsNyArMTMxLDcgQEAgYm9vbCBSZW5kZXJSZWdpb246Om5vZGVBdFBvaW50
KGNvbnN0IEhpdAogICAgIGJvdW5kc1JlY3QubW92ZUJ5KGFkanVzdGVkTG9jYXRpb24pOwogICAg
IGlmICh2aXNpYmxlVG9IaXRUZXN0aW5nKCkgJiYgYWN0aW9uID09IEhpdFRlc3RGb3JlZ3JvdW5k
ICYmIHBvaW50SW5Db250YWluZXIuaW50ZXJzZWN0cyhib3VuZHNSZWN0KSkgewogICAgICAgICAv
LyBDaGVjayB0aGUgY29udGVudHMgb2YgdGhlIFJlbmRlckZsb3dUaHJlYWQuCi0gICAgICAgIGlm
IChtX2Zsb3dUaHJlYWQgJiYgbV9mbG93VGhyZWFkLT5oaXRUZXN0UmVnaW9uKHRoaXMsIHJlcXVl
c3QsIHJlc3VsdCwgcG9pbnRJbkNvbnRhaW5lciwgTGF5b3V0UG9pbnQoYWRqdXN0ZWRMb2NhdGlv
bi54KCkgKyBib3JkZXJMZWZ0KCkgKyBwYWRkaW5nTGVmdCgpLCBhZGp1c3RlZExvY2F0aW9uLnko
KSArIGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgpKSkpCisgICAgICAgIGlmIChtX2Zsb3dUaHJl
YWQgJiYgbV9mbG93VGhyZWFkLT5oaXRUZXN0Rmxvd1RocmVhZFBvcnRpb25JblJlZ2lvbih0aGlz
LCBmbG93VGhyZWFkUG9ydGlvblJlY3QoKSwgZmxvd1RocmVhZFBvcnRpb25PdmVyZmxvd1JlY3Qo
KSwgcmVxdWVzdCwgcmVzdWx0LCBwb2ludEluQ29udGFpbmVyLCBMYXlvdXRQb2ludChhZGp1c3Rl
ZExvY2F0aW9uLngoKSArIGJvcmRlckxlZnQoKSArIHBhZGRpbmdMZWZ0KCksIGFkanVzdGVkTG9j
YXRpb24ueSgpICsgYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkpKSkKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICB1cGRhdGVIaXRUZXN0UmVzdWx0KHJlc3VsdCwgcG9pbnRJbkNv
bnRhaW5lci5wb2ludCgpIC0gdG9MYXlvdXRTaXplKGFkanVzdGVkTG9jYXRpb24pKTsKICAgICAg
ICAgaWYgKCFyZXN1bHQuYWRkTm9kZVRvUmVjdEJhc2VkVGVzdFJlc3VsdChub2RlKCksIHBvaW50
SW5Db250YWluZXIsIGJvdW5kc1JlY3QpKQpAQCAtMTcyLDcgKzE3Miw3IEBAIHZvaWQgUmVuZGVy
UmVnaW9uOjpsYXlvdXQoKQogewogICAgIFJlbmRlclJlcGxhY2VkOjpsYXlvdXQoKTsKICAgICBp
ZiAobV9mbG93VGhyZWFkICYmIGlzVmFsaWQoKSkgewotICAgICAgICBMYXlvdXRSZWN0IG9sZFJl
Z2lvblJlY3QocmVnaW9uUmVjdCgpKTsKKyAgICAgICAgTGF5b3V0UmVjdCBvbGRSZWdpb25SZWN0
KGZsb3dUaHJlYWRQb3J0aW9uUmVjdCgpKTsKICAgICAgICAgaWYgKCFpc0hvcml6b250YWxXcml0
aW5nTW9kZSgpKQogICAgICAgICAgICAgb2xkUmVnaW9uUmVjdCA9IG9sZFJlZ2lvblJlY3QudHJh
bnNwb3NlZFJlY3QoKTsKICAgICAgICAgaWYgKG9sZFJlZ2lvblJlY3Qud2lkdGgoKSAhPSBsb2dp
Y2FsV2lkdGhGb3JGbG93VGhyZWFkQ29udGVudCgpIHx8IG9sZFJlZ2lvblJlY3QuaGVpZ2h0KCkg
IT0gbG9naWNhbEhlaWdodEZvckZsb3dUaHJlYWRDb250ZW50KCkpCkBAIC0yODcsOCArMjg3LDgg
QEAgTGF5b3V0VW5pdCBSZW5kZXJSZWdpb246Om9mZnNldEZyb21Mb2dpYwogICAgIGlmICghbV9p
c1ZhbGlkIHx8ICFtX2Zsb3dUaHJlYWQpCiAgICAgICAgIHJldHVybiAwOwogICAgIGlmIChtX2Zs
b3dUaHJlYWQtPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCi0gICAgICAgIHJldHVybiByZWdp
b25SZWN0KCkueSgpOwotICAgIHJldHVybiByZWdpb25SZWN0KCkueCgpOworICAgICAgICByZXR1
cm4gZmxvd1RocmVhZFBvcnRpb25SZWN0KCkueSgpOworICAgIHJldHVybiBmbG93VGhyZWFkUG9y
dGlvblJlY3QoKS54KCk7CiB9CiAKIHZvaWQgUmVuZGVyUmVnaW9uOjpzZXRSZWdpb25PYmplY3Rz
UmVnaW9uU3R5bGUoKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lv
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24u
aAkocmV2aXNpb24gMTI2NjAyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJl
Z2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw5ICs1MSw5IEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0
eWxlKiBvbGRTdHlsZSk7CiAKLSAgICB2b2lkIHNldFJlZ2lvblJlY3QoY29uc3QgTGF5b3V0UmVj
dCYgcmVjdCkgeyBtX3JlZ2lvblJlY3QgPSByZWN0OyB9Ci0gICAgTGF5b3V0UmVjdCByZWdpb25S
ZWN0KCkgY29uc3QgeyByZXR1cm4gbV9yZWdpb25SZWN0OyB9Ci0gICAgTGF5b3V0UmVjdCByZWdp
b25PdmVyc2V0UmVjdCgpIGNvbnN0OworICAgIHZvaWQgc2V0Rmxvd1RocmVhZFBvcnRpb25SZWN0
KGNvbnN0IExheW91dFJlY3QmIHJlY3QpIHsgbV9mbG93VGhyZWFkUG9ydGlvblJlY3QgPSByZWN0
OyB9CisgICAgTGF5b3V0UmVjdCBmbG93VGhyZWFkUG9ydGlvblJlY3QoKSBjb25zdCB7IHJldHVy
biBtX2Zsb3dUaHJlYWRQb3J0aW9uUmVjdDsgfQorICAgIExheW91dFJlY3QgZmxvd1RocmVhZFBv
cnRpb25PdmVyZmxvd1JlY3QoKSBjb25zdDsKIAogICAgIHZvaWQgYXR0YWNoUmVnaW9uKCk7CiAg
ICAgdm9pZCBkZXRhY2hSZWdpb24oKTsKQEAgLTEyNyw3ICsxMjcsNyBAQCBwcml2YXRlOgogICAg
IC8vIHdlIG5lZWQgdG8gY3JlYXRlIGEgZGVwZW5kZW5jeSB0cmVlLCBzbyB0aGF0IGxheW91dCBv
ZiB0aGUKICAgICAvLyByZWdpb25zIGlzIGFsd2F5cyBkb25lIGJlZm9yZSB0aGUgcmVnaW9ucyB0
aGVtc2VsdmVzLgogICAgIFJlbmRlck5hbWVkRmxvd1RocmVhZCogbV9wYXJlbnROYW1lZEZsb3dU
aHJlYWQ7Ci0gICAgTGF5b3V0UmVjdCBtX3JlZ2lvblJlY3Q7CisgICAgTGF5b3V0UmVjdCBtX2Zs
b3dUaHJlYWRQb3J0aW9uUmVjdDsKIAogICAgIC8vIFRoaXMgbWFwIGhvbGRzIHVuaXF1ZSBpbmZv
cm1hdGlvbiBhYm91dCBhIGJsb2NrIHRoYXQgaXMgc3BsaXQgYWNyb3NzIHJlZ2lvbnMuCiAgICAg
Ly8gQSBSZW5kZXJCb3hSZWdpb25JbmZvKiB0ZWxscyB1cyBhYm91dCBhbnkgbGF5b3V0IGluZm9y
bWF0aW9uIGZvciBhIFJlbmRlckJveCB0aGF0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyUmVnaW9uU2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyUmVnaW9uU2V0LmNwcAkocmV2aXNpb24gMTI2NjAyKQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvblNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2
LDcgKzQ2LDcgQEAgdm9pZCBSZW5kZXJSZWdpb25TZXQ6OmV4cGFuZFRvRW5jb21wYXNzRgogICAg
IC8vIFdoZW5ldmVyIHRoZSBsYXN0IHJlZ2lvbiBpcyBhIHNldCwgaXQgYWx3YXlzIGV4cGFuZHMg
aXRzIHJlZ2lvbiByZWN0IHRvIGNvbnN1bWUgYWxsCiAgICAgLy8gb2YgdGhlIGZsb3cgdGhyZWFk
IGNvbnRlbnQuIFRoaXMgaXMgYmVjYXVzZSBpdCBpcyBhbHdheXMgY2FwYWJsZSBvZiBnZW5lcmF0
aW5nIGFuCiAgICAgLy8gaW5maW5pdGUgbnVtYmVyIG9mIGJveGVzIGluIG9yZGVyIHRvIGhvbGQg
YWxsIG9mIHRoZSByZW1haW5pbmcgY29udGVudC4KLSAgICBMYXlvdXRSZWN0IHJlY3QocmVnaW9u
UmVjdCgpKTsKKyAgICBMYXlvdXRSZWN0IHJlY3QoZmxvd1RocmVhZFBvcnRpb25SZWN0KCkpOwog
ICAgIAogICAgIC8vIEdldCB0aGUgb2Zmc2V0IHdpdGhpbiB0aGUgZmxvdyB0aHJlYWQgaW4gaXRz
IGJsb2NrIHByb2dyZXNzaW9uIGRpcmVjdGlvbi4gVGhlbiBnZXQgdGhlCiAgICAgLy8gZmxvdyB0
aHJlYWQncyByZW1haW5pbmcgbG9naWNhbCBoZWlnaHQgaW5jbHVkaW5nIGl0cyBvdmVyZmxvdyBh
bmQgZXhwYW5kIG91ciByZWN0CkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgUmVuZGVyUmVnaW9uU2V0
OjpleHBhbmRUb0VuY29tcGFzc0YKICAgICBMYXlvdXRVbml0IGxvZ2ljYWxUb3BPZmZzZXQgPSBp
c0hvcml6b250YWwgPyByZWN0LnkoKSA6IHJlY3QueCgpOwogICAgIExheW91dFJlY3QgbGF5b3V0
UmVjdCA9IGZsb3dUaHJlYWQoKS0+bGF5b3V0T3ZlcmZsb3dSZWN0KCk7CiAgICAgTGF5b3V0VW5p
dCBsb2dpY2FsSGVpZ2h0V2l0aE92ZXJmbG93ID0gKGlzSG9yaXpvbnRhbCA/IGxheW91dFJlY3Qu
bWF4WSgpIC0gZmxvd1RocmVhZCgpLT55KCkgOiBsYXlvdXRSZWN0Lm1heFgoKSAtIGZsb3dUaHJl
YWQoKS0+eCgpKSAtIGxvZ2ljYWxUb3BPZmZzZXQ7Ci0gICAgc2V0UmVnaW9uUmVjdChMYXlvdXRS
ZWN0KHJlY3QueCgpLCByZWN0LnkoKSwgaXNIb3Jpem9udGFsID8gcmVjdC53aWR0aCgpIDogbG9n
aWNhbEhlaWdodFdpdGhPdmVyZmxvdywgaXNIb3Jpem9udGFsID8gbG9naWNhbEhlaWdodFdpdGhP
dmVyZmxvdyA6IHJlY3QuaGVpZ2h0KCkpKTsKKyAgICBzZXRGbG93VGhyZWFkUG9ydGlvblJlY3Qo
TGF5b3V0UmVjdChyZWN0LngoKSwgcmVjdC55KCksIGlzSG9yaXpvbnRhbCA/IHJlY3Qud2lkdGgo
KSA6IGxvZ2ljYWxIZWlnaHRXaXRoT3ZlcmZsb3csIGlzSG9yaXpvbnRhbCA/IGxvZ2ljYWxIZWln
aHRXaXRoT3ZlcmZsb3cgOiByZWN0LmhlaWdodCgpKSk7CiB9CiAKIH0K
</data>
<flag name="review"
          id="171681"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>