<?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>217568</bug_id>
          
          <creation_ts>2020-10-10 22:42:58 -0700</creation_ts>
          <short_desc>[MotionMark] Add an inline path data type to represent a circular sector</short_desc>
          <delta_ts>2020-10-12 09:25:23 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=217563</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>darin</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1696585</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-10-10 22:42:58 -0700</bug_when>
    <thetext>Similar to the extant ArcData, except it represents the following path recipe:

- Move to (x, y)
- Arc with radius r centered at (x, y)
- Line segment back to (x, y)

This should allow us to encode the remaining ~20% or so of “complex” paths in the Canvas Arcs subtest as inline data, which should reduce memory overhead when computing bounding rects, encoding paths, etc. Since the vast majority of the remaining 80% of paths in this subtest are simple arcs (represented by ArcData), this should, in theory, allow us to avoid CGPath allocation in the web process during this subtest.

Still need to measure projected perf impact...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696669</commentid>
    <comment_count>1</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-10-11 11:50:42 -0700</bug_when>
    <thetext>&gt; 
&gt; Still need to measure projected perf impact...

Some early testing shows roughly 2-3%, on top of webkit.org/b/217563</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696670</commentid>
    <comment_count>2</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-10-11 11:51:13 -0700</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #1)
&gt; &gt; 
&gt; &gt; Still need to measure projected perf impact...
&gt; 
&gt; Some early testing shows roughly 2-3%, on top of webkit.org/b/217563

...2-3% better, that is :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696742</commentid>
    <comment_count>3</comment_count>
      <attachid>411081</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-10-11 17:30:34 -0700</bug_when>
    <thetext>Created attachment 411081
Work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696764</commentid>
    <comment_count>4</comment_count>
      <attachid>411081</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-10-11 19:10:13 -0700</bug_when>
    <thetext>Comment on attachment 411081
Work in progress

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

&gt; Source/WebCore/platform/graphics/InlinePathData.h:52
&gt;      bool hasStart { false };
&gt; +    bool endsAtStart { false };

Not great to have these be separate booleans. These two booleans together have only 3 valid states, not 4.

&gt; Source/WebCore/platform/graphics/Path.cpp:270
&gt; +            arc.center.x() + arc.radius * acosf(arc.endAngle),
&gt; +            arc.center.y() + arc.radius * asinf(arc.endAngle)

I suggest using std::acos and std::asin instead of acosf and asinf</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696774</commentid>
    <comment_count>5</comment_count>
      <attachid>411081</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-10-11 19:26:56 -0700</bug_when>
    <thetext>Comment on attachment 411081
Work in progress

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

&gt;&gt; Source/WebCore/platform/graphics/InlinePathData.h:52
&gt;&gt; +    bool endsAtStart { false };
&gt; 
&gt; Not great to have these be separate booleans. These two booleans together have only 3 valid states, not 4.

Good catch! `endsAtStart &amp;&amp; !hasStart` should never be a possibility.

I&apos;ll fix this by adding an enum class like:

    enum class Type : uint8_t {
        ArcOnly,
        LineAndArc,
        ClosedLineAndArc
    };

…and then replacing `hasStart` and `endsAtStart` with:

    Type type { Type::ArcOnly };

&gt;&gt; Source/WebCore/platform/graphics/Path.cpp:270
&gt;&gt; +            arc.center.y() + arc.radius * asinf(arc.endAngle)
&gt; 
&gt; I suggest using std::acos and std::asin instead of acosf and asinf

Done!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696782</commentid>
    <comment_count>6</comment_count>
      <attachid>411093</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-10-11 20:52:48 -0700</bug_when>
    <thetext>Created attachment 411093
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696845</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-10-12 08:01:13 -0700</bug_when>
    <thetext>commit-queue failed to commit attachment 411093 to WebKit repository.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696874</commentid>
    <comment_count>8</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-10-12 09:24:43 -0700</bug_when>
    <thetext>Committed r268352: &lt;https://trac.webkit.org/changeset/268352&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696875</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-12 09:25:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/70209839&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411081</attachid>
            <date>2020-10-11 17:30:34 -0700</date>
            <delta_ts>2020-10-11 19:10:13 -0700</delta_ts>
            <desc>Work in progress</desc>
            <filename>bug-217568-20201011173033.patch</filename>
            <type>text/plain</type>
            <size>9040</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4MzIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzQ2ZTk2NzcyZWE1OTRh
NTcxMjM5MjI3NmI2M2M3NDBiNDU1ZGUzZS4uZjY1Yjc4NDk4ZjdjNmNhNThjMjI1Y2VmM2M5NTll
ODljODVhZGM4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDIwLTEwLTExICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtNb3Rpb25NYXJr
XSBBZGQgYW4gaW5saW5lIHBhdGggZGF0YSB0eXBlIHRvIHJlcHJlc2VudCBhIGNpcmN1bGFyIHNl
Y3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3
NTY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhl
IENhbnZhcyBBcmNzIHN1YnRlc3QgY29uc2lzdHMgcHJpbWFyaWx5IG9mIHR3byBkaWZmZXJlbnQg
dHlwZXMgb2YgZHJhd2luZyBvcGVyYXRpb25zOiBzdHJva2luZyBjaXJjdWxhciBhcmNzCisgICAg
ICAgIChyb3VnaGx5IDgwJSBvZiBwYXRocyBvdmVyIHRoZSBjb3Vyc2Ugb2YgdGhlIHN1YnRlc3Qp
IGFuZCBmaWxsaW5nIGNpcmN1bGFyIHNlY3RvcnMgKHdoaWNoIGFjY291bnRzIGZvciB0aGUKKyAg
ICAgICAgcmVtYWluaW5nIDIwJSkuIEFmdGVyIHIyNjgzMjAsIHdoZW4gc3Ryb2tpbmcgY2lyY3Vs
YXIgYXJjcywgd2UgY3VycmVudGx5IHRha2UgZnVsbCBhZHZhbnRhZ2Ugb2YgaW5saW5lIHBhdGgg
ZGF0YQorICAgICAgICBieSByZXByZXNlbnRpbmcgYSBzaW5nbGUgYXJjIHdpdGggQXJjRGF0YS4g
VGhpcyBwcmV2ZW50cyB1cyBmcm9tIGFsbG9jYXRpbmcgcGxhdGZvcm0gQ0dQYXRoIG9iamVjdHMg
Zm9yIGV2ZXJ5CisgICAgICAgIHN0cm9rZWQgYXJjIGluIHRoZSB3ZWIgcHJvY2VzcywgYW5kIGFs
c28gcmVkdWNlcyB0aGUgb3ZlcmhlYWQgb2YgSVBDIGVuY29kaW5nIGFuZCBkZWNvZGluZyB3aGVu
IHNlcmlhbGl6aW5nIGFuZAorICAgICAgICBkZXNlcmlhbGl6aW5nIGRpc3BsYXkgbGlzdCBpdGVt
cyBpbiB0aGUgR1BVIHByb2Nlc3MuCisKKyAgICAgICAgSG93ZXZlciwgd2hlbiBmaWxsaW5nIGNp
cmN1bGFyIHNlY3RvcnMsIGVhY2ggc2VjdG9yIGlzIGEgcGF0aCBjcmVhdGVkIGJ5IGRvaW5nIHRo
ZSBmb2xsb3dpbmc6CisKKyAgICAgICAgMS4gTW92ZSB0byAoeCwgeSkKKyAgICAgICAgMi4gQWRk
IGFuIGFyYworICAgICAgICAzLiBBZGQgYSBsaW5lIGJhY2sgdG8gKHgsIHkpCisKKyAgICAgICAg
SW4gdGhpcyBzY2VuYXJpbywgc3RlcCAoMykgY3VycmVudGx5IGJhaWxzIHVzIG91dCBvZiB0aGUg
aW5saW5lIGBBcmNEYXRhYCByZXByZXNlbnRhdGlvbi4gSG93ZXZlciwgc2luY2Ugd2UncmUKKyAg
ICAgICAgYWxyZWFkeSB0cmFja2luZyB0aGUgZmFjdCB0aGF0IHdlIHN0YXJ0ZWQgdGhlIHBhdGgg
YnkgbW92aW5nIHRvICh4LCB5KSwgd2UgY2FuIGp1c3Qgc2V0IGEgZmxhZyBvbiBgQXJjRGF0YWAK
KyAgICAgICAgaW5zdGVhZCBvZiBiYWlsaW5nIG91dCBvZiBpbmxpbmUgcGF0aCBkYXRhIGVudGly
ZWx5LgorCisgICAgICAgIFRoaXMgYWxsb3dzIHVzIHRvIGVudGlyZWx5IGVsaW1pbmF0ZSBgQ0dQ
YXRoYCBjcmVhdGlvbiBpbiB0aGUgd2ViIHByb2Nlc3MsIGFuZCBtYWtlcyBpdCBzbyB0aGF0IHdl
IG9ubHkgcmVpZnkKKyAgICAgICAgYENHUGF0aGBzIGluIHRoZSBHUFUgcHJvY2VzcywgcmlnaHQg
YmVmb3JlIHdlJ3JlIHVzaW5nIGl0IHRvIHBhaW50IHVzaW5nIENvcmVHcmFwaGljcy4KKworICAg
ICAgICBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9JbmxpbmVQYXRoRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6QXJjRGF0YTo6ZW5jb2RlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFyY0RhdGE6OmRlY29kZSk6CisKKyAgICAgICAgQWRk
IHRoZSBgZW5kc0F0U3RhcnRgIGZsYWcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Q
YXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdGg6OmN1cnJlbnRQb2ludCBjb25zdCk6CisK
KyAgICAgICAgTWFrZSBpdCBzbyB0aGF0IGFza2luZyBmb3IgYGN1cnJlbnRQb2ludGAgd2l0aCBp
bmxpbmUgYXJjIGRhdGEgZG9lc24ndCBmYWxsIGludG8gdGhlIHNsb3cgY2FzZSBhbmQgY2F1c2Ug
dXMgdG8KKyAgICAgICAgY3JlYXRlIGEgQ0dQYXRoLgorCisgICAgICAgIChXZWJDb3JlOjpQYXRo
OjphZGRBcmMpOgorICAgICAgICAoV2ViQ29yZTo6UGF0aDo6YWRkTGluZVRvKToKKworICAgICAg
ICBJbiB0aGUgY2FzZSB3aGVyZSB0aGUgcGF0aCBpcyByZXByZXNlbnRlZCBieSBpbmxpbmUgYEFy
Y0RhdGFgIGFuZCB3ZSdyZSBqdXN0IGFkZGluZyBhIGxpbmUgYmFjayB0byB0aGUgYHN0YXJ0YAor
ICAgICAgICBsb2NhdGlvbiwgZG9uJ3QgZmFsbCBiYWNrIHRvIGBDR1BhdGhSZWZgLiBJbnN0ZWFk
LCBqdXN0IHNldCB0aGUgYGVuZHNBdFN0YXJ0YCBmbGFnIGluIGBBcmNEYXRhYCBhbmQgYmFpbC4K
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGguaDoKKyAgICAgICAgKFdlYkNvcmU6
OlBhdGg6OmlubGluZURhdGEpOgorCisgICAgICAgIEFkZCBhIHByaXZhdGUgdmVyc2lvbiBvZiB0
aGUgYGlubGluZURhdGE8VD5gIG1ldGhvZCB0aGF0IHJldHVybnMgYSBtdXRhYmxlIHJlZmVyZW5j
ZSB0byB0aGUgaW5saW5lIGRhdGEuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9Q
YXRoQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0aDo6Y3JlYXRlQ0dQYXRoIGNvbnN0KToK
KworICAgICAgICBJZiB0aGUgYGVuZHNBdFN0YXJ0YCBmbGFnIGlzIHNldCwgbWFrZSBzdXJlIHdl
IHNldCB1cCB0aGUgcGxhdGZvcm0gYENHUGF0aFJlZmAgYnkgYWRkaW5nIGEgbGluZSBiYWNrIHRv
IHRoZQorICAgICAgICBzdGFydCBvZiB0aGUgYHN0YXJ0YCBsb2NhdGlvbi4KKwogMjAyMC0xMC0x
MSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbTW90
aW9uTWFya10gQ29tcHV0aW5nIHRoZSBmYXN0IGJvdW5kaW5nIHJlY3Qgb2YgYW4gYXJjIHNob3Vs
ZCBub3QgbWF0ZXJpYWxpemUgYSBDR1BhdGhSZWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0lubGluZVBhdGhEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbmxpbmVQYXRoRGF0YS5oCmluZGV4IGRlNGJkYmZlNDAxZjFjY2VlMzIz
OGU3YTM0MTU3ZmFlNmUwNDkwNmMuLmM4NzgzYjcyOGIwMWM5ODJjZDc4YTQzNDIyZWEyMDkzMDIy
NTM3YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lubGlu
ZVBhdGhEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5saW5l
UGF0aERhdGEuaApAQCAtNDksNiArNDksNyBAQCBzdHJ1Y3QgQXJjRGF0YSB7CiAgICAgZmxvYXQg
ZW5kQW5nbGUgeyAwIH07CiAgICAgYm9vbCBjbG9ja3dpc2UgeyBmYWxzZSB9OwogICAgIGJvb2wg
aGFzU3RhcnQgeyBmYWxzZSB9OworICAgIGJvb2wgZW5kc0F0U3RhcnQgeyBmYWxzZSB9OwogCiAg
ICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0Owog
ICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxBcmNEYXRhPiBkZWNv
ZGUoRGVjb2RlciYpOwpAQCAtMTIwLDYgKzEyMSw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
IHZvaWQgQXJjRGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2Rl
ciA8PCBlbmRBbmdsZTsKICAgICBlbmNvZGVyIDw8IGNsb2Nrd2lzZTsKICAgICBlbmNvZGVyIDw8
IGhhc1N0YXJ0OworICAgIGVuY29kZXIgPDwgZW5kc0F0U3RhcnQ7CiB9CiAKIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IE9wdGlvbmFsPEFyY0RhdGE+IEFyY0RhdGE6OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQpAQCAtMTQ2LDYgKzE0OCw5IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlv
bmFsPEFyY0RhdGE+IEFyY0RhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoZGF0YS5oYXNTdGFydCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CiAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEuZW5kc0F0U3RhcnQpKQorICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworCiAgICAgcmV0dXJuIGRhdGE7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAKaW5kZXggNGVkM2Q4OWNhYzcwYzdiYWRi
NDMyNTc0YjcxYmRiMjFhMmIyNzMxNi4uYTYzY2E1YmVjMTEwNTgwMmFhZDlmZjQ1Mjg1NDA5NjI4
NjE1NWVmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0
aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAKQEAg
LTI0OSwxNiArMjQ5LDI3IEBAIEZsb2F0UG9pbnQgUGF0aDo6Y3VycmVudFBvaW50KCkgY29uc3QK
IAogI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQogICAgIGlmIChoYXNJbmxpbmVEYXRhPE1v
dmVEYXRhPigpKQotICAgICAgICByZXR1cm4gV1RGOjpnZXQ8TW92ZURhdGE+KG1faW5saW5lRGF0
YSkubG9jYXRpb247CisgICAgICAgIHJldHVybiBpbmxpbmVEYXRhPE1vdmVEYXRhPigpLmxvY2F0
aW9uOwogCiAgICAgaWYgKGhhc0lubGluZURhdGE8TGluZURhdGE+KCkpCi0gICAgICAgIHJldHVy
biBXVEY6OmdldDxMaW5lRGF0YT4obV9pbmxpbmVEYXRhKS5lbmQ7CisgICAgICAgIHJldHVybiBp
bmxpbmVEYXRhPExpbmVEYXRhPigpLmVuZDsKIAogICAgIGlmIChoYXNJbmxpbmVEYXRhPEJlemll
ckN1cnZlRGF0YT4oKSkKLSAgICAgICAgcmV0dXJuIFdURjo6Z2V0PEJlemllckN1cnZlRGF0YT4o
bV9pbmxpbmVEYXRhKS5lbmRQb2ludDsKKyAgICAgICAgcmV0dXJuIGlubGluZURhdGE8QmV6aWVy
Q3VydmVEYXRhPigpLmVuZFBvaW50OwogCiAgICAgaWYgKGhhc0lubGluZURhdGE8UXVhZEN1cnZl
RGF0YT4oKSkKLSAgICAgICAgcmV0dXJuIFdURjo6Z2V0PFF1YWRDdXJ2ZURhdGE+KG1faW5saW5l
RGF0YSkuZW5kUG9pbnQ7CisgICAgICAgIHJldHVybiBpbmxpbmVEYXRhPFF1YWRDdXJ2ZURhdGE+
KCkuZW5kUG9pbnQ7CisKKyAgICBpZiAoaGFzSW5saW5lRGF0YTxBcmNEYXRhPigpKSB7CisgICAg
ICAgIGF1dG8mIGFyYyA9IGlubGluZURhdGE8QXJjRGF0YT4oKTsKKyAgICAgICAgaWYgKGFyYy5l
bmRzQXRTdGFydCkKKyAgICAgICAgICAgIHJldHVybiBhcmMuc3RhcnQ7CisKKyAgICAgICAgcmV0
dXJuIHsKKyAgICAgICAgICAgIGFyYy5jZW50ZXIueCgpICsgYXJjLnJhZGl1cyAqIGFjb3NmKGFy
Yy5lbmRBbmdsZSksCisgICAgICAgICAgICBhcmMuY2VudGVyLnkoKSArIGFyYy5yYWRpdXMgKiBh
c2luZihhcmMuZW5kQW5nbGUpCisgICAgICAgIH07CisgICAgfQogI2VuZGlmCiAKICAgICByZXR1
cm4gY3VycmVudFBvaW50U2xvd0Nhc2UoKTsKQEAgLTI4NiwxMSArMjk3LDEyIEBAIHZvaWQgUGF0
aDo6YWRkQXJjKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBmbG9hdCByYWRpdXMsIGZsb2F0IHN0
YXJ0QW5nbGUsIGZsb2F0CiAgICAgICAgIHJldHVybjsKIAogI2lmIEVOQUJMRShJTkxJTkVfUEFU
SF9EQVRBKQotICAgIGlmIChpc051bGwoKSB8fCBoYXNJbmxpbmVEYXRhPE1vdmVEYXRhPigpKSB7
CisgICAgYm9vbCBoYXNNb3ZlRGF0YSA9IGhhc0lubGluZURhdGE8TW92ZURhdGE+KCk7CisgICAg
aWYgKGlzTnVsbCgpIHx8IGhhc01vdmVEYXRhKSB7CiAgICAgICAgIEFyY0RhdGEgYXJjOwotICAg
ICAgICBpZiAoaGFzQW55SW5saW5lRGF0YSgpKSB7CisgICAgICAgIGlmIChoYXNNb3ZlRGF0YSkg
ewogICAgICAgICAgICAgYXJjLmhhc1N0YXJ0ID0gdHJ1ZTsKLSAgICAgICAgICAgIGFyYy5zdGFy
dCA9IFdURjo6Z2V0PE1vdmVEYXRhPihtX2lubGluZURhdGEpLmxvY2F0aW9uOworICAgICAgICAg
ICAgYXJjLnN0YXJ0ID0gaW5saW5lRGF0YTxNb3ZlRGF0YT4oKS5sb2NhdGlvbjsKICAgICAgICAg
fQogICAgICAgICBhcmMuY2VudGVyID0gcG9pbnQ7CiAgICAgICAgIGFyYy5yYWRpdXMgPSByYWRp
dXM7CkBAIC0zMTAsMTMgKzMyMiwyMiBAQCB2b2lkIFBhdGg6OmFkZEFyYyhjb25zdCBGbG9hdFBv
aW50JiBwb2ludCwgZmxvYXQgcmFkaXVzLCBmbG9hdCBzdGFydEFuZ2xlLCBmbG9hdAogdm9pZCBQ
YXRoOjphZGRMaW5lVG8oY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpCiB7CiAjaWYgRU5BQkxFKElO
TElORV9QQVRIX0RBVEEpCi0gICAgaWYgKGlzTnVsbCgpIHx8IGhhc0lubGluZURhdGE8TW92ZURh
dGE+KCkpIHsKKyAgICBib29sIGhhc01vdmVEYXRhID0gaGFzSW5saW5lRGF0YTxNb3ZlRGF0YT4o
KTsKKyAgICBpZiAoaXNOdWxsKCkgfHwgaGFzTW92ZURhdGEpIHsKICAgICAgICAgTGluZURhdGEg
bGluZTsKLSAgICAgICAgbGluZS5zdGFydCA9IGhhc0FueUlubGluZURhdGEoKSA/IFdURjo6Z2V0
PE1vdmVEYXRhPihtX2lubGluZURhdGEpLmxvY2F0aW9uIDogRmxvYXRQb2ludCgpOworICAgICAg
ICBsaW5lLnN0YXJ0ID0gaGFzTW92ZURhdGEgPyBpbmxpbmVEYXRhPE1vdmVEYXRhPigpLmxvY2F0
aW9uIDogRmxvYXRQb2ludCgpOwogICAgICAgICBsaW5lLmVuZCA9IHBvaW50OwogICAgICAgICBt
X2lubGluZURhdGEgPSB7IFdURk1vdmUobGluZSkgfTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
KworICAgIGlmIChoYXNJbmxpbmVEYXRhPEFyY0RhdGE+KCkpIHsKKyAgICAgICAgYXV0byYgYXJj
ID0gaW5saW5lRGF0YTxBcmNEYXRhPigpOworICAgICAgICBpZiAoYXJjLmhhc1N0YXJ0ICYmIGFy
Yy5zdGFydCA9PSBwb2ludCkgeworICAgICAgICAgICAgYXJjLmVuZHNBdFN0YXJ0ID0gdHJ1ZTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KICNlbmRpZgogCiAgICAgYWRk
TGluZVRvU2xvd0Nhc2UocG9pbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGF0aC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0
aC5oCmluZGV4IGM4NDI5NjRlYjljZDg1Y2NmZmU2ZDMxOWQ2ZWQwYTVjYzM1ZjlkOWUuLmE4NThh
MTM5OWVhNWQ3OTExNWE2ZjFkM2E4OTc3NWNhODY5OGYzNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9QYXRoLmgKQEAgLTI0MSw2ICsyNDEsNyBAQCBwdWJsaWM6CiBwcml2YXRl
OgogI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQogICAgIGJvb2wgaGFzQW55SW5saW5lRGF0
YSgpIGNvbnN0OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIERhdGFUeXBlPiBEYXRhVHlwZSYgaW5s
aW5lRGF0YSgpOwogICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZmFzdEJvdW5kaW5nUmVjdEZyb21J
bmxpbmVEYXRhKCkgY29uc3Q7CiAgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBib3VuZGluZ1JlY3RG
cm9tSW5saW5lRGF0YSgpIGNvbnN0OwogI2VuZGlmCkBAIC00MjMsNiArNDI0LDExIEBAIHRlbXBs
YXRlPHR5cGVuYW1lIERhdGFUeXBlPiBpbmxpbmUgY29uc3QgRGF0YVR5cGUmIFBhdGg6OmlubGlu
ZURhdGEoKSBjb25zdAogICAgIHJldHVybiBXVEY6OmdldDxEYXRhVHlwZT4obV9pbmxpbmVEYXRh
KTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgRGF0YVR5cGU+IGlubGluZSBEYXRhVHlwZSYgUGF0
aDo6aW5saW5lRGF0YSgpCit7CisgICAgcmV0dXJuIFdURjo6Z2V0PERhdGFUeXBlPihtX2lubGlu
ZURhdGEpOworfQorCiBpbmxpbmUgYm9vbCBQYXRoOjpoYXNBbnlJbmxpbmVEYXRhKCkgY29uc3QK
IHsKICAgICByZXR1cm4gIWhhc0lubGluZURhdGE8TW9ub3N0YXRlPigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENHLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdGhDRy5jcHAKaW5kZXggNjZlOGZmOTlmYTJh
ZDBmNmI5ODIwNmE3ZjcwOGMwOTVhZmJkZGMzNi4uMDNkZjUyNzllM2U0YmEwOGI2NzQ5ZjFjOTI1
YmM3Y2QzZGRhOWIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvUGF0aENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9QYXRoQ0cuY3BwCkBAIC0xMDEsNiArMTAxLDggQEAgdm9pZCBQYXRoOjpjcmVhdGVDR1BhdGgo
KSBjb25zdAogICAgICAgICAgICAgaWYgKGFyYy5oYXNTdGFydCkKICAgICAgICAgICAgICAgICBD
R1BhdGhNb3ZlVG9Qb2ludChtX3BhdGguZ2V0KCksIG51bGxwdHIsIGFyYy5zdGFydC54KCksIGFy
Yy5zdGFydC55KCkpOwogICAgICAgICAgICAgQ0dQYXRoQWRkQXJjKG1fcGF0aC5nZXQoKSwgbnVs
bHB0ciwgYXJjLmNlbnRlci54KCksIGFyYy5jZW50ZXIueSgpLCBhcmMucmFkaXVzLCBhcmMuc3Rh
cnRBbmdsZSwgYXJjLmVuZEFuZ2xlLCBhcmMuY2xvY2t3aXNlKTsKKyAgICAgICAgICAgIGlmIChh
cmMuZW5kc0F0U3RhcnQpCisgICAgICAgICAgICAgICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQobV9w
YXRoLmdldCgpLCBudWxscHRyLCBhcmMuc3RhcnQueCgpLCBhcmMuc3RhcnQueSgpKTsKICAgICAg
ICAgfSwKICAgICAgICAgWyZdKGNvbnN0IFF1YWRDdXJ2ZURhdGEmIGN1cnZlKSB7CiAgICAgICAg
ICAgICBDR1BhdGhNb3ZlVG9Qb2ludChtX3BhdGguZ2V0KCksIG51bGxwdHIsIGN1cnZlLnN0YXJ0
UG9pbnQueCgpLCBjdXJ2ZS5zdGFydFBvaW50LnkoKSk7Cg==
</data>
<flag name="review"
          id="427210"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411093</attachid>
            <date>2020-10-11 20:52:48 -0700</date>
            <delta_ts>2020-10-12 08:01:14 -0700</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-217568-20201011205247.patch</filename>
            <type>text/plain</type>
            <size>10896</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4MzIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzQ2ZTk2NzcyZWE1OTRh
NTcxMjM5MjI3NmI2M2M3NDBiNDU1ZGUzZS4uMjdhNmI5ZGViNGEyZTAwNzM2YThmMWY4MWMyYjA2
ZTU2N2EyZTgxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDIwLTEwLTExICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtNb3Rpb25NYXJr
XSBBZGQgYW4gaW5saW5lIHBhdGggZGF0YSB0eXBlIHRvIHJlcHJlc2VudCBhIGNpcmN1bGFyIHNl
Y3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3
NTY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgVGhlIENh
bnZhcyBBcmNzIHN1YnRlc3QgY29uc2lzdHMgcHJpbWFyaWx5IG9mIHR3byBkaWZmZXJlbnQgdHlw
ZXMgb2YgZHJhd2luZyBvcGVyYXRpb25zOiBzdHJva2luZyBjaXJjdWxhciBhcmNzCisgICAgICAg
IChyb3VnaGx5IDgwJSBvZiBwYXRocyBvdmVyIHRoZSBjb3Vyc2Ugb2YgdGhlIHN1YnRlc3QpIGFu
ZCBmaWxsaW5nIGNpcmN1bGFyIHNlY3RvcnMgKHdoaWNoIGFjY291bnRzIGZvciB0aGUKKyAgICAg
ICAgcmVtYWluaW5nIDIwJSkuIEFmdGVyIHIyNjgzMjAsIHdoZW4gc3Ryb2tpbmcgY2lyY3VsYXIg
YXJjcywgd2UgY3VycmVudGx5IHRha2UgZnVsbCBhZHZhbnRhZ2Ugb2YgaW5saW5lIHBhdGggZGF0
YQorICAgICAgICBieSByZXByZXNlbnRpbmcgYSBzaW5nbGUgYXJjIHdpdGggQXJjRGF0YS4gVGhp
cyBwcmV2ZW50cyB1cyBmcm9tIGFsbG9jYXRpbmcgcGxhdGZvcm0gQ0dQYXRoIG9iamVjdHMgZm9y
IGV2ZXJ5CisgICAgICAgIHN0cm9rZWQgYXJjIGluIHRoZSB3ZWIgcHJvY2VzcywgYW5kIGFsc28g
cmVkdWNlcyB0aGUgb3ZlcmhlYWQgb2YgSVBDIGVuY29kaW5nIGFuZCBkZWNvZGluZyB3aGVuIHNl
cmlhbGl6aW5nIGFuZAorICAgICAgICBkZXNlcmlhbGl6aW5nIGRpc3BsYXkgbGlzdCBpdGVtcyBp
biB0aGUgR1BVIHByb2Nlc3MuCisKKyAgICAgICAgSG93ZXZlciwgd2hlbiBmaWxsaW5nIGNpcmN1
bGFyIHNlY3RvcnMsIGVhY2ggc2VjdG9yIGlzIGEgcGF0aCBjcmVhdGVkIGJ5IGRvaW5nIHRoZSBm
b2xsb3dpbmc6CisKKyAgICAgICAgMS4gTW92ZSB0byAoeCwgeSkKKyAgICAgICAgMi4gQWRkIGFu
IGFyYworICAgICAgICAzLiBBZGQgYSBsaW5lIGJhY2sgdG8gKHgsIHkpCisKKyAgICAgICAgSW4g
dGhpcyBzY2VuYXJpbywgc3RlcCAoMykgY3VycmVudGx5IGJhaWxzIHVzIG91dCBvZiB0aGUgaW5s
aW5lIGBBcmNEYXRhYCByZXByZXNlbnRhdGlvbi4gSG93ZXZlciwgc2luY2Ugd2UncmUKKyAgICAg
ICAgYWxyZWFkeSB0cmFja2luZyB0aGUgZmFjdCB0aGF0IHdlIHN0YXJ0ZWQgdGhlIHBhdGggYnkg
bW92aW5nIHRvICh4LCB5KSwgd2UgY2FuIGNoYW5nZSB0aGUgY3VycmVudCBgaGFzU3RhcnRgCisg
ICAgICAgIGJvb2wgZmxhZyBvbiBgQXJjRGF0YWAgaW50byBhIHRyaS1zdGF0ZSBlbnVtIHR5cGUg
Y29uc2lzdGluZyBvZiBgQXJjT25seWAsIGBMaW5lQW5kQXJjYCwgYW5kIGBDbG9zZWRMaW5lQW5k
QXJjYCwKKyAgICAgICAgYW5kIHNpbXBseSB0cmFuc2l0aW9uIGZyb20gYExpbmVBbmRBcmNgIHRv
IGBDbG9zZWRMaW5lQW5kQXJjYCBpbnN0ZWFkIG9mIGJhaWxpbmcgb3V0IG9mIGlubGluZSBwYXRo
IGRhdGEKKyAgICAgICAgZW50aXJlbHkuIFRoaXMgYWxsb3dzIHVzIHRvIGVudGlyZWx5IGVsaW1p
bmF0ZSBgQ0dQYXRoYCBjcmVhdGlvbiBpbiB0aGUgd2ViIHByb2Nlc3MsIGFuZCBtYWtlcyBpdCBz
byB0aGF0IHdlCisgICAgICAgIG9ubHkgcmVpZnkgYENHUGF0aGBzIGluIHRoZSBHUFUgcHJvY2Vz
cywgcmlnaHQgYmVmb3JlIHdlJ3JlIHVzaW5nIGl0IHRvIHBhaW50IHVzaW5nIENvcmVHcmFwaGlj
cy4KKworICAgICAgICBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9JbmxpbmVQYXRoRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6QXJjRGF0YTo6
ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFyY0RhdGE6OmRlY29kZSk6CisKKyAg
ICAgICAgUmVwbGFjZSB0aGUgYm9vbGVhbiBgaGFzU3RhcnRgIGZsYWcgd2l0aCB0aGUgbmV3IGVu
dW0uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBhdGg6OmN1cnJlbnRQb2ludCBjb25zdCk6CisKKyAgICAgICAgTWFrZSBpdCBzbyB0
aGF0IGFza2luZyBmb3IgYGN1cnJlbnRQb2ludGAgd2l0aCBpbmxpbmUgYXJjIGRhdGEgZG9lc24n
dCBmYWxsIGludG8gdGhlIHNsb3cgY2FzZSBhbmQgY2F1c2UgdXMgdG8KKyAgICAgICAgY3JlYXRl
IGEgQ0dQYXRoLgorCisgICAgICAgIChXZWJDb3JlOjpQYXRoOjphZGRBcmMpOgorICAgICAgICAo
V2ViQ29yZTo6UGF0aDo6YWRkTGluZVRvKToKKworICAgICAgICBJbiB0aGUgY2FzZSB3aGVyZSB0
aGUgcGF0aCBpcyByZXByZXNlbnRlZCBieSBpbmxpbmUgYEFyY0RhdGFgIGFuZCB3ZSdyZSBqdXN0
IGFkZGluZyBhIGxpbmUgYmFjayB0byB0aGUgYHN0YXJ0YAorICAgICAgICBsb2NhdGlvbiwgZG9u
J3QgZmFsbCBiYWNrIHRvIGBDR1BhdGhSZWZgLiBJbnN0ZWFkLCBqdXN0IGNoYW5nZSB0aGUgYEFy
Y0RhdGFgIHR5cGUgdG8gYENsb3NlZExpbmVBbmRBcmNgLgorCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvUGF0aC5oOgorICAgICAgICAoV2ViQ29yZTo6UGF0aDo6aW5saW5lRGF0YSk6CisK
KyAgICAgICAgQWRkIGEgcHJpdmF0ZSB2ZXJzaW9uIG9mIHRoZSBgaW5saW5lRGF0YTxUPmAgbWV0
aG9kIHRoYXQgcmV0dXJucyBhIG11dGFibGUgcmVmZXJlbmNlIHRvIHRoZSBpbmxpbmUgZGF0YS4K
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdGhDRy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQYXRoOjpjcmVhdGVDR1BhdGggY29uc3QpOgorCisgICAgICAgIElmIHRoZSB0eXBl
IGlzIGBDbG9zZWRMaW5lQW5kQXJjYCwgbWFrZSBzdXJlIHdlIHNldCB1cCB0aGUgcGxhdGZvcm0g
YENHUGF0aFJlZmAgYnkgYWRkaW5nIGEgbGluZSBiYWNrIHRvIHRoZQorICAgICAgICBzdGFydCBv
ZiB0aGUgYHN0YXJ0YCBsb2NhdGlvbi4KKwogMjAyMC0xMC0xMSAgV2Vuc29uIEhzaWVoICA8d2Vu
c29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbTW90aW9uTWFya10gQ29tcHV0aW5nIHRo
ZSBmYXN0IGJvdW5kaW5nIHJlY3Qgb2YgYW4gYXJjIHNob3VsZCBub3QgbWF0ZXJpYWxpemUgYSBD
R1BhdGhSZWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lu
bGluZVBhdGhEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmxpbmVQ
YXRoRGF0YS5oCmluZGV4IGRlNGJkYmZlNDAxZjFjY2VlMzIzOGU3YTM0MTU3ZmFlNmUwNDkwNmMu
LmRlNDUzZDkxOWU4YzRjYzAyOTUwZjdlNjFjZjAzZmNhZjc2MzcwOTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lubGluZVBhdGhEYXRhLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5saW5lUGF0aERhdGEuaApAQCAtNDIsMTMg
KzQyLDE5IEBAIHN0cnVjdCBMaW5lRGF0YSB7CiB9OwogCiBzdHJ1Y3QgQXJjRGF0YSB7CisgICAg
ZW51bSBjbGFzcyBUeXBlIDogdWludDhfdCB7CisgICAgICAgIEFyY09ubHksCisgICAgICAgIExp
bmVBbmRBcmMsCisgICAgICAgIENsb3NlZExpbmVBbmRBcmMKKyAgICB9OworCiAgICAgRmxvYXRQ
b2ludCBzdGFydDsKICAgICBGbG9hdFBvaW50IGNlbnRlcjsKICAgICBmbG9hdCByYWRpdXMgeyAw
IH07CiAgICAgZmxvYXQgc3RhcnRBbmdsZSB7IDAgfTsKICAgICBmbG9hdCBlbmRBbmdsZSB7IDAg
fTsKICAgICBib29sIGNsb2Nrd2lzZSB7IGZhbHNlIH07Ci0gICAgYm9vbCBoYXNTdGFydCB7IGZh
bHNlIH07CisgICAgVHlwZSB0eXBlIHsgVHlwZTo6QXJjT25seSB9OwogCiAgICAgdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxBcmNEYXRhPiBkZWNvZGUoRGVjb2RlciYp
OwpAQCAtMTE5LDcgKzEyNSw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgQXJjRGF0
YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBzdGFydEFu
Z2xlOwogICAgIGVuY29kZXIgPDwgZW5kQW5nbGU7CiAgICAgZW5jb2RlciA8PCBjbG9ja3dpc2U7
Ci0gICAgZW5jb2RlciA8PCBoYXNTdGFydDsKKyAgICBlbmNvZGVyIDw8IHR5cGU7CiB9CiAKIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPEFyY0RhdGE+IEFyY0RhdGE6OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQpAQCAtMTQzLDcgKzE0OSw3IEBAIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IE9wdGlvbmFsPEFyY0RhdGE+IEFyY0RhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5jbG9ja3dpc2UpKQogICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwogCi0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLmhhc1N0YXJ0KSkK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEudHlwZSkpCiAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CiAKICAgICByZXR1cm4gZGF0YTsKQEAgLTIwMSw0ICsyMDcsMTcgQEAgdXNpbmcg
SW5saW5lUGF0aERhdGEgPSBWYXJpYW50PE1vbm9zdGF0ZSwgTW92ZURhdGEsIExpbmVEYXRhLCBB
cmNEYXRhLCBRdWFkQ3VydmUKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCituYW1lc3BhY2Ug
V1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpBcmNEYXRhOjpU
eXBlPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6
QXJjRGF0YTo6VHlwZSwKKyAgICAgICAgV2ViQ29yZTo6QXJjRGF0YTo6VHlwZTo6QXJjT25seSwK
KyAgICAgICAgV2ViQ29yZTo6QXJjRGF0YTo6VHlwZTo6TGluZUFuZEFyYywKKyAgICAgICAgV2Vi
Q29yZTo6QXJjRGF0YTo6VHlwZTo6Q2xvc2VkTGluZUFuZEFyYworICAgID47Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXVEYKKwogI2VuZGlmIC8vIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmNwcAppbmRleCA0ZWQzZDg5Y2FjNzBj
N2JhZGI0MzI1NzRiNzFiZGIyMWEyYjI3MzE2Li4xMGM5N2Q4MWFlZTljOTVhOTgzZTk4OGQ0N2I2
ZWU3ODkyNGMzZDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9QYXRoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmNw
cApAQCAtMjQ5LDE2ICsyNDksMjcgQEAgRmxvYXRQb2ludCBQYXRoOjpjdXJyZW50UG9pbnQoKSBj
b25zdAogCiAjaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCiAgICAgaWYgKGhhc0lubGluZURh
dGE8TW92ZURhdGE+KCkpCi0gICAgICAgIHJldHVybiBXVEY6OmdldDxNb3ZlRGF0YT4obV9pbmxp
bmVEYXRhKS5sb2NhdGlvbjsKKyAgICAgICAgcmV0dXJuIGlubGluZURhdGE8TW92ZURhdGE+KCku
bG9jYXRpb247CiAKICAgICBpZiAoaGFzSW5saW5lRGF0YTxMaW5lRGF0YT4oKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6Z2V0PExpbmVEYXRhPihtX2lubGluZURhdGEpLmVuZDsKKyAgICAgICAgcmV0
dXJuIGlubGluZURhdGE8TGluZURhdGE+KCkuZW5kOwogCiAgICAgaWYgKGhhc0lubGluZURhdGE8
QmV6aWVyQ3VydmVEYXRhPigpKQotICAgICAgICByZXR1cm4gV1RGOjpnZXQ8QmV6aWVyQ3VydmVE
YXRhPihtX2lubGluZURhdGEpLmVuZFBvaW50OworICAgICAgICByZXR1cm4gaW5saW5lRGF0YTxC
ZXppZXJDdXJ2ZURhdGE+KCkuZW5kUG9pbnQ7CiAKICAgICBpZiAoaGFzSW5saW5lRGF0YTxRdWFk
Q3VydmVEYXRhPigpKQotICAgICAgICByZXR1cm4gV1RGOjpnZXQ8UXVhZEN1cnZlRGF0YT4obV9p
bmxpbmVEYXRhKS5lbmRQb2ludDsKKyAgICAgICAgcmV0dXJuIGlubGluZURhdGE8UXVhZEN1cnZl
RGF0YT4oKS5lbmRQb2ludDsKKworICAgIGlmIChoYXNJbmxpbmVEYXRhPEFyY0RhdGE+KCkpIHsK
KyAgICAgICAgYXV0byYgYXJjID0gaW5saW5lRGF0YTxBcmNEYXRhPigpOworICAgICAgICBpZiAo
YXJjLnR5cGUgPT0gQXJjRGF0YTo6VHlwZTo6Q2xvc2VkTGluZUFuZEFyYykKKyAgICAgICAgICAg
IHJldHVybiBhcmMuc3RhcnQ7CisKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIGFyYy5j
ZW50ZXIueCgpICsgYXJjLnJhZGl1cyAqIHN0ZDo6YWNvcyhhcmMuZW5kQW5nbGUpLAorICAgICAg
ICAgICAgYXJjLmNlbnRlci55KCkgKyBhcmMucmFkaXVzICogc3RkOjphc2luKGFyYy5lbmRBbmds
ZSkKKyAgICAgICAgfTsKKyAgICB9CiAjZW5kaWYKIAogICAgIHJldHVybiBjdXJyZW50UG9pbnRT
bG93Q2FzZSgpOwpAQCAtMjg2LDExICsyOTcsMTIgQEAgdm9pZCBQYXRoOjphZGRBcmMoY29uc3Qg
RmxvYXRQb2ludCYgcG9pbnQsIGZsb2F0IHJhZGl1cywgZmxvYXQgc3RhcnRBbmdsZSwgZmxvYXQK
ICAgICAgICAgcmV0dXJuOwogCiAjaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCi0gICAgaWYg
KGlzTnVsbCgpIHx8IGhhc0lubGluZURhdGE8TW92ZURhdGE+KCkpIHsKKyAgICBib29sIGhhc01v
dmVEYXRhID0gaGFzSW5saW5lRGF0YTxNb3ZlRGF0YT4oKTsKKyAgICBpZiAoaXNOdWxsKCkgfHwg
aGFzTW92ZURhdGEpIHsKICAgICAgICAgQXJjRGF0YSBhcmM7Ci0gICAgICAgIGlmIChoYXNBbnlJ
bmxpbmVEYXRhKCkpIHsKLSAgICAgICAgICAgIGFyYy5oYXNTdGFydCA9IHRydWU7Ci0gICAgICAg
ICAgICBhcmMuc3RhcnQgPSBXVEY6OmdldDxNb3ZlRGF0YT4obV9pbmxpbmVEYXRhKS5sb2NhdGlv
bjsKKyAgICAgICAgaWYgKGhhc01vdmVEYXRhKSB7CisgICAgICAgICAgICBhcmMudHlwZSA9IEFy
Y0RhdGE6OlR5cGU6OkxpbmVBbmRBcmM7CisgICAgICAgICAgICBhcmMuc3RhcnQgPSBpbmxpbmVE
YXRhPE1vdmVEYXRhPigpLmxvY2F0aW9uOwogICAgICAgICB9CiAgICAgICAgIGFyYy5jZW50ZXIg
PSBwb2ludDsKICAgICAgICAgYXJjLnJhZGl1cyA9IHJhZGl1czsKQEAgLTMxMCwxMyArMzIyLDIy
IEBAIHZvaWQgUGF0aDo6YWRkQXJjKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBmbG9hdCByYWRp
dXMsIGZsb2F0IHN0YXJ0QW5nbGUsIGZsb2F0CiB2b2lkIFBhdGg6OmFkZExpbmVUbyhjb25zdCBG
bG9hdFBvaW50JiBwb2ludCkKIHsKICNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKLSAgICBp
ZiAoaXNOdWxsKCkgfHwgaGFzSW5saW5lRGF0YTxNb3ZlRGF0YT4oKSkgeworICAgIGJvb2wgaGFz
TW92ZURhdGEgPSBoYXNJbmxpbmVEYXRhPE1vdmVEYXRhPigpOworICAgIGlmIChpc051bGwoKSB8
fCBoYXNNb3ZlRGF0YSkgewogICAgICAgICBMaW5lRGF0YSBsaW5lOwotICAgICAgICBsaW5lLnN0
YXJ0ID0gaGFzQW55SW5saW5lRGF0YSgpID8gV1RGOjpnZXQ8TW92ZURhdGE+KG1faW5saW5lRGF0
YSkubG9jYXRpb24gOiBGbG9hdFBvaW50KCk7CisgICAgICAgIGxpbmUuc3RhcnQgPSBoYXNNb3Zl
RGF0YSA/IGlubGluZURhdGE8TW92ZURhdGE+KCkubG9jYXRpb24gOiBGbG9hdFBvaW50KCk7CiAg
ICAgICAgIGxpbmUuZW5kID0gcG9pbnQ7CiAgICAgICAgIG1faW5saW5lRGF0YSA9IHsgV1RGTW92
ZShsaW5lKSB9OwogICAgICAgICByZXR1cm47CiAgICAgfQorCisgICAgaWYgKGhhc0lubGluZURh
dGE8QXJjRGF0YT4oKSkgeworICAgICAgICBhdXRvJiBhcmMgPSBpbmxpbmVEYXRhPEFyY0RhdGE+
KCk7CisgICAgICAgIGlmIChhcmMudHlwZSA9PSBBcmNEYXRhOjpUeXBlOjpMaW5lQW5kQXJjICYm
IGFyYy5zdGFydCA9PSBwb2ludCkgeworICAgICAgICAgICAgYXJjLnR5cGUgPSBBcmNEYXRhOjpU
eXBlOjpDbG9zZWRMaW5lQW5kQXJjOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgfQogI2VuZGlmCiAKICAgICBhZGRMaW5lVG9TbG93Q2FzZShwb2ludCk7CkBAIC00MDIsNyAr
NDIzLDcgQEAgT3B0aW9uYWw8RmxvYXRSZWN0PiBQYXRoOjpmYXN0Qm91bmRpbmdSZWN0RnJvbUlu
bGluZURhdGEoKSBjb25zdAogICAgICAgICBhdXRvIGRpYW1ldGVyID0gMiAqIGFyYy5yYWRpdXM7
CiAgICAgICAgIEZsb2F0UmVjdCBhcHByb3hpbWF0ZUJvdW5kcyB7IGFyYy5jZW50ZXIsIEZsb2F0
U2l6ZShkaWFtZXRlciwgZGlhbWV0ZXIpIH07CiAgICAgICAgIGFwcHJveGltYXRlQm91bmRzLm1v
dmUoLWFyYy5yYWRpdXMsIC1hcmMucmFkaXVzKTsKLSAgICAgICAgaWYgKGFyYy5oYXNTdGFydCkK
KyAgICAgICAgaWYgKGFyYy50eXBlID09IEFyY0RhdGE6OlR5cGU6OkxpbmVBbmRBcmMgfHwgYXJj
LnR5cGUgPT0gQXJjRGF0YTo6VHlwZTo6Q2xvc2VkTGluZUFuZEFyYykKICAgICAgICAgICAgIGFw
cHJveGltYXRlQm91bmRzLmV4dGVuZChhcmMuc3RhcnQpOwogICAgICAgICByZXR1cm4gYXBwcm94
aW1hdGVCb3VuZHM7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUGF0aC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5o
CmluZGV4IGM4NDI5NjRlYjljZDg1Y2NmZmU2ZDMxOWQ2ZWQwYTVjYzM1ZjlkOWUuLmE4NThhMTM5
OWVhNWQ3OTExNWE2ZjFkM2E4OTc3NWNhODY5OGYzNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QYXRoLmgKQEAgLTI0MSw2ICsyNDEsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgog
I2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQogICAgIGJvb2wgaGFzQW55SW5saW5lRGF0YSgp
IGNvbnN0OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIERhdGFUeXBlPiBEYXRhVHlwZSYgaW5saW5l
RGF0YSgpOwogICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZmFzdEJvdW5kaW5nUmVjdEZyb21Jbmxp
bmVEYXRhKCkgY29uc3Q7CiAgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBib3VuZGluZ1JlY3RGcm9t
SW5saW5lRGF0YSgpIGNvbnN0OwogI2VuZGlmCkBAIC00MjMsNiArNDI0LDExIEBAIHRlbXBsYXRl
PHR5cGVuYW1lIERhdGFUeXBlPiBpbmxpbmUgY29uc3QgRGF0YVR5cGUmIFBhdGg6OmlubGluZURh
dGEoKSBjb25zdAogICAgIHJldHVybiBXVEY6OmdldDxEYXRhVHlwZT4obV9pbmxpbmVEYXRhKTsK
IH0KIAordGVtcGxhdGU8dHlwZW5hbWUgRGF0YVR5cGU+IGlubGluZSBEYXRhVHlwZSYgUGF0aDo6
aW5saW5lRGF0YSgpCit7CisgICAgcmV0dXJuIFdURjo6Z2V0PERhdGFUeXBlPihtX2lubGluZURh
dGEpOworfQorCiBpbmxpbmUgYm9vbCBQYXRoOjpoYXNBbnlJbmxpbmVEYXRhKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gIWhhc0lubGluZURhdGE8TW9ub3N0YXRlPigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENHLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdGhDRy5jcHAKaW5kZXggNjZlOGZmOTlmYTJhZDBm
NmI5ODIwNmE3ZjcwOGMwOTVhZmJkZGMzNi4uMmNhNzM1MGI0YWQ5M2IyMjM0YTFiMzMwNTBkMWQ5
YzlmN2NjMDRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvUGF0aENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Q
YXRoQ0cuY3BwCkBAIC05OCw5ICs5OCwxMSBAQCB2b2lkIFBhdGg6OmNyZWF0ZUNHUGF0aCgpIGNv
bnN0CiAgICAgICAgICAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChtX3BhdGguZ2V0KCksIG51bGxw
dHIsIGxpbmUuZW5kLngoKSwgbGluZS5lbmQueSgpKTsKICAgICAgICAgfSwKICAgICAgICAgWyZd
KGNvbnN0IEFyY0RhdGEmIGFyYykgewotICAgICAgICAgICAgaWYgKGFyYy5oYXNTdGFydCkKKyAg
ICAgICAgICAgIGlmIChhcmMudHlwZSA9PSBBcmNEYXRhOjpUeXBlOjpMaW5lQW5kQXJjIHx8IGFy
Yy50eXBlID09IEFyY0RhdGE6OlR5cGU6OkNsb3NlZExpbmVBbmRBcmMpCiAgICAgICAgICAgICAg
ICAgQ0dQYXRoTW92ZVRvUG9pbnQobV9wYXRoLmdldCgpLCBudWxscHRyLCBhcmMuc3RhcnQueCgp
LCBhcmMuc3RhcnQueSgpKTsKICAgICAgICAgICAgIENHUGF0aEFkZEFyYyhtX3BhdGguZ2V0KCks
IG51bGxwdHIsIGFyYy5jZW50ZXIueCgpLCBhcmMuY2VudGVyLnkoKSwgYXJjLnJhZGl1cywgYXJj
LnN0YXJ0QW5nbGUsIGFyYy5lbmRBbmdsZSwgYXJjLmNsb2Nrd2lzZSk7CisgICAgICAgICAgICBp
ZiAoYXJjLnR5cGUgPT0gQXJjRGF0YTo6VHlwZTo6Q2xvc2VkTGluZUFuZEFyYykKKyAgICAgICAg
ICAgICAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChtX3BhdGguZ2V0KCksIG51bGxwdHIsIGFyYy5z
dGFydC54KCksIGFyYy5zdGFydC55KCkpOwogICAgICAgICB9LAogICAgICAgICBbJl0oY29uc3Qg
UXVhZEN1cnZlRGF0YSYgY3VydmUpIHsKICAgICAgICAgICAgIENHUGF0aE1vdmVUb1BvaW50KG1f
cGF0aC5nZXQoKSwgbnVsbHB0ciwgY3VydmUuc3RhcnRQb2ludC54KCksIGN1cnZlLnN0YXJ0UG9p
bnQueSgpKTsK
</data>
<flag name="commit-queue"
          id="427239"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>