<?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>95855</bug_id>
          
          <creation_ts>2012-09-05 07:59:14 -0700</creation_ts>
          <short_desc>[chromium] We should accelerate all transformations, except when we must blend matrices that cannot be decomposed.</short_desc>
          <delta_ts>2012-09-07 08:32:20 -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>WebKit Misc.</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>vollick</reporter>
          <assigned_to>vollick</assigned_to>
          <cc>abarth</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>shawnsingh</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>712051</commentid>
    <comment_count>0</comment_count>
    <who name="">vollick</who>
    <bug_when>2012-09-05 07:59:14 -0700</bug_when>
    <thetext>Currently, we don&apos;t accelerate any transform animation if it involves a transform operation that isn&apos;t invertible, but this is too strict. If we have, at keyframe one, a scale of 1 and, at keyframe two, a scale of 0, we are perfectly capable of blending between the two. This breaks down if we must resort to matrix interpolation and one of the matrices cannot be decomposed. Matrix interpolation works by decomposing both matrices, blending the decomposed components, and then recomposing. Obviously, this won&apos;t work if we can&apos;t decompose. We can get into the situation where we must resort to matrix interpolation if the transform operations at adjacent keyframes don&apos;t line up, or if matrix transform operations are used explicitly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712101</commentid>
    <comment_count>1</comment_count>
      <attachid>162260</attachid>
    <who name="">vollick</who>
    <bug_when>2012-09-05 08:52:05 -0700</bug_when>
    <thetext>Created attachment 162260
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712103</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-05 08:53:43 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714016</commentid>
    <comment_count>3</comment_count>
      <attachid>162260</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-09-06 19:21:15 -0700</bug_when>
    <thetext>Comment on attachment 162260
Patch

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

&gt; Source/Platform/chromium/public/WebTransformationMatrix.h:82
&gt; +    bool blend(const WebTransformationMatrix&amp; from, double progress);

add WEBKIT_EXPORT here too (the rest of the functions will have this for you on ToT)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714513</commentid>
    <comment_count>4</comment_count>
      <attachid>162768</attachid>
    <who name="">vollick</who>
    <bug_when>2012-09-07 07:39:13 -0700</bug_when>
    <thetext>Created attachment 162768
Patch for landing

(In reply to comment #3)
&gt; (From update of attachment 162260 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=162260&amp;action=review
&gt;
&gt; &gt; Source/Platform/chromium/public/WebTransformationMatrix.h:82
&gt; &gt; +    bool blend(const WebTransformationMatrix&amp; from, double progress);
&gt;
&gt; add WEBKIT_EXPORT here too (the rest of the functions will have this for you on ToT)

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714549</commentid>
    <comment_count>5</comment_count>
      <attachid>162768</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-07 08:32:17 -0700</bug_when>
    <thetext>Comment on attachment 162768
Patch for landing

Clearing flags on attachment: 162768

Committed r127868: &lt;http://trac.webkit.org/changeset/127868&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714550</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-07 08:32:20 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162260</attachid>
            <date>2012-09-05 08:52:05 -0700</date>
            <delta_ts>2012-09-07 07:39:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95855-20120905115146.patch</filename>
            <type>text/plain</type>
            <size>19305</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAwNDlhNDAwNjk3OWZi
MjIyZTU2NzY3N2E4ZmE0MjQ3ZTJjZjNkNzg4Li5hYzg2MjUwNzczZWJmM2RlM2QxNThhY2E1ZTU5
OGY4NGEwOGIzYWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wOS0wNSAg
SWFuIFZvbGxpY2sgIDx2b2xsaWNrQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1d
IFdlIHNob3VsZCBhY2NlbGVyYXRlIGFsbCB0cmFuc2Zvcm1hdGlvbnMsIGV4Y2VwdCB3aGVuIHdl
IG11c3QgYmxlbmQgbWF0cmljZXMgdGhhdCBjYW5ub3QgYmUgZGVjb21wb3NlZC4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1ODU1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViVHJhbnNmb3JtT3BlcmF0
aW9ucyBhcmUgbm93IGFibGUgdG8gcmVwb3J0IGlmIHRoZXkgY2FuIHN1Y2Nlc3NmdWxseSBibGVu
ZC4KKyAgICAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OmJsZW5kIG5vdyByZXR1cm5zIGEg
Ym9vbCBpZiBibGVuZGluZyB3b3VsZCBmYWlsLgorCisgICAgICAgICogY2hyb21pdW0vcHVibGlj
L1dlYlRyYW5zZm9ybU9wZXJhdGlvbnMuaDoKKyAgICAgICAgKFdlYlRyYW5zZm9ybU9wZXJhdGlv
bnMpOgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5o
OgorICAgICAgICAoV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgpOgorCiAyMDEyLTA5LTA0ICBLZW5p
Y2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1d
IEF0dGVtcHQgdG8gZml4IGJ1aWxkIGZhaWx1cmUgb24gV2luCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGY0ZTFk
Njk1NGM4YjIxMTQyYzVlOTRkZTIxODRmZTc1YThiNDkxNi4uZGVlNGZjMzY1MjhjOGZkNGI4OGI2
MGQzZmZiZDQ3MWNhMTIxNTEzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTA5
LTA1ICBJYW4gVm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJv
bWl1bV0gV2Ugc2hvdWxkIGFjY2VsZXJhdGUgYWxsIHRyYW5zZm9ybWF0aW9ucywgZXhjZXB0IHdo
ZW4gd2UgbXVzdCBibGVuZCBtYXRyaWNlcyB0aGF0IGNhbm5vdCBiZSBkZWNvbXBvc2VkLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU4NTUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJUcmFuc2Zvcm1P
cGVyYXRpb25zIGFyZSBub3cgYWJsZSB0byByZXBvcnQgaWYgdGhleSBjYW4gc3VjY2Vzc2Z1bGx5
IGJsZW5kLgorICAgICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6YmxlbmQgbm93IHJldHVy
bnMgYSBib29sIGlmIGJsZW5kaW5nIHdvdWxkIGZhaWwuCisKKyAgICAgICAgVW5pdCB0ZXN0czoK
KyAgICAgICAgICBBbmltYXRpb25UcmFuc2xhdGlvblV0aWxUZXN0LmNyZWF0ZVRyYW5zZm9ybUFu
aW1hdGlvbldpdGhOb25EZWNvbXBvc2FibGVNYXRyaXgKKyAgICAgICAgICBBbmltYXRpb25UcmFu
c2xhdGlvblV0aWxUZXN0LmNyZWF0ZVRyYW5zZm9ybUFuaW1hdGlvbldpdGhOb25JbnZlcnRpYmxl
VHJhbnNmb3JtCisKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlRyYW5z
Zm9ybU9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpibGVuZFRyYW5zZm9ybU9wZXJh
dGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1PcGVyYXRpb25zOjpibGVuZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlRyYW5zZm9ybU9wZXJhdGlvbnM6OmNhbkJsZW5kV2l0aCk6
CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1PcGVyYXRp
b25zOjpibGVuZEludGVybmFsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0
L1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNm
b3JtYXRpb25NYXRyaXg6OmJsZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9BbmltYXRpb25UcmFuc2xhdGlvblV0aWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
VHJhbnNmb3JtQW5pbWF0aW9uQ3VydmUpOgorCiAyMDEyLTA5LTA1ICBTaGVyaWZmIEJvdCAgPHdl
YmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5n
IG91dCByMTI3NTczLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBlODcxMjdlYjVhYjNl
ODhlNDlkYzM4Njk4ZGVhNjk4N2FlN2UyNTU4Li5jM2IzMzc2ZmVmNmMwYTRjMTBhNDI1NWQ1NTI1
ZmFhNmYzZWU1ZTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBA
CisyMDEyLTA5LTA1ICBJYW4gVm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFtjaHJvbWl1bV0gV2Ugc2hvdWxkIGFjY2VsZXJhdGUgYWxsIHRyYW5zZm9ybWF0aW9ucywg
ZXhjZXB0IHdoZW4gd2UgbXVzdCBibGVuZCBtYXRyaWNlcyB0aGF0IGNhbm5vdCBiZSBkZWNvbXBv
c2VkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU4
NTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRl
ZCB0aGUgZm9sbG93aW5nIHVuaXQgdGVzdHM6CisgICAgICAgICAgQW5pbWF0aW9uVHJhbnNsYXRp
b25VdGlsVGVzdC5jcmVhdGVUcmFuc2Zvcm1BbmltYXRpb25XaXRoTm9uRGVjb21wb3NhYmxlTWF0
cml4CisgICAgICAgICAgQW5pbWF0aW9uVHJhbnNsYXRpb25VdGlsVGVzdC5jcmVhdGVUcmFuc2Zv
cm1BbmltYXRpb25XaXRoTm9uSW52ZXJ0aWJsZVRyYW5zZm9ybQorCisgICAgICAgICogdGVzdHMv
QW5pbWF0aW9uVHJhbnNsYXRpb25VdGlsVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRFU1Qp
OgorICAgICAgICAoV2ViS2l0KToKKwogMjAxMi0wOS0wNCAgSWx5YSBUaWtob25vdnNreSAgPGxv
aXNsb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogTk1JOiByZXBsYWNl
IE9iamVjdFR5cGUgZW51bSB3aXRoIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmcgaWRlbnRpZmll
cnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlRyYW5z
Zm9ybU9wZXJhdGlvbnMuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViVHJh
bnNmb3JtT3BlcmF0aW9ucy5oCmluZGV4IGU1NjVhZTdlOGFlMjYzZGJhMDMwN2QwMGE5ZmI3ZDc3
ZjUxOGIwMTEuLmZmM2ZhZGNmOWFiMjU0MWVmYjUzOWVhOThmOGEyZDljNDYzMTBhMmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViVHJhbnNmb3JtT3BlcmF0
aW9ucy5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViVHJhbnNmb3Jt
T3BlcmF0aW9ucy5oCkBAIC02OCw2ICs2OCwxMSBAQCBwdWJsaWM6CiAgICAgLy8gYXMgb3RoZXIg
YW5kIGl0cyBkZXNjZW5kYW50cy4KICAgICBXRUJLSVRfRVhQT1JUIGJvb2wgbWF0Y2hlc1R5cGVz
KGNvbnN0IFdlYlRyYW5zZm9ybU9wZXJhdGlvbnMmIG90aGVyKSBjb25zdDsKIAorICAgIC8vIFJl
dHVybnMgdHJ1ZSBpZiB0aGVzZSBvcGVyYXRpb25zIGNhbiBiZSBibGVuZGVkLiBJdCB3aWxsIG9u
bHkgcmV0dXJuCisgICAgLy8gZmFsc2UgaWYgd2UgbXVzdCByZXNvcnQgdG8gbWF0cml4IGludGVy
cG9sYXRpb24sIGFuZCBtYXRyaXggaW50ZXJwb2xhdGlvbgorICAgIC8vIGZhaWxzICh0aGlzIGNh
biBoYXBwZW4gaWYgZWl0aGVyIG1hdHJpeCBjYW5ub3QgYmUgZGVjb21wb3NlZCkuCisgICAgV0VC
S0lUX0VYUE9SVCBib29sIGNhbkJsZW5kV2l0aChjb25zdCBXZWJUcmFuc2Zvcm1PcGVyYXRpb25z
JiBvdGhlcikgY29uc3Q7CisKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYXBwZW5kVHJhbnNsYXRl
KGRvdWJsZSB4LCBkb3VibGUgeSwgZG91YmxlIHopOwogICAgIFdFQktJVF9FWFBPUlQgdm9pZCBh
cHBlbmRSb3RhdGUoZG91YmxlIHgsIGRvdWJsZSB5LCBkb3VibGUgeiwgZG91YmxlIGRlZ3JlZXMp
OwogICAgIFdFQktJVF9FWFBPUlQgdm9pZCBhcHBlbmRTY2FsZShkb3VibGUgeCwgZG91YmxlIHks
IGRvdWJsZSB6KTsKQEAgLTgyLDYgKzg3LDcgQEAgcHJpdmF0ZToKICAgICBXRUJLSVRfRVhQT1JU
IHZvaWQgcmVzZXQoKTsKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgaW5pdGlhbGl6ZSgpOwogICAg
IFdFQktJVF9FWFBPUlQgdm9pZCBpbml0aWFsaXplKGNvbnN0IFdlYlRyYW5zZm9ybU9wZXJhdGlv
bnMmIHByb3RvdHlwZSk7CisgICAgV0VCS0lUX0VYUE9SVCBib29sIGJsZW5kSW50ZXJuYWwoY29u
c3QgV2ViVHJhbnNmb3JtT3BlcmF0aW9ucyYgZnJvbSwgZG91YmxlIHByb2dyZXNzLCBXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgcmVzdWx0KSBjb25zdDsKIAogICAgIFdlYlByaXZhdGVPd25QdHI8
V2ViVHJhbnNmb3JtT3BlcmF0aW9uc1ByaXZhdGU+IG1fcHJpdmF0ZTsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4
LmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlRyYW5zZm9ybWF0aW9uTWF0
cml4LmgKaW5kZXggOWRlOWUyYzRjMTdjYzQ5ZDBlNjQ2YzEwNzcwOGI1ZGM4MTRlNjgwNi4uMzI4
NTdkNzBmNjA3MjY5Y2U0NDI2ZjU3Mjc5OTVlZmFjMjYzZmQ3MiAxMDA2NDQKLS0tIGEvU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgu
aApAQCAtNzcsNyArNzcsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBza2V3WChkb3VibGUgYW5nbGUp
OwogICAgIHZvaWQgc2tld1koZG91YmxlIGFuZ2xlKTsKICAgICB2b2lkIGFwcGx5UGVyc3BlY3Rp
dmUoZG91YmxlIHApOwotICAgIHZvaWQgYmxlbmQoY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRy
aXgmIGZyb20sIGRvdWJsZSBwcm9ncmVzcyk7CisKKyAgICAvLyBSZXR1cm5zIGZhbHNlIGlmIGVp
dGhlciB0cmFuc2Zvcm0gY2Fubm90IGJlIGRlY29tcG9zZWQuCisgICAgYm9vbCBibGVuZChjb25z
dCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZnJvbSwgZG91YmxlIHByb2dyZXNzKTsKIAogICAg
IGJvb2wgaGFzUGVyc3BlY3RpdmUoKSBjb25zdDsKICAgICBib29sIGlzSW52ZXJ0aWJsZSgpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9y
dC9XZWJUcmFuc2Zvcm1PcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL3N1cHBvcnQvV2ViVHJhbnNmb3JtT3BlcmF0aW9ucy5jcHAKaW5kZXggZTBjMjMwODkz
YjdmMTQ5YmYzYTc4ZTM0YTkzOTlkNWJjYzZkODMxZi4uM2I1MmQ5YzY2MzVmNTI0NWYzMDg2NTI0
NzdjYmFhNmE0Y2UyNWIxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vc3VwcG9ydC9XZWJUcmFuc2Zvcm1PcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlRyYW5zZm9ybU9wZXJhdGlvbnMuY3Bw
CkBAIC0xNDcsMTIgKzE0NywxMCBAQCBzdGF0aWMgZG91YmxlIGJsZW5kRG91Ymxlcyhkb3VibGUg
ZnJvbSwgZG91YmxlIHRvLCBkb3VibGUgcHJvZ3Jlc3MpCiAgICAgcmV0dXJuIGZyb20gKiAoMSAt
IHByb2dyZXNzKSArIHRvICogcHJvZ3Jlc3M7CiB9CiAKLXN0YXRpYyBXZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBibGVuZFRyYW5zZm9ybU9wZXJhdGlvbnMoY29uc3QgV2ViVHJhbnNmb3JtT3BlcmF0
aW9uKiBmcm9tLCBjb25zdCBXZWJUcmFuc2Zvcm1PcGVyYXRpb24qIHRvLCBkb3VibGUgcHJvZ3Jl
c3MpCitzdGF0aWMgYm9vbCBibGVuZFRyYW5zZm9ybU9wZXJhdGlvbnMoY29uc3QgV2ViVHJhbnNm
b3JtT3BlcmF0aW9uKiBmcm9tLCBjb25zdCBXZWJUcmFuc2Zvcm1PcGVyYXRpb24qIHRvLCBkb3Vi
bGUgcHJvZ3Jlc3MsIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiByZXN1bHQpCiB7Ci0gICAgV2Vi
VHJhbnNmb3JtYXRpb25NYXRyaXggdG9SZXR1cm47Ci0KICAgICBpZiAoaXNJZGVudGl0eShmcm9t
KSAmJiBpc0lkZW50aXR5KHRvKSkKLSAgICAgICAgcmV0dXJuIHRvUmV0dXJuOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAogICAgIFdlYlRyYW5zZm9ybU9wZXJhdGlvbjo6VHlwZSBpbnRlcnBvbGF0
aW9uVHlwZSA9IFdlYlRyYW5zZm9ybU9wZXJhdGlvbjo6V2ViVHJhbnNmb3JtT3BlcmF0aW9uSWRl
bnRpdHk7CiAgICAgaWYgKGlzSWRlbnRpdHkodG8pKQpAQCAtMTY4LDkgKzE2Niw5IEBAIHN0YXRp
YyBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBibGVuZFRyYW5zZm9ybU9wZXJhdGlvbnMoY29uc3Qg
V2ViVHJhbnNmb3JtT3BlcmF0CiAgICAgICAgIGRvdWJsZSB0b1ggPSBpc0lkZW50aXR5KHRvKSA/
IDAgOiB0by0+dHJhbnNsYXRlLng7CiAgICAgICAgIGRvdWJsZSB0b1kgPSBpc0lkZW50aXR5KHRv
KSA/IDAgOiB0by0+dHJhbnNsYXRlLnk7CiAgICAgICAgIGRvdWJsZSB0b1ogPSBpc0lkZW50aXR5
KHRvKSA/IDAgOiB0by0+dHJhbnNsYXRlLno7Ci0gICAgICAgIHRvUmV0dXJuLnRyYW5zbGF0ZTNk
KGJsZW5kRG91Ymxlcyhmcm9tWCwgdG9YLCBwcm9ncmVzcyksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJsZW5kRG91Ymxlcyhmcm9tWSwgdG9ZLCBwcm9ncmVzcyksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJsZW5kRG91Ymxlcyhmcm9tWiwgdG9aLCBwcm9ncmVzcykpOwor
ICAgICAgICByZXN1bHQudHJhbnNsYXRlM2QoYmxlbmREb3VibGVzKGZyb21YLCB0b1gsIHByb2dy
ZXNzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsZW5kRG91Ymxlcyhmcm9tWSwgdG9Z
LCBwcm9ncmVzcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBibGVuZERvdWJsZXMoZnJv
bVosIHRvWiwgcHJvZ3Jlc3MpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgV2Vi
VHJhbnNmb3JtT3BlcmF0aW9uOjpXZWJUcmFuc2Zvcm1PcGVyYXRpb25Sb3RhdGU6IHsKQEAgLTE4
MCw3ICsxNzgsNyBAQCBzdGF0aWMgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggYmxlbmRUcmFuc2Zv
cm1PcGVyYXRpb25zKGNvbnN0IFdlYlRyYW5zZm9ybU9wZXJhdAogICAgICAgICBkb3VibGUgZnJv
bUFuZ2xlID0gMDsKICAgICAgICAgZG91YmxlIHRvQW5nbGUgPSBpc0lkZW50aXR5KHRvKSA/IDAg
OiB0by0+cm90YXRlLmFuZ2xlOwogICAgICAgICBpZiAoc2hhcmVTYW1lQXhpcyhmcm9tLCB0bywg
YXhpc1gsIGF4aXNZLCBheGlzWiwgZnJvbUFuZ2xlKSkKLSAgICAgICAgICAgIHRvUmV0dXJuLnJv
dGF0ZTNkKGF4aXNYLCBheGlzWSwgYXhpc1osIGJsZW5kRG91Ymxlcyhmcm9tQW5nbGUsIHRvQW5n
bGUsIHByb2dyZXNzKSk7CisgICAgICAgICAgICByZXN1bHQucm90YXRlM2QoYXhpc1gsIGF4aXNZ
LCBheGlzWiwgYmxlbmREb3VibGVzKGZyb21BbmdsZSwgdG9BbmdsZSwgcHJvZ3Jlc3MpKTsKICAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0b01hdHJp
eDsKICAgICAgICAgICAgIGlmICghaXNJZGVudGl0eSh0bykpCkBAIC0xODgsOCArMTg2LDkgQEAg
c3RhdGljIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGJsZW5kVHJhbnNmb3JtT3BlcmF0aW9ucyhj
b25zdCBXZWJUcmFuc2Zvcm1PcGVyYXQKICAgICAgICAgICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0
cml4IGZyb21NYXRyaXg7CiAgICAgICAgICAgICBpZiAoIWlzSWRlbnRpdHkoZnJvbSkpCiAgICAg
ICAgICAgICAgICAgZnJvbU1hdHJpeCA9IGZyb20tPm1hdHJpeDsKLSAgICAgICAgICAgIHRvUmV0
dXJuID0gdG9NYXRyaXg7Ci0gICAgICAgICAgICB0b1JldHVybi5ibGVuZChmcm9tTWF0cml4LCBw
cm9ncmVzcyk7CisgICAgICAgICAgICByZXN1bHQgPSB0b01hdHJpeDsKKyAgICAgICAgICAgIGlm
ICghcmVzdWx0LmJsZW5kKGZyb21NYXRyaXgsIHByb2dyZXNzKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMjAwLDkg
KzE5OSw5IEBAIHN0YXRpYyBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBibGVuZFRyYW5zZm9ybU9w
ZXJhdGlvbnMoY29uc3QgV2ViVHJhbnNmb3JtT3BlcmF0CiAgICAgICAgIGRvdWJsZSB0b1ggPSBp
c0lkZW50aXR5KHRvKSA/IDEgOiB0by0+c2NhbGUueDsKICAgICAgICAgZG91YmxlIHRvWSA9IGlz
SWRlbnRpdHkodG8pID8gMSA6IHRvLT5zY2FsZS55OwogICAgICAgICBkb3VibGUgdG9aID0gaXNJ
ZGVudGl0eSh0bykgPyAxIDogdG8tPnNjYWxlLno7Ci0gICAgICAgIHRvUmV0dXJuLnNjYWxlM2Qo
YmxlbmREb3VibGVzKGZyb21YLCB0b1gsIHByb2dyZXNzKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICBibGVuZERvdWJsZXMoZnJvbVksIHRvWSwgcHJvZ3Jlc3MpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgIGJsZW5kRG91Ymxlcyhmcm9tWiwgdG9aLCBwcm9ncmVzcykpOworICAgICAgICBy
ZXN1bHQuc2NhbGUzZChibGVuZERvdWJsZXMoZnJvbVgsIHRvWCwgcHJvZ3Jlc3MpLAorICAgICAg
ICAgICAgICAgICAgICAgICBibGVuZERvdWJsZXMoZnJvbVksIHRvWSwgcHJvZ3Jlc3MpLAorICAg
ICAgICAgICAgICAgICAgICAgICBibGVuZERvdWJsZXMoZnJvbVosIHRvWiwgcHJvZ3Jlc3MpKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgV2ViVHJhbnNmb3JtT3BlcmF0aW9uOjpX
ZWJUcmFuc2Zvcm1PcGVyYXRpb25Ta2V3OiB7CkBAIC0yMTAsMTQgKzIwOSwxNCBAQCBzdGF0aWMg
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXggYmxlbmRUcmFuc2Zvcm1PcGVyYXRpb25zKGNvbnN0IFdl
YlRyYW5zZm9ybU9wZXJhdAogICAgICAgICBkb3VibGUgZnJvbVkgPSBpc0lkZW50aXR5KGZyb20p
ID8gMCA6IGZyb20tPnNrZXcueTsKICAgICAgICAgZG91YmxlIHRvWCA9IGlzSWRlbnRpdHkodG8p
ID8gMCA6IHRvLT5za2V3Lng7CiAgICAgICAgIGRvdWJsZSB0b1kgPSBpc0lkZW50aXR5KHRvKSA/
IDAgOiB0by0+c2tldy55OwotICAgICAgICB0b1JldHVybi5za2V3WChibGVuZERvdWJsZXMoZnJv
bVgsIHRvWCwgcHJvZ3Jlc3MpKTsKLSAgICAgICAgdG9SZXR1cm4uc2tld1koYmxlbmREb3VibGVz
KGZyb21ZLCB0b1ksIHByb2dyZXNzKSk7CisgICAgICAgIHJlc3VsdC5za2V3WChibGVuZERvdWJs
ZXMoZnJvbVgsIHRvWCwgcHJvZ3Jlc3MpKTsKKyAgICAgICAgcmVzdWx0LnNrZXdZKGJsZW5kRG91
Ymxlcyhmcm9tWSwgdG9ZLCBwcm9ncmVzcykpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAg
Y2FzZSBXZWJUcmFuc2Zvcm1PcGVyYXRpb246OldlYlRyYW5zZm9ybU9wZXJhdGlvblBlcnNwZWN0
aXZlOiB7CiAgICAgICAgIGRvdWJsZSBmcm9tUGVyc3BlY3RpdmVEZXB0aCA9IGlzSWRlbnRpdHko
ZnJvbSkgPyBudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgoKSA6IGZyb20tPnBlcnNwZWN0aXZl
RGVwdGg7CiAgICAgICAgIGRvdWJsZSB0b1BlcnNwZWN0aXZlRGVwdGggPSBpc0lkZW50aXR5KHRv
KSA/IG51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgpIDogdG8tPnBlcnNwZWN0aXZlRGVwdGg7
Ci0gICAgICAgIHRvUmV0dXJuLmFwcGx5UGVyc3BlY3RpdmUoYmxlbmREb3VibGVzKGZyb21QZXJz
cGVjdGl2ZURlcHRoLCB0b1BlcnNwZWN0aXZlRGVwdGgsIHByb2dyZXNzKSk7CisgICAgICAgIHJl
c3VsdC5hcHBseVBlcnNwZWN0aXZlKGJsZW5kRG91Ymxlcyhmcm9tUGVyc3BlY3RpdmVEZXB0aCwg
dG9QZXJzcGVjdGl2ZURlcHRoLCBwcm9ncmVzcykpOwogICAgICAgICBicmVhazsKICAgICB9CiAg
ICAgY2FzZSBXZWJUcmFuc2Zvcm1PcGVyYXRpb246OldlYlRyYW5zZm9ybU9wZXJhdGlvbk1hdHJp
eDogewpAQCAtMjI3LDggKzIyNiw5IEBAIHN0YXRpYyBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBi
bGVuZFRyYW5zZm9ybU9wZXJhdGlvbnMoY29uc3QgV2ViVHJhbnNmb3JtT3BlcmF0CiAgICAgICAg
IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGZyb21NYXRyaXg7CiAgICAgICAgIGlmICghaXNJZGVu
dGl0eShmcm9tKSkKICAgICAgICAgICAgIGZyb21NYXRyaXggPSBmcm9tLT5tYXRyaXg7Ci0gICAg
ICAgIHRvUmV0dXJuID0gdG9NYXRyaXg7Ci0gICAgICAgIHRvUmV0dXJuLmJsZW5kKGZyb21NYXRy
aXgsIHByb2dyZXNzKTsKKyAgICAgICAgcmVzdWx0ID0gdG9NYXRyaXg7CisgICAgICAgIGlmICgh
cmVzdWx0LmJsZW5kKGZyb21NYXRyaXgsIHByb2dyZXNzKSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgV2ViVHJhbnNmb3JtT3BlcmF0
aW9uOjpXZWJUcmFuc2Zvcm1PcGVyYXRpb25JZGVudGl0eToKQEAgLTIzNiwzMiArMjM2LDEzIEBA
IHN0YXRpYyBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBibGVuZFRyYW5zZm9ybU9wZXJhdGlvbnMo
Y29uc3QgV2ViVHJhbnNmb3JtT3BlcmF0CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIHJl
dHVybiB0b1JldHVybjsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogV2ViVHJhbnNmb3JtYXRpb25N
YXRyaXggV2ViVHJhbnNmb3JtT3BlcmF0aW9uczo6YmxlbmQoY29uc3QgV2ViVHJhbnNmb3JtT3Bl
cmF0aW9ucyYgZnJvbSwgZG91YmxlIHByb2dyZXNzKSBjb25zdAogewogICAgIFdlYlRyYW5zZm9y
bWF0aW9uTWF0cml4IHRvUmV0dXJuOwotICAgIGJvb2wgZnJvbUlkZW50aXR5ID0gZnJvbS5pc0lk
ZW50aXR5KCk7Ci0gICAgYm9vbCB0b0lkZW50aXR5ID0gaXNJZGVudGl0eSgpOwotICAgIGlmIChm
cm9tSWRlbnRpdHkgJiYgdG9JZGVudGl0eSkKLSAgICAgICAgcmV0dXJuIHRvUmV0dXJuOwotCi0g
ICAgaWYgKG1hdGNoZXNUeXBlcyhmcm9tKSkgewotICAgICAgICBzaXplX3QgbnVtT3BlcmF0aW9u
cyA9IG1heChmcm9tSWRlbnRpdHkgPyAwIDogZnJvbS5tX3ByaXZhdGUtPm9wZXJhdGlvbnMuc2l6
ZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b0lkZW50aXR5ID8gMCA6
IG1fcHJpdmF0ZS0+b3BlcmF0aW9ucy5zaXplKCkpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG51bU9wZXJhdGlvbnM7ICsraSkgewotICAgICAgICAgICAgV2ViVHJhbnNmb3JtYXRp
b25NYXRyaXggYmxlbmRlZCA9IGJsZW5kVHJhbnNmb3JtT3BlcmF0aW9ucygKLSAgICAgICAgICAg
ICAgICBmcm9tSWRlbnRpdHkgPyAwIDogJmZyb20ubV9wcml2YXRlLT5vcGVyYXRpb25zW2ldLAot
ICAgICAgICAgICAgICAgIHRvSWRlbnRpdHkgPyAwIDogJm1fcHJpdmF0ZS0+b3BlcmF0aW9uc1tp
XSwKLSAgICAgICAgICAgICAgICBwcm9ncmVzcyk7Ci0gICAgICAgICAgICB0b1JldHVybi5tdWx0
aXBseShibGVuZGVkKTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIHRvUmV0dXJu
ID0gYXBwbHkoKTsKLSAgICAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggZnJvbVRyYW5zZm9y
bSA9IGZyb20uYXBwbHkoKTsKLSAgICAgICAgdG9SZXR1cm4uYmxlbmQoZnJvbVRyYW5zZm9ybSwg
cHJvZ3Jlc3MpOwotICAgIH0KKyAgICBibGVuZEludGVybmFsKGZyb20sIHByb2dyZXNzLCB0b1Jl
dHVybik7CiAgICAgcmV0dXJuIHRvUmV0dXJuOwogfQogCkBAIC0yODMsNiArMjY0LDEyIEBAIGJv
b2wgV2ViVHJhbnNmb3JtT3BlcmF0aW9uczo6bWF0Y2hlc1R5cGVzKGNvbnN0IFdlYlRyYW5zZm9y
bU9wZXJhdGlvbnMmIG90aGVyKSBjCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgV2ViVHJh
bnNmb3JtT3BlcmF0aW9uczo6Y2FuQmxlbmRXaXRoKGNvbnN0IFdlYlRyYW5zZm9ybU9wZXJhdGlv
bnMmIG90aGVyKSBjb25zdAoreworICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGR1bW15Owor
ICAgIHJldHVybiBibGVuZEludGVybmFsKG90aGVyLCAwLjUsIGR1bW15KTsKK30KKwogdm9pZCBX
ZWJUcmFuc2Zvcm1PcGVyYXRpb25zOjphcHBlbmRUcmFuc2xhdGUoZG91YmxlIHgsIGRvdWJsZSB5
LCBkb3VibGUgeikKIHsKICAgICBXZWJUcmFuc2Zvcm1PcGVyYXRpb24gdG9BZGQ7CkBAIC0zNzcs
NCArMzY0LDMxIEBAIHZvaWQgV2ViVHJhbnNmb3JtT3BlcmF0aW9uczo6aW5pdGlhbGl6ZShjb25z
dCBXZWJUcmFuc2Zvcm1PcGVyYXRpb25zJiBvdGhlcikKICAgICAgICAgaW5pdGlhbGl6ZSgpOwog
fQogCitib29sIFdlYlRyYW5zZm9ybU9wZXJhdGlvbnM6OmJsZW5kSW50ZXJuYWwoY29uc3QgV2Vi
VHJhbnNmb3JtT3BlcmF0aW9ucyYgZnJvbSwgZG91YmxlIHByb2dyZXNzLCBXZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgcmVzdWx0KSBjb25zdAoreworICAgIGJvb2wgZnJvbUlkZW50aXR5ID0gZnJv
bS5pc0lkZW50aXR5KCk7CisgICAgYm9vbCB0b0lkZW50aXR5ID0gaXNJZGVudGl0eSgpOworICAg
IGlmIChmcm9tSWRlbnRpdHkgJiYgdG9JZGVudGl0eSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisK
KyAgICBpZiAobWF0Y2hlc1R5cGVzKGZyb20pKSB7CisgICAgICAgIHNpemVfdCBudW1PcGVyYXRp
b25zID0gbWF4KGZyb21JZGVudGl0eSA/IDAgOiBmcm9tLm1fcHJpdmF0ZS0+b3BlcmF0aW9ucy5z
aXplKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvSWRlbnRpdHkgPyAw
IDogbV9wcml2YXRlLT5vcGVyYXRpb25zLnNpemUoKSk7CisgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbnVtT3BlcmF0aW9uczsgKytpKSB7CisgICAgICAgICAgICBXZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBibGVuZGVkOworICAgICAgICAgICAgaWYgKCFibGVuZFRyYW5zZm9ybU9wZXJh
dGlvbnMoZnJvbUlkZW50aXR5ID8gMCA6ICZmcm9tLm1fcHJpdmF0ZS0+b3BlcmF0aW9uc1tpXSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvSWRlbnRpdHkgPyAw
IDogJm1fcHJpdmF0ZS0+b3BlcmF0aW9uc1tpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHByb2dyZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYmxlbmRlZCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgcmVzdWx0Lm11bHRpcGx5KGJsZW5kZWQpOworICAgICAgICB9CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKworICAgIHJlc3VsdCA9IGFwcGx5KCk7CisgICAgV2ViVHJhbnNm
b3JtYXRpb25NYXRyaXggZnJvbVRyYW5zZm9ybSA9IGZyb20uYXBwbHkoKTsKKyAgICByZXR1cm4g
cmVzdWx0LmJsZW5kKGZyb21UcmFuc2Zvcm0sIHByb2dyZXNzKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9z
dXBwb3J0L1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXguY3BwCmluZGV4IDZk
OTk0NDBkNTBiYzI4MTJmNjhhMWE5NzVjOWVkZDc1Yzc3ZDk5NGQuLjAxYTk2YTQ1NTk4NzZkYTFk
MmU0Y2JkNzA1NGMwYjQ3Y2EyNDJiZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXguY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViVHJhbnNmb3JtYXRpb25N
YXRyaXguY3BwCkBAIC0xNjIsOSArMTYyLDEzIEBAIHZvaWQgV2ViVHJhbnNmb3JtYXRpb25NYXRy
aXg6OmFwcGx5UGVyc3BlY3RpdmUoZG91YmxlIHApCiAgICAgbV9wcml2YXRlLmFwcGx5UGVyc3Bl
Y3RpdmUocCk7CiB9CiAKLXZvaWQgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OmJsZW5kKGNvbnN0
IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MpCitib29sIFdl
YlRyYW5zZm9ybWF0aW9uTWF0cml4OjpibGVuZChjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgZnJvbSwgZG91YmxlIHByb2dyZXNzKQogeworICAgIFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9u
TWF0cml4OjpEZWNvbXBvc2VkVHlwZSBkdW1teTsKKyAgICBpZiAoIW1fcHJpdmF0ZS5kZWNvbXBv
c2UoZHVtbXkpIHx8ICFmcm9tLm1fcHJpdmF0ZS5kZWNvbXBvc2UoZHVtbXkpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgbV9wcml2YXRlLmJsZW5kKGZyb20ubV9wcml2YXRlLCBwcm9ncmVz
cyk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6
Omhhc1BlcnNwZWN0aXZlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0FuaW1hdGlvblRyYW5zbGF0aW9uVXRpbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9BbmltYXRpb25UcmFuc2xhdGlv
blV0aWwuY3BwCmluZGV4IDE3OWZjYzAyMWI2Mzg5YjQ2Zjc0NjY4ZjM1NTc3MTVhZDFiODBlNmIu
LmExYzQ1NzQ3YWU2NDUzOTA4YmM3NTdlMGNkODljNDNlMTRmNzkxZGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0FuaW1hdGlvblRyYW5zbGF0
aW9uVXRpbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQW5pbWF0aW9uVHJhbnNsYXRpb25VdGlsLmNwcApAQCAtMTUyLDggKzE1MiwxMyBAQCBib29s
IGlzUm90YXRpb25UeXBlKFRyYW5zZm9ybU9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSB0cmFuc2Zv
cm1UeXBlKQogdGVtcGxhdGUgPD4KIGJvb2wgYXBwZW5kS2V5ZnJhbWVXaXRoU3RhbmRhcmRUaW1p
bmdGdW5jdGlvbjxUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSwgV2ViVHJhbnNmb3JtS2V5ZnJhbWUs
IFdlYlRyYW5zZm9ybUFuaW1hdGlvbkN1cnZlPihXZWJUcmFuc2Zvcm1BbmltYXRpb25DdXJ2ZSog
Y3VydmUsIGRvdWJsZSBrZXlUaW1lLCBjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSogdmFs
dWUsIGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKiBsYXN0VmFsdWUsIFdlYktpdDo6V2Vi
QW5pbWF0aW9uQ3VydmU6OlRpbWluZ0Z1bmN0aW9uVHlwZSB0aW1pbmdGdW5jdGlvblR5cGUsIGNv
bnN0IEZsb2F0U2l6ZSYgYm94U2l6ZSkKIHsKKyAgICBib29sIGNhbkJsZW5kID0gIWxhc3RWYWx1
ZTsKICAgICBXZWJUcmFuc2Zvcm1PcGVyYXRpb25zIG9wZXJhdGlvbnMgPSB0b1dlYlRyYW5zZm9y
bU9wZXJhdGlvbnMoKnZhbHVlLT52YWx1ZSgpLCBib3hTaXplKTsKLSAgICBpZiAob3BlcmF0aW9u
cy5hcHBseSgpLmlzSW52ZXJ0aWJsZSgpKSB7CisgICAgaWYgKCFjYW5CbGVuZCkgeworICAgICAg
ICBXZWJUcmFuc2Zvcm1PcGVyYXRpb25zIGxhc3RPcGVyYXRpb25zID0gdG9XZWJUcmFuc2Zvcm1P
cGVyYXRpb25zKCpsYXN0VmFsdWUtPnZhbHVlKCksIGJveFNpemUpOworICAgICAgICBjYW5CbGVu
ZCA9IGxhc3RPcGVyYXRpb25zLmNhbkJsZW5kV2l0aChvcGVyYXRpb25zKTsKKyAgICB9CisgICAg
aWYgKGNhbkJsZW5kKSB7CiAgICAgICAgIGN1cnZlLT5hZGQoV2ViVHJhbnNmb3JtS2V5ZnJhbWUo
a2V5VGltZSwgb3BlcmF0aW9ucyksIHRpbWluZ0Z1bmN0aW9uVHlwZSk7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KQEAgLTE2Myw4ICsxNjgsMTMgQEAgYm9vbCBhcHBlbmRLZXlmcmFtZVdp
dGhTdGFuZGFyZFRpbWluZ0Z1bmN0aW9uPFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlLCBXZWJUcmFu
c2YKIHRlbXBsYXRlIDw+CiBib29sIGFwcGVuZEtleWZyYW1lV2l0aEN1c3RvbUJlemllclRpbWlu
Z0Z1bmN0aW9uPFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlLCBXZWJUcmFuc2Zvcm1LZXlmcmFtZSwg
V2ViVHJhbnNmb3JtQW5pbWF0aW9uQ3VydmU+KFdlYlRyYW5zZm9ybUFuaW1hdGlvbkN1cnZlKiBj
dXJ2ZSwgZG91YmxlIGtleVRpbWUsIGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKiB2YWx1
ZSwgY29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUqIGxhc3RWYWx1ZSwgZG91YmxlIHgxLCBk
b3VibGUgeTEsIGRvdWJsZSB4MiwgZG91YmxlIHkyLCBjb25zdCBGbG9hdFNpemUmIGJveFNpemUp
CiB7CisgICAgYm9vbCBjYW5CbGVuZCA9ICFsYXN0VmFsdWU7CiAgICAgV2ViVHJhbnNmb3JtT3Bl
cmF0aW9ucyBvcGVyYXRpb25zID0gdG9XZWJUcmFuc2Zvcm1PcGVyYXRpb25zKCp2YWx1ZS0+dmFs
dWUoKSwgYm94U2l6ZSk7Ci0gICAgaWYgKG9wZXJhdGlvbnMuYXBwbHkoKS5pc0ludmVydGlibGUo
KSkgeworICAgIGlmICghY2FuQmxlbmQpIHsKKyAgICAgICAgV2ViVHJhbnNmb3JtT3BlcmF0aW9u
cyBsYXN0T3BlcmF0aW9ucyA9IHRvV2ViVHJhbnNmb3JtT3BlcmF0aW9ucygqbGFzdFZhbHVlLT52
YWx1ZSgpLCBib3hTaXplKTsKKyAgICAgICAgY2FuQmxlbmQgPSBsYXN0T3BlcmF0aW9ucy5jYW5C
bGVuZFdpdGgob3BlcmF0aW9ucyk7CisgICAgfQorICAgIGlmIChjYW5CbGVuZCkgewogICAgICAg
ICBjdXJ2ZS0+YWRkKFdlYlRyYW5zZm9ybUtleWZyYW1lKGtleVRpbWUsIG9wZXJhdGlvbnMpLCB4
MSwgeTEsIHgyLCB5Mik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQW5pbWF0aW9uVHJhbnNsYXRpb25VdGlsVGVz
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0FuaW1hdGlvblRyYW5zbGF0aW9u
VXRpbFRlc3QuY3BwCmluZGV4IDU2MmY3ODUyMDJhNWQzZDY2ZDYxOThjNzk4ZWNmZjQ1MjMwZDAz
YzguLjdiMTg0ZmEzNDNiZTEzOGRhNTY4NDBiN2RhYzRmMTcyMTg0NDAzYWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQW5pbWF0aW9uVHJhbnNsYXRpb25VdGlsVGVz
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9BbmltYXRpb25UcmFuc2xh
dGlvblV0aWxUZXN0LmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkludFNpemUuaCIK
ICNpbmNsdWRlICJNYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIlJvdGF0
ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIgorI2luY2x1ZGUgIlNjYWxlVHJhbnNmb3JtT3BlcmF0aW9u
LmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlRyYW5zbGF0
ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CkBAIC0xNTUs
NyArMTU2LDcgQEAgVEVTVChBbmltYXRpb25UcmFuc2xhdGlvblV0aWxUZXN0LCBjcmVhdGVUcmFu
c2Zvcm1BbmltYXRpb25XaXRoU21hbGxSb3RhdGlvbkludm8KICAgICBFWFBFQ1RfVFJVRShhbmlt
YXRpb25DYW5CZVRyYW5zbGF0ZWQodmFsdWVzLCBhbmltYXRpb24uZ2V0KCkpKTsKIH0KIAotVEVT
VChBbmltYXRpb25UcmFuc2xhdGlvblV0aWxUZXN0LCBjcmVhdGVUcmFuc2Zvcm1BbmltYXRpb25X
aXRoU2luZ3VsYXJNYXRyaXgpCitURVNUKEFuaW1hdGlvblRyYW5zbGF0aW9uVXRpbFRlc3QsIGNy
ZWF0ZVRyYW5zZm9ybUFuaW1hdGlvbldpdGhOb25EZWNvbXBvc2FibGVNYXRyaXgpCiB7CiAgICAg
Y29uc3QgZG91YmxlIGR1cmF0aW9uID0gMTsKICAgICBXZWJDb3JlOjpLZXlmcmFtZVZhbHVlTGlz
dCB2YWx1ZXMoQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSk7CkBAIC0xNzcsNiArMTc4
LDI1IEBAIFRFU1QoQW5pbWF0aW9uVHJhbnNsYXRpb25VdGlsVGVzdCwgY3JlYXRlVHJhbnNmb3Jt
QW5pbWF0aW9uV2l0aFNpbmd1bGFyTWF0cml4KQogICAgIEVYUEVDVF9GQUxTRShhbmltYXRpb25D
YW5CZVRyYW5zbGF0ZWQodmFsdWVzLCBhbmltYXRpb24uZ2V0KCkpKTsKIH0KIAorVEVTVChBbmlt
YXRpb25UcmFuc2xhdGlvblV0aWxUZXN0LCBjcmVhdGVUcmFuc2Zvcm1BbmltYXRpb25XaXRoTm9u
SW52ZXJ0aWJsZVRyYW5zZm9ybSkKK3sKKyAgICBjb25zdCBkb3VibGUgZHVyYXRpb24gPSAxOwor
ICAgIFdlYkNvcmU6OktleWZyYW1lVmFsdWVMaXN0IHZhbHVlcyhBbmltYXRlZFByb3BlcnR5V2Vi
a2l0VHJhbnNmb3JtKTsKKworICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgb3BlcmF0aW9uczE7Cisg
ICAgb3BlcmF0aW9uczEub3BlcmF0aW9ucygpLmFwcGVuZChTY2FsZVRyYW5zZm9ybU9wZXJhdGlv
bjo6Y3JlYXRlKDEsIDEsIDEsIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEVfM0QpKTsKKyAgICB2
YWx1ZXMuaW5zZXJ0KG5ldyBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSgwLCAmb3BlcmF0aW9uczEp
KTsKKworICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgb3BlcmF0aW9uczI7CisgICAgb3BlcmF0aW9u
czIub3BlcmF0aW9ucygpLmFwcGVuZChTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKDEs
IDAsIDEsIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEVfM0QpKTsKKyAgICB2YWx1ZXMuaW5zZXJ0
KG5ldyBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZShkdXJhdGlvbiwgJm9wZXJhdGlvbnMyKSk7CisK
KyAgICBSZWZQdHI8QW5pbWF0aW9uPiBhbmltYXRpb24gPSBBbmltYXRpb246OmNyZWF0ZSgpOwor
ICAgIGFuaW1hdGlvbi0+c2V0RHVyYXRpb24oZHVyYXRpb24pOworCisgICAgRVhQRUNUX1RSVUUo
YW5pbWF0aW9uQ2FuQmVUcmFuc2xhdGVkKHZhbHVlcywgYW5pbWF0aW9uLmdldCgpKSk7Cit9CisK
IFRFU1QoQW5pbWF0aW9uVHJhbnNsYXRpb25VdGlsVGVzdCwgY3JlYXRlUmV2ZXJzZWRBbmltYXRp
b24pCiB7CiAgICAgY29uc3QgZG91YmxlIGR1cmF0aW9uID0gMTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162768</attachid>
            <date>2012-09-07 07:39:13 -0700</date>
            <delta_ts>2012-09-07 08:32:17 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-95855-20120907103853.patch</filename>
            <type>text/plain</type>
            <size>19347</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3ODY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA2MmM2YTkxMGY1YzQ0
Y2RiNTVmMGI5ZTk3Y2YyMTIyZGE5ZWExNjVjLi44NjhmZDFiN2Q1Y2ViZDNlYzY1YzMwMWI5OGJj
NWU0MTQyMDk4NmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wOS0wNSAg
SWFuIFZvbGxpY2sgIDx2b2xsaWNrQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1d
IFdlIHNob3VsZCBhY2NlbGVyYXRlIGFsbCB0cmFuc2Zvcm1hdGlvbnMsIGV4Y2VwdCB3aGVuIHdl
IG11c3QgYmxlbmQgbWF0cmljZXMgdGhhdCBjYW5ub3QgYmUgZGVjb21wb3NlZC4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1ODU1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgSmFtZXMgUm9iaW5zb24uCisKKyAgICAgICAgV2ViVHJhbnNmb3JtT3BlcmF0
aW9ucyBhcmUgbm93IGFibGUgdG8gcmVwb3J0IGlmIHRoZXkgY2FuIHN1Y2Nlc3NmdWxseSBibGVu
ZC4KKyAgICAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OmJsZW5kIG5vdyByZXR1cm5zIGEg
Ym9vbCBpZiBibGVuZGluZyB3b3VsZCBmYWlsLgorCisgICAgICAgICogY2hyb21pdW0vcHVibGlj
L1dlYlRyYW5zZm9ybU9wZXJhdGlvbnMuaDoKKyAgICAgICAgKFdlYlRyYW5zZm9ybU9wZXJhdGlv
bnMpOgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5o
OgorICAgICAgICAoV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgpOgorCiAyMDEyLTA5LTA3ICBOYXQg
RHVjYSAgPG5kdWNhQGNocm9taXVtLm9yZz4KICAgICAgICAgW2Nocm9taXVtXSBBbGxvdyBlbnVt
ZXJhdGlvbiBvZiBXZWJSZW5kZXJpbmdTdGF0cyBzdHJ1Y3R1cmUKICAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0NTY1CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDhiMzQ2
NmQwMjYwMzlmNmE3NmExNDcxMWEyZDc3YjdlZjFkZWNhZi4uZmM4MzFiZDhkNDlkZTc0NmM3M2U2
M2MxOTE1OWQzZjJhMWIxZjE2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTA5
LTA1ICBJYW4gVm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJv
bWl1bV0gV2Ugc2hvdWxkIGFjY2VsZXJhdGUgYWxsIHRyYW5zZm9ybWF0aW9ucywgZXhjZXB0IHdo
ZW4gd2UgbXVzdCBibGVuZCBtYXRyaWNlcyB0aGF0IGNhbm5vdCBiZSBkZWNvbXBvc2VkLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU4NTUKKworICAg
ICAgICBSZXZpZXdlZCBieSBKYW1lcyBSb2JpbnNvbi4KKworICAgICAgICBXZWJUcmFuc2Zvcm1P
cGVyYXRpb25zIGFyZSBub3cgYWJsZSB0byByZXBvcnQgaWYgdGhleSBjYW4gc3VjY2Vzc2Z1bGx5
IGJsZW5kLgorICAgICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6YmxlbmQgbm93IHJldHVy
bnMgYSBib29sIGlmIGJsZW5kaW5nIHdvdWxkIGZhaWwuCisKKyAgICAgICAgVW5pdCB0ZXN0czoK
KyAgICAgICAgICBBbmltYXRpb25UcmFuc2xhdGlvblV0aWxUZXN0LmNyZWF0ZVRyYW5zZm9ybUFu
aW1hdGlvbldpdGhOb25EZWNvbXBvc2FibGVNYXRyaXgKKyAgICAgICAgICBBbmltYXRpb25UcmFu
c2xhdGlvblV0aWxUZXN0LmNyZWF0ZVRyYW5zZm9ybUFuaW1hdGlvbldpdGhOb25JbnZlcnRpYmxl
VHJhbnNmb3JtCisKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlRyYW5z
Zm9ybU9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpibGVuZFRyYW5zZm9ybU9wZXJh
dGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1PcGVyYXRpb25zOjpibGVuZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlRyYW5zZm9ybU9wZXJhdGlvbnM6OmNhbkJsZW5kV2l0aCk6
CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1PcGVyYXRp
b25zOjpibGVuZEludGVybmFsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0
L1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNm
b3JtYXRpb25NYXRyaXg6OmJsZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9BbmltYXRpb25UcmFuc2xhdGlvblV0aWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
VHJhbnNmb3JtQW5pbWF0aW9uQ3VydmUpOgorCiAyMDEyLTA5LTA3ICBTaGVyaWZmIEJvdCAgPHdl
YmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5n
IG91dCByMTI3NzgwIGFuZCByMTI3ODU5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAz
ZmY0MTFkMGQwODllZmRhZjgxYzAwOTU2ODRmYmE2MGM1ZmZiZjFkLi4yM2MxYjNmNDg5MDlhZWNj
YTk4ZjQ1NzgwYzQ2MjAxY2RmZjY1MWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE4IEBACisyMDEyLTA5LTA1ICBJYW4gVm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gV2Ugc2hvdWxkIGFjY2VsZXJhdGUgYWxsIHRyYW5z
Zm9ybWF0aW9ucywgZXhjZXB0IHdoZW4gd2UgbXVzdCBibGVuZCBtYXRyaWNlcyB0aGF0IGNhbm5v
dCBiZSBkZWNvbXBvc2VkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTU4NTUKKworICAgICAgICBSZXZpZXdlZCBieSBKYW1lcyBSb2JpbnNvbi4KKwor
ICAgICAgICBBZGRlZCB0aGUgZm9sbG93aW5nIHVuaXQgdGVzdHM6CisgICAgICAgICAgQW5pbWF0
aW9uVHJhbnNsYXRpb25VdGlsVGVzdC5jcmVhdGVUcmFuc2Zvcm1BbmltYXRpb25XaXRoTm9uRGVj
b21wb3NhYmxlTWF0cml4CisgICAgICAgICAgQW5pbWF0aW9uVHJhbnNsYXRpb25VdGlsVGVzdC5j
cmVhdGVUcmFuc2Zvcm1BbmltYXRpb25XaXRoTm9uSW52ZXJ0aWJsZVRyYW5zZm9ybQorCisgICAg
ICAgICogdGVzdHMvQW5pbWF0aW9uVHJhbnNsYXRpb25VdGlsVGVzdC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlRFU1QpOgorICAgICAgICAoV2ViS2l0KToKKwogMjAxMi0wOS0wNyAgQWxsYW4gU2Fu
ZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQG5va2lhLmNvbT4KIAogICAgICAgICBYMTEgR2xv
YmFsIFNlbGVjdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJUcmFuc2Zvcm1PcGVyYXRpb25zLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVi
bGljL1dlYlRyYW5zZm9ybU9wZXJhdGlvbnMuaAppbmRleCBlNTY1YWU3ZThhZTI2M2RiYTAzMDdk
MDBhOWZiN2Q3N2Y1MThiMDExLi5mZjNmYWRjZjlhYjI1NDFlZmI1MzllYTk4ZjhhMmQ5YzQ2MzEw
YTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlRyYW5z
Zm9ybU9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dl
YlRyYW5zZm9ybU9wZXJhdGlvbnMuaApAQCAtNjgsNiArNjgsMTEgQEAgcHVibGljOgogICAgIC8v
IGFzIG90aGVyIGFuZCBpdHMgZGVzY2VuZGFudHMuCiAgICAgV0VCS0lUX0VYUE9SVCBib29sIG1h
dGNoZXNUeXBlcyhjb25zdCBXZWJUcmFuc2Zvcm1PcGVyYXRpb25zJiBvdGhlcikgY29uc3Q7CiAK
KyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlc2Ugb3BlcmF0aW9ucyBjYW4gYmUgYmxlbmRlZC4g
SXQgd2lsbCBvbmx5IHJldHVybgorICAgIC8vIGZhbHNlIGlmIHdlIG11c3QgcmVzb3J0IHRvIG1h
dHJpeCBpbnRlcnBvbGF0aW9uLCBhbmQgbWF0cml4IGludGVycG9sYXRpb24KKyAgICAvLyBmYWls
cyAodGhpcyBjYW4gaGFwcGVuIGlmIGVpdGhlciBtYXRyaXggY2Fubm90IGJlIGRlY29tcG9zZWQp
LgorICAgIFdFQktJVF9FWFBPUlQgYm9vbCBjYW5CbGVuZFdpdGgoY29uc3QgV2ViVHJhbnNmb3Jt
T3BlcmF0aW9ucyYgb3RoZXIpIGNvbnN0OworCiAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFwcGVu
ZFRyYW5zbGF0ZShkb3VibGUgeCwgZG91YmxlIHksIGRvdWJsZSB6KTsKICAgICBXRUJLSVRfRVhQ
T1JUIHZvaWQgYXBwZW5kUm90YXRlKGRvdWJsZSB4LCBkb3VibGUgeSwgZG91YmxlIHosIGRvdWJs
ZSBkZWdyZWVzKTsKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYXBwZW5kU2NhbGUoZG91YmxlIHgs
IGRvdWJsZSB5LCBkb3VibGUgeik7CkBAIC04Miw2ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgV0VC
S0lUX0VYUE9SVCB2b2lkIHJlc2V0KCk7CiAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGluaXRpYWxp
emUoKTsKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBXZWJUcmFuc2Zv
cm1PcGVyYXRpb25zJiBwcm90b3R5cGUpOworICAgIFdFQktJVF9FWFBPUlQgYm9vbCBibGVuZElu
dGVybmFsKGNvbnN0IFdlYlRyYW5zZm9ybU9wZXJhdGlvbnMmIGZyb20sIGRvdWJsZSBwcm9ncmVz
cywgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHJlc3VsdCkgY29uc3Q7CiAKICAgICBXZWJQcml2
YXRlT3duUHRyPFdlYlRyYW5zZm9ybU9wZXJhdGlvbnNQcml2YXRlPiBtX3ByaXZhdGU7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeC5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeC5oCmluZGV4IGVhOGQ1MmE5YjJkZDY5MDAyNjIzNjEzOGY0YjMxZTg2NGYy
ODcwOGQuLjBlY2IzNGMyZjY3ZGYzN2U2YTA3ZmY3YmVkMDQ3NjU5ZmMwMDAzZjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViVHJhbnNmb3JtYXRpb25NYXRy
aXguaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlRyYW5zZm9ybWF0
aW9uTWF0cml4LmgKQEAgLTc3LDcgKzc3LDcgQEAgcHVibGljOgogICAgIFdFQktJVF9FWFBPUlQg
dm9pZCBza2V3WChkb3VibGUgYW5nbGUpOwogICAgIFdFQktJVF9FWFBPUlQgdm9pZCBza2V3WShk
b3VibGUgYW5nbGUpOwogICAgIFdFQktJVF9FWFBPUlQgdm9pZCBhcHBseVBlcnNwZWN0aXZlKGRv
dWJsZSBwKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYmxlbmQoY29uc3QgV2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIGZyb20sIGRvdWJsZSBwcm9ncmVzcyk7CisgICAgV0VCS0lUX0VYUE9SVCBi
b29sIGJsZW5kKGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBmcm9tLCBkb3VibGUgcHJv
Z3Jlc3MpOwogCiAgICAgV0VCS0lUX0VYUE9SVCBib29sIGhhc1BlcnNwZWN0aXZlKCkgY29uc3Q7
CiAgICAgV0VCS0lUX0VYUE9SVCBib29sIGlzSW52ZXJ0aWJsZSgpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJUcmFuc2Zvcm1P
cGVyYXRpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQv
V2ViVHJhbnNmb3JtT3BlcmF0aW9ucy5jcHAKaW5kZXggZTBjMjMwODkzYjdmMTQ5YmYzYTc4ZTM0
YTkzOTlkNWJjYzZkODMxZi4uM2I1MmQ5YzY2MzVmNTI0NWYzMDg2NTI0NzdjYmFhNmE0Y2UyNWIx
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9X
ZWJUcmFuc2Zvcm1PcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9zdXBwb3J0L1dlYlRyYW5zZm9ybU9wZXJhdGlvbnMuY3BwCkBAIC0xNDcsMTIgKzE0
NywxMCBAQCBzdGF0aWMgZG91YmxlIGJsZW5kRG91Ymxlcyhkb3VibGUgZnJvbSwgZG91YmxlIHRv
LCBkb3VibGUgcHJvZ3Jlc3MpCiAgICAgcmV0dXJuIGZyb20gKiAoMSAtIHByb2dyZXNzKSArIHRv
ICogcHJvZ3Jlc3M7CiB9CiAKLXN0YXRpYyBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBibGVuZFRy
YW5zZm9ybU9wZXJhdGlvbnMoY29uc3QgV2ViVHJhbnNmb3JtT3BlcmF0aW9uKiBmcm9tLCBjb25z
dCBXZWJUcmFuc2Zvcm1PcGVyYXRpb24qIHRvLCBkb3VibGUgcHJvZ3Jlc3MpCitzdGF0aWMgYm9v
bCBibGVuZFRyYW5zZm9ybU9wZXJhdGlvbnMoY29uc3QgV2ViVHJhbnNmb3JtT3BlcmF0aW9uKiBm
cm9tLCBjb25zdCBXZWJUcmFuc2Zvcm1PcGVyYXRpb24qIHRvLCBkb3VibGUgcHJvZ3Jlc3MsIFdl
YlRyYW5zZm9ybWF0aW9uTWF0cml4JiByZXN1bHQpCiB7Ci0gICAgV2ViVHJhbnNmb3JtYXRpb25N
YXRyaXggdG9SZXR1cm47Ci0KICAgICBpZiAoaXNJZGVudGl0eShmcm9tKSAmJiBpc0lkZW50aXR5
KHRvKSkKLSAgICAgICAgcmV0dXJuIHRvUmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKIAog
ICAgIFdlYlRyYW5zZm9ybU9wZXJhdGlvbjo6VHlwZSBpbnRlcnBvbGF0aW9uVHlwZSA9IFdlYlRy
YW5zZm9ybU9wZXJhdGlvbjo6V2ViVHJhbnNmb3JtT3BlcmF0aW9uSWRlbnRpdHk7CiAgICAgaWYg
KGlzSWRlbnRpdHkodG8pKQpAQCAtMTY4LDkgKzE2Niw5IEBAIHN0YXRpYyBXZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBibGVuZFRyYW5zZm9ybU9wZXJhdGlvbnMoY29uc3QgV2ViVHJhbnNmb3JtT3Bl
cmF0CiAgICAgICAgIGRvdWJsZSB0b1ggPSBpc0lkZW50aXR5KHRvKSA/IDAgOiB0by0+dHJhbnNs
YXRlLng7CiAgICAgICAgIGRvdWJsZSB0b1kgPSBpc0lkZW50aXR5KHRvKSA/IDAgOiB0by0+dHJh
bnNsYXRlLnk7CiAgICAgICAgIGRvdWJsZSB0b1ogPSBpc0lkZW50aXR5KHRvKSA/IDAgOiB0by0+
dHJhbnNsYXRlLno7Ci0gICAgICAgIHRvUmV0dXJuLnRyYW5zbGF0ZTNkKGJsZW5kRG91Ymxlcyhm
cm9tWCwgdG9YLCBwcm9ncmVzcyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsZW5k
RG91Ymxlcyhmcm9tWSwgdG9ZLCBwcm9ncmVzcyksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJsZW5kRG91Ymxlcyhmcm9tWiwgdG9aLCBwcm9ncmVzcykpOworICAgICAgICByZXN1bHQu
dHJhbnNsYXRlM2QoYmxlbmREb3VibGVzKGZyb21YLCB0b1gsIHByb2dyZXNzKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJsZW5kRG91Ymxlcyhmcm9tWSwgdG9ZLCBwcm9ncmVzcyksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICBibGVuZERvdWJsZXMoZnJvbVosIHRvWiwgcHJvZ3Jl
c3MpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgV2ViVHJhbnNmb3JtT3BlcmF0
aW9uOjpXZWJUcmFuc2Zvcm1PcGVyYXRpb25Sb3RhdGU6IHsKQEAgLTE4MCw3ICsxNzgsNyBAQCBz
dGF0aWMgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggYmxlbmRUcmFuc2Zvcm1PcGVyYXRpb25zKGNv
bnN0IFdlYlRyYW5zZm9ybU9wZXJhdAogICAgICAgICBkb3VibGUgZnJvbUFuZ2xlID0gMDsKICAg
ICAgICAgZG91YmxlIHRvQW5nbGUgPSBpc0lkZW50aXR5KHRvKSA/IDAgOiB0by0+cm90YXRlLmFu
Z2xlOwogICAgICAgICBpZiAoc2hhcmVTYW1lQXhpcyhmcm9tLCB0bywgYXhpc1gsIGF4aXNZLCBh
eGlzWiwgZnJvbUFuZ2xlKSkKLSAgICAgICAgICAgIHRvUmV0dXJuLnJvdGF0ZTNkKGF4aXNYLCBh
eGlzWSwgYXhpc1osIGJsZW5kRG91Ymxlcyhmcm9tQW5nbGUsIHRvQW5nbGUsIHByb2dyZXNzKSk7
CisgICAgICAgICAgICByZXN1bHQucm90YXRlM2QoYXhpc1gsIGF4aXNZLCBheGlzWiwgYmxlbmRE
b3VibGVzKGZyb21BbmdsZSwgdG9BbmdsZSwgcHJvZ3Jlc3MpKTsKICAgICAgICAgZWxzZSB7CiAg
ICAgICAgICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0b01hdHJpeDsKICAgICAgICAgICAg
IGlmICghaXNJZGVudGl0eSh0bykpCkBAIC0xODgsOCArMTg2LDkgQEAgc3RhdGljIFdlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4IGJsZW5kVHJhbnNmb3JtT3BlcmF0aW9ucyhjb25zdCBXZWJUcmFuc2Zv
cm1PcGVyYXQKICAgICAgICAgICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGZyb21NYXRyaXg7
CiAgICAgICAgICAgICBpZiAoIWlzSWRlbnRpdHkoZnJvbSkpCiAgICAgICAgICAgICAgICAgZnJv
bU1hdHJpeCA9IGZyb20tPm1hdHJpeDsKLSAgICAgICAgICAgIHRvUmV0dXJuID0gdG9NYXRyaXg7
Ci0gICAgICAgICAgICB0b1JldHVybi5ibGVuZChmcm9tTWF0cml4LCBwcm9ncmVzcyk7CisgICAg
ICAgICAgICByZXN1bHQgPSB0b01hdHJpeDsKKyAgICAgICAgICAgIGlmICghcmVzdWx0LmJsZW5k
KGZyb21NYXRyaXgsIHByb2dyZXNzKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMjAwLDkgKzE5OSw5IEBAIHN0YXRp
YyBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBibGVuZFRyYW5zZm9ybU9wZXJhdGlvbnMoY29uc3Qg
V2ViVHJhbnNmb3JtT3BlcmF0CiAgICAgICAgIGRvdWJsZSB0b1ggPSBpc0lkZW50aXR5KHRvKSA/
IDEgOiB0by0+c2NhbGUueDsKICAgICAgICAgZG91YmxlIHRvWSA9IGlzSWRlbnRpdHkodG8pID8g
MSA6IHRvLT5zY2FsZS55OwogICAgICAgICBkb3VibGUgdG9aID0gaXNJZGVudGl0eSh0bykgPyAx
IDogdG8tPnNjYWxlLno7Ci0gICAgICAgIHRvUmV0dXJuLnNjYWxlM2QoYmxlbmREb3VibGVzKGZy
b21YLCB0b1gsIHByb2dyZXNzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBibGVuZERvdWJs
ZXMoZnJvbVksIHRvWSwgcHJvZ3Jlc3MpLAotICAgICAgICAgICAgICAgICAgICAgICAgIGJsZW5k
RG91Ymxlcyhmcm9tWiwgdG9aLCBwcm9ncmVzcykpOworICAgICAgICByZXN1bHQuc2NhbGUzZChi
bGVuZERvdWJsZXMoZnJvbVgsIHRvWCwgcHJvZ3Jlc3MpLAorICAgICAgICAgICAgICAgICAgICAg
ICBibGVuZERvdWJsZXMoZnJvbVksIHRvWSwgcHJvZ3Jlc3MpLAorICAgICAgICAgICAgICAgICAg
ICAgICBibGVuZERvdWJsZXMoZnJvbVosIHRvWiwgcHJvZ3Jlc3MpKTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQogICAgIGNhc2UgV2ViVHJhbnNmb3JtT3BlcmF0aW9uOjpXZWJUcmFuc2Zvcm1PcGVy
YXRpb25Ta2V3OiB7CkBAIC0yMTAsMTQgKzIwOSwxNCBAQCBzdGF0aWMgV2ViVHJhbnNmb3JtYXRp
b25NYXRyaXggYmxlbmRUcmFuc2Zvcm1PcGVyYXRpb25zKGNvbnN0IFdlYlRyYW5zZm9ybU9wZXJh
dAogICAgICAgICBkb3VibGUgZnJvbVkgPSBpc0lkZW50aXR5KGZyb20pID8gMCA6IGZyb20tPnNr
ZXcueTsKICAgICAgICAgZG91YmxlIHRvWCA9IGlzSWRlbnRpdHkodG8pID8gMCA6IHRvLT5za2V3
Lng7CiAgICAgICAgIGRvdWJsZSB0b1kgPSBpc0lkZW50aXR5KHRvKSA/IDAgOiB0by0+c2tldy55
OwotICAgICAgICB0b1JldHVybi5za2V3WChibGVuZERvdWJsZXMoZnJvbVgsIHRvWCwgcHJvZ3Jl
c3MpKTsKLSAgICAgICAgdG9SZXR1cm4uc2tld1koYmxlbmREb3VibGVzKGZyb21ZLCB0b1ksIHBy
b2dyZXNzKSk7CisgICAgICAgIHJlc3VsdC5za2V3WChibGVuZERvdWJsZXMoZnJvbVgsIHRvWCwg
cHJvZ3Jlc3MpKTsKKyAgICAgICAgcmVzdWx0LnNrZXdZKGJsZW5kRG91Ymxlcyhmcm9tWSwgdG9Z
LCBwcm9ncmVzcykpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBXZWJUcmFuc2Zv
cm1PcGVyYXRpb246OldlYlRyYW5zZm9ybU9wZXJhdGlvblBlcnNwZWN0aXZlOiB7CiAgICAgICAg
IGRvdWJsZSBmcm9tUGVyc3BlY3RpdmVEZXB0aCA9IGlzSWRlbnRpdHkoZnJvbSkgPyBudW1lcmlj
X2xpbWl0czxkb3VibGU+OjptYXgoKSA6IGZyb20tPnBlcnNwZWN0aXZlRGVwdGg7CiAgICAgICAg
IGRvdWJsZSB0b1BlcnNwZWN0aXZlRGVwdGggPSBpc0lkZW50aXR5KHRvKSA/IG51bWVyaWNfbGlt
aXRzPGRvdWJsZT46Om1heCgpIDogdG8tPnBlcnNwZWN0aXZlRGVwdGg7Ci0gICAgICAgIHRvUmV0
dXJuLmFwcGx5UGVyc3BlY3RpdmUoYmxlbmREb3VibGVzKGZyb21QZXJzcGVjdGl2ZURlcHRoLCB0
b1BlcnNwZWN0aXZlRGVwdGgsIHByb2dyZXNzKSk7CisgICAgICAgIHJlc3VsdC5hcHBseVBlcnNw
ZWN0aXZlKGJsZW5kRG91Ymxlcyhmcm9tUGVyc3BlY3RpdmVEZXB0aCwgdG9QZXJzcGVjdGl2ZURl
cHRoLCBwcm9ncmVzcykpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBXZWJUcmFu
c2Zvcm1PcGVyYXRpb246OldlYlRyYW5zZm9ybU9wZXJhdGlvbk1hdHJpeDogewpAQCAtMjI3LDgg
KzIyNiw5IEBAIHN0YXRpYyBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBibGVuZFRyYW5zZm9ybU9w
ZXJhdGlvbnMoY29uc3QgV2ViVHJhbnNmb3JtT3BlcmF0CiAgICAgICAgIFdlYlRyYW5zZm9ybWF0
aW9uTWF0cml4IGZyb21NYXRyaXg7CiAgICAgICAgIGlmICghaXNJZGVudGl0eShmcm9tKSkKICAg
ICAgICAgICAgIGZyb21NYXRyaXggPSBmcm9tLT5tYXRyaXg7Ci0gICAgICAgIHRvUmV0dXJuID0g
dG9NYXRyaXg7Ci0gICAgICAgIHRvUmV0dXJuLmJsZW5kKGZyb21NYXRyaXgsIHByb2dyZXNzKTsK
KyAgICAgICAgcmVzdWx0ID0gdG9NYXRyaXg7CisgICAgICAgIGlmICghcmVzdWx0LmJsZW5kKGZy
b21NYXRyaXgsIHByb2dyZXNzKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQogICAgIGNhc2UgV2ViVHJhbnNmb3JtT3BlcmF0aW9uOjpXZWJUcmFuc2Zv
cm1PcGVyYXRpb25JZGVudGl0eToKQEAgLTIzNiwzMiArMjM2LDEzIEBAIHN0YXRpYyBXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBibGVuZFRyYW5zZm9ybU9wZXJhdGlvbnMoY29uc3QgV2ViVHJhbnNm
b3JtT3BlcmF0CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIHJldHVybiB0b1JldHVybjsK
KyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggV2ViVHJhbnNm
b3JtT3BlcmF0aW9uczo6YmxlbmQoY29uc3QgV2ViVHJhbnNmb3JtT3BlcmF0aW9ucyYgZnJvbSwg
ZG91YmxlIHByb2dyZXNzKSBjb25zdAogewogICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHRv
UmV0dXJuOwotICAgIGJvb2wgZnJvbUlkZW50aXR5ID0gZnJvbS5pc0lkZW50aXR5KCk7Ci0gICAg
Ym9vbCB0b0lkZW50aXR5ID0gaXNJZGVudGl0eSgpOwotICAgIGlmIChmcm9tSWRlbnRpdHkgJiYg
dG9JZGVudGl0eSkKLSAgICAgICAgcmV0dXJuIHRvUmV0dXJuOwotCi0gICAgaWYgKG1hdGNoZXNU
eXBlcyhmcm9tKSkgewotICAgICAgICBzaXplX3QgbnVtT3BlcmF0aW9ucyA9IG1heChmcm9tSWRl
bnRpdHkgPyAwIDogZnJvbS5tX3ByaXZhdGUtPm9wZXJhdGlvbnMuc2l6ZSgpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0b0lkZW50aXR5ID8gMCA6IG1fcHJpdmF0ZS0+b3Bl
cmF0aW9ucy5zaXplKCkpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bU9wZXJh
dGlvbnM7ICsraSkgewotICAgICAgICAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggYmxlbmRl
ZCA9IGJsZW5kVHJhbnNmb3JtT3BlcmF0aW9ucygKLSAgICAgICAgICAgICAgICBmcm9tSWRlbnRp
dHkgPyAwIDogJmZyb20ubV9wcml2YXRlLT5vcGVyYXRpb25zW2ldLAotICAgICAgICAgICAgICAg
IHRvSWRlbnRpdHkgPyAwIDogJm1fcHJpdmF0ZS0+b3BlcmF0aW9uc1tpXSwKLSAgICAgICAgICAg
ICAgICBwcm9ncmVzcyk7Ci0gICAgICAgICAgICB0b1JldHVybi5tdWx0aXBseShibGVuZGVkKTsK
LSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIHRvUmV0dXJuID0gYXBwbHkoKTsKLSAg
ICAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggZnJvbVRyYW5zZm9ybSA9IGZyb20uYXBwbHko
KTsKLSAgICAgICAgdG9SZXR1cm4uYmxlbmQoZnJvbVRyYW5zZm9ybSwgcHJvZ3Jlc3MpOwotICAg
IH0KKyAgICBibGVuZEludGVybmFsKGZyb20sIHByb2dyZXNzLCB0b1JldHVybik7CiAgICAgcmV0
dXJuIHRvUmV0dXJuOwogfQogCkBAIC0yODMsNiArMjY0LDEyIEBAIGJvb2wgV2ViVHJhbnNmb3Jt
T3BlcmF0aW9uczo6bWF0Y2hlc1R5cGVzKGNvbnN0IFdlYlRyYW5zZm9ybU9wZXJhdGlvbnMmIG90
aGVyKSBjCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgV2ViVHJhbnNmb3JtT3BlcmF0aW9u
czo6Y2FuQmxlbmRXaXRoKGNvbnN0IFdlYlRyYW5zZm9ybU9wZXJhdGlvbnMmIG90aGVyKSBjb25z
dAoreworICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGR1bW15OworICAgIHJldHVybiBibGVu
ZEludGVybmFsKG90aGVyLCAwLjUsIGR1bW15KTsKK30KKwogdm9pZCBXZWJUcmFuc2Zvcm1PcGVy
YXRpb25zOjphcHBlbmRUcmFuc2xhdGUoZG91YmxlIHgsIGRvdWJsZSB5LCBkb3VibGUgeikKIHsK
ICAgICBXZWJUcmFuc2Zvcm1PcGVyYXRpb24gdG9BZGQ7CkBAIC0zNzcsNCArMzY0LDMxIEBAIHZv
aWQgV2ViVHJhbnNmb3JtT3BlcmF0aW9uczo6aW5pdGlhbGl6ZShjb25zdCBXZWJUcmFuc2Zvcm1P
cGVyYXRpb25zJiBvdGhlcikKICAgICAgICAgaW5pdGlhbGl6ZSgpOwogfQogCitib29sIFdlYlRy
YW5zZm9ybU9wZXJhdGlvbnM6OmJsZW5kSW50ZXJuYWwoY29uc3QgV2ViVHJhbnNmb3JtT3BlcmF0
aW9ucyYgZnJvbSwgZG91YmxlIHByb2dyZXNzLCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcmVz
dWx0KSBjb25zdAoreworICAgIGJvb2wgZnJvbUlkZW50aXR5ID0gZnJvbS5pc0lkZW50aXR5KCk7
CisgICAgYm9vbCB0b0lkZW50aXR5ID0gaXNJZGVudGl0eSgpOworICAgIGlmIChmcm9tSWRlbnRp
dHkgJiYgdG9JZGVudGl0eSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAobWF0Y2hl
c1R5cGVzKGZyb20pKSB7CisgICAgICAgIHNpemVfdCBudW1PcGVyYXRpb25zID0gbWF4KGZyb21J
ZGVudGl0eSA/IDAgOiBmcm9tLm1fcHJpdmF0ZS0+b3BlcmF0aW9ucy5zaXplKCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvSWRlbnRpdHkgPyAwIDogbV9wcml2YXRlLT5v
cGVyYXRpb25zLnNpemUoKSk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtT3Bl
cmF0aW9uczsgKytpKSB7CisgICAgICAgICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBibGVu
ZGVkOworICAgICAgICAgICAgaWYgKCFibGVuZFRyYW5zZm9ybU9wZXJhdGlvbnMoZnJvbUlkZW50
aXR5ID8gMCA6ICZmcm9tLm1fcHJpdmF0ZS0+b3BlcmF0aW9uc1tpXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvSWRlbnRpdHkgPyAwIDogJm1fcHJpdmF0ZS0+
b3BlcmF0aW9uc1tpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHByb2dyZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxl
bmRlZCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmVzdWx0
Lm11bHRpcGx5KGJsZW5kZWQpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKworICAgIHJlc3VsdCA9IGFwcGx5KCk7CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgg
ZnJvbVRyYW5zZm9ybSA9IGZyb20uYXBwbHkoKTsKKyAgICByZXR1cm4gcmVzdWx0LmJsZW5kKGZy
b21UcmFuc2Zvcm0sIHByb2dyZXNzKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1
cHBvcnQvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXguY3BwCmluZGV4IDZkOTk0NDBkNTBiYzI4MTJm
NjhhMWE5NzVjOWVkZDc1Yzc3ZDk5NGQuLjAxYTk2YTQ1NTk4NzZkYTFkMmU0Y2JkNzA1NGMwYjQ3
Y2EyNDJiZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1
cHBvcnQvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXguY3BwCkBAIC0x
NjIsOSArMTYyLDEzIEBAIHZvaWQgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OmFwcGx5UGVyc3Bl
Y3RpdmUoZG91YmxlIHApCiAgICAgbV9wcml2YXRlLmFwcGx5UGVyc3BlY3RpdmUocCk7CiB9CiAK
LXZvaWQgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OmJsZW5kKGNvbnN0IFdlYlRyYW5zZm9ybWF0
aW9uTWF0cml4JiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MpCitib29sIFdlYlRyYW5zZm9ybWF0aW9u
TWF0cml4OjpibGVuZChjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZnJvbSwgZG91Ymxl
IHByb2dyZXNzKQogeworICAgIFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4OjpEZWNvbXBv
c2VkVHlwZSBkdW1teTsKKyAgICBpZiAoIW1fcHJpdmF0ZS5kZWNvbXBvc2UoZHVtbXkpIHx8ICFm
cm9tLm1fcHJpdmF0ZS5kZWNvbXBvc2UoZHVtbXkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgbV9wcml2YXRlLmJsZW5kKGZyb20ubV9wcml2YXRlLCBwcm9ncmVzcyk7CisgICAgcmV0dXJu
IHRydWU7CiB9CiAKIGJvb2wgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6Omhhc1BlcnNwZWN0aXZl
KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0FuaW1hdGlvblRyYW5zbGF0aW9uVXRpbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9BbmltYXRpb25UcmFuc2xhdGlvblV0aWwuY3BwCmluZGV4
IDE3OWZjYzAyMWI2Mzg5YjQ2Zjc0NjY4ZjM1NTc3MTVhZDFiODBlNmIuLmExYzQ1NzQ3YWU2NDUz
OTA4YmM3NTdlMGNkODljNDNlMTRmNzkxZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0FuaW1hdGlvblRyYW5zbGF0aW9uVXRpbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQW5pbWF0aW9uVHJh
bnNsYXRpb25VdGlsLmNwcApAQCAtMTUyLDggKzE1MiwxMyBAQCBib29sIGlzUm90YXRpb25UeXBl
KFRyYW5zZm9ybU9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSB0cmFuc2Zvcm1UeXBlKQogdGVtcGxh
dGUgPD4KIGJvb2wgYXBwZW5kS2V5ZnJhbWVXaXRoU3RhbmRhcmRUaW1pbmdGdW5jdGlvbjxUcmFu
c2Zvcm1BbmltYXRpb25WYWx1ZSwgV2ViVHJhbnNmb3JtS2V5ZnJhbWUsIFdlYlRyYW5zZm9ybUFu
aW1hdGlvbkN1cnZlPihXZWJUcmFuc2Zvcm1BbmltYXRpb25DdXJ2ZSogY3VydmUsIGRvdWJsZSBr
ZXlUaW1lLCBjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSogdmFsdWUsIGNvbnN0IFRyYW5z
Zm9ybUFuaW1hdGlvblZhbHVlKiBsYXN0VmFsdWUsIFdlYktpdDo6V2ViQW5pbWF0aW9uQ3VydmU6
OlRpbWluZ0Z1bmN0aW9uVHlwZSB0aW1pbmdGdW5jdGlvblR5cGUsIGNvbnN0IEZsb2F0U2l6ZSYg
Ym94U2l6ZSkKIHsKKyAgICBib29sIGNhbkJsZW5kID0gIWxhc3RWYWx1ZTsKICAgICBXZWJUcmFu
c2Zvcm1PcGVyYXRpb25zIG9wZXJhdGlvbnMgPSB0b1dlYlRyYW5zZm9ybU9wZXJhdGlvbnMoKnZh
bHVlLT52YWx1ZSgpLCBib3hTaXplKTsKLSAgICBpZiAob3BlcmF0aW9ucy5hcHBseSgpLmlzSW52
ZXJ0aWJsZSgpKSB7CisgICAgaWYgKCFjYW5CbGVuZCkgeworICAgICAgICBXZWJUcmFuc2Zvcm1P
cGVyYXRpb25zIGxhc3RPcGVyYXRpb25zID0gdG9XZWJUcmFuc2Zvcm1PcGVyYXRpb25zKCpsYXN0
VmFsdWUtPnZhbHVlKCksIGJveFNpemUpOworICAgICAgICBjYW5CbGVuZCA9IGxhc3RPcGVyYXRp
b25zLmNhbkJsZW5kV2l0aChvcGVyYXRpb25zKTsKKyAgICB9CisgICAgaWYgKGNhbkJsZW5kKSB7
CiAgICAgICAgIGN1cnZlLT5hZGQoV2ViVHJhbnNmb3JtS2V5ZnJhbWUoa2V5VGltZSwgb3BlcmF0
aW9ucyksIHRpbWluZ0Z1bmN0aW9uVHlwZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
QEAgLTE2Myw4ICsxNjgsMTMgQEAgYm9vbCBhcHBlbmRLZXlmcmFtZVdpdGhTdGFuZGFyZFRpbWlu
Z0Z1bmN0aW9uPFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlLCBXZWJUcmFuc2YKIHRlbXBsYXRlIDw+
CiBib29sIGFwcGVuZEtleWZyYW1lV2l0aEN1c3RvbUJlemllclRpbWluZ0Z1bmN0aW9uPFRyYW5z
Zm9ybUFuaW1hdGlvblZhbHVlLCBXZWJUcmFuc2Zvcm1LZXlmcmFtZSwgV2ViVHJhbnNmb3JtQW5p
bWF0aW9uQ3VydmU+KFdlYlRyYW5zZm9ybUFuaW1hdGlvbkN1cnZlKiBjdXJ2ZSwgZG91YmxlIGtl
eVRpbWUsIGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKiB2YWx1ZSwgY29uc3QgVHJhbnNm
b3JtQW5pbWF0aW9uVmFsdWUqIGxhc3RWYWx1ZSwgZG91YmxlIHgxLCBkb3VibGUgeTEsIGRvdWJs
ZSB4MiwgZG91YmxlIHkyLCBjb25zdCBGbG9hdFNpemUmIGJveFNpemUpCiB7CisgICAgYm9vbCBj
YW5CbGVuZCA9ICFsYXN0VmFsdWU7CiAgICAgV2ViVHJhbnNmb3JtT3BlcmF0aW9ucyBvcGVyYXRp
b25zID0gdG9XZWJUcmFuc2Zvcm1PcGVyYXRpb25zKCp2YWx1ZS0+dmFsdWUoKSwgYm94U2l6ZSk7
Ci0gICAgaWYgKG9wZXJhdGlvbnMuYXBwbHkoKS5pc0ludmVydGlibGUoKSkgeworICAgIGlmICgh
Y2FuQmxlbmQpIHsKKyAgICAgICAgV2ViVHJhbnNmb3JtT3BlcmF0aW9ucyBsYXN0T3BlcmF0aW9u
cyA9IHRvV2ViVHJhbnNmb3JtT3BlcmF0aW9ucygqbGFzdFZhbHVlLT52YWx1ZSgpLCBib3hTaXpl
KTsKKyAgICAgICAgY2FuQmxlbmQgPSBsYXN0T3BlcmF0aW9ucy5jYW5CbGVuZFdpdGgob3BlcmF0
aW9ucyk7CisgICAgfQorICAgIGlmIChjYW5CbGVuZCkgewogICAgICAgICBjdXJ2ZS0+YWRkKFdl
YlRyYW5zZm9ybUtleWZyYW1lKGtleVRpbWUsIG9wZXJhdGlvbnMpLCB4MSwgeTEsIHgyLCB5Mik7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQW5pbWF0aW9uVHJhbnNsYXRpb25VdGlsVGVzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0FuaW1hdGlvblRyYW5zbGF0aW9uVXRpbFRlc3QuY3BwCmlu
ZGV4IDU2MmY3ODUyMDJhNWQzZDY2ZDYxOThjNzk4ZWNmZjQ1MjMwZDAzYzguLjdiMTg0ZmEzNDNi
ZTEzOGRhNTY4NDBiN2RhYzRmMTcyMTg0NDAzYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQW5pbWF0aW9uVHJhbnNsYXRpb25VdGlsVGVzdC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9BbmltYXRpb25UcmFuc2xhdGlvblV0aWxUZXN0LmNw
cApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJNYXRy
aXgzRFRyYW5zZm9ybU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIlJvdGF0ZVRyYW5zZm9ybU9wZXJh
dGlvbi5oIgorI2luY2x1ZGUgIlNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAi
VHJhbnNmb3JtT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJh
dGlvbi5oIgogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CkBAIC0xNTUsNyArMTU2LDcgQEAgVEVT
VChBbmltYXRpb25UcmFuc2xhdGlvblV0aWxUZXN0LCBjcmVhdGVUcmFuc2Zvcm1BbmltYXRpb25X
aXRoU21hbGxSb3RhdGlvbkludm8KICAgICBFWFBFQ1RfVFJVRShhbmltYXRpb25DYW5CZVRyYW5z
bGF0ZWQodmFsdWVzLCBhbmltYXRpb24uZ2V0KCkpKTsKIH0KIAotVEVTVChBbmltYXRpb25UcmFu
c2xhdGlvblV0aWxUZXN0LCBjcmVhdGVUcmFuc2Zvcm1BbmltYXRpb25XaXRoU2luZ3VsYXJNYXRy
aXgpCitURVNUKEFuaW1hdGlvblRyYW5zbGF0aW9uVXRpbFRlc3QsIGNyZWF0ZVRyYW5zZm9ybUFu
aW1hdGlvbldpdGhOb25EZWNvbXBvc2FibGVNYXRyaXgpCiB7CiAgICAgY29uc3QgZG91YmxlIGR1
cmF0aW9uID0gMTsKICAgICBXZWJDb3JlOjpLZXlmcmFtZVZhbHVlTGlzdCB2YWx1ZXMoQW5pbWF0
ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSk7CkBAIC0xNzcsNiArMTc4LDI1IEBAIFRFU1QoQW5p
bWF0aW9uVHJhbnNsYXRpb25VdGlsVGVzdCwgY3JlYXRlVHJhbnNmb3JtQW5pbWF0aW9uV2l0aFNp
bmd1bGFyTWF0cml4KQogICAgIEVYUEVDVF9GQUxTRShhbmltYXRpb25DYW5CZVRyYW5zbGF0ZWQo
dmFsdWVzLCBhbmltYXRpb24uZ2V0KCkpKTsKIH0KIAorVEVTVChBbmltYXRpb25UcmFuc2xhdGlv
blV0aWxUZXN0LCBjcmVhdGVUcmFuc2Zvcm1BbmltYXRpb25XaXRoTm9uSW52ZXJ0aWJsZVRyYW5z
Zm9ybSkKK3sKKyAgICBjb25zdCBkb3VibGUgZHVyYXRpb24gPSAxOworICAgIFdlYkNvcmU6Oktl
eWZyYW1lVmFsdWVMaXN0IHZhbHVlcyhBbmltYXRlZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtKTsK
KworICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgb3BlcmF0aW9uczE7CisgICAgb3BlcmF0aW9uczEu
b3BlcmF0aW9ucygpLmFwcGVuZChTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKDEsIDEs
IDEsIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEVfM0QpKTsKKyAgICB2YWx1ZXMuaW5zZXJ0KG5l
dyBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSgwLCAmb3BlcmF0aW9uczEpKTsKKworICAgIFRyYW5z
Zm9ybU9wZXJhdGlvbnMgb3BlcmF0aW9uczI7CisgICAgb3BlcmF0aW9uczIub3BlcmF0aW9ucygp
LmFwcGVuZChTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKDEsIDAsIDEsIFRyYW5zZm9y
bU9wZXJhdGlvbjo6U0NBTEVfM0QpKTsKKyAgICB2YWx1ZXMuaW5zZXJ0KG5ldyBUcmFuc2Zvcm1B
bmltYXRpb25WYWx1ZShkdXJhdGlvbiwgJm9wZXJhdGlvbnMyKSk7CisKKyAgICBSZWZQdHI8QW5p
bWF0aW9uPiBhbmltYXRpb24gPSBBbmltYXRpb246OmNyZWF0ZSgpOworICAgIGFuaW1hdGlvbi0+
c2V0RHVyYXRpb24oZHVyYXRpb24pOworCisgICAgRVhQRUNUX1RSVUUoYW5pbWF0aW9uQ2FuQmVU
cmFuc2xhdGVkKHZhbHVlcywgYW5pbWF0aW9uLmdldCgpKSk7Cit9CisKIFRFU1QoQW5pbWF0aW9u
VHJhbnNsYXRpb25VdGlsVGVzdCwgY3JlYXRlUmV2ZXJzZWRBbmltYXRpb24pCiB7CiAgICAgY29u
c3QgZG91YmxlIGR1cmF0aW9uID0gMTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>