<?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>164673</bug_id>
          
          <creation_ts>2016-11-11 19:16:46 -0800</creation_ts>
          <short_desc>Handle filter() image type in new CSS Parser</short_desc>
          <delta_ts>2016-11-14 12:02:47 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dean Jackson">dino</reporter>
          <assigned_to name="Dean Jackson">dino</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1250568</commentid>
    <comment_count>0</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2016-11-11 19:16:46 -0800</bug_when>
    <thetext>Handle filter() image type in new CSS Parser</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250569</commentid>
    <comment_count>1</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2016-11-11 19:17:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/29231376&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250570</commentid>
    <comment_count>2</comment_count>
      <attachid>294582</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2016-11-11 19:20:28 -0800</bug_when>
    <thetext>Created attachment 294582
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250779</commentid>
    <comment_count>3</comment_count>
      <attachid>294582</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-11-12 21:22:18 -0800</bug_when>
    <thetext>Comment on attachment 294582
Patch

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

&gt; Source/WebCore/css/parser/CSSPropertyParserHelpers.cpp:1093
&gt; +    RefPtr&lt;CSSValue&gt; imageValue = consumeImageOrNone(args, context);

I prefer auto in cases like this.

&gt; Source/WebCore/css/parser/CSSPropertyParserHelpers.cpp:1097
&gt; +    RefPtr&lt;CSSValue&gt; filterValue = consumeFilter(args, context);

Ditto.

&gt; Source/WebCore/css/parser/CSSPropertyParserHelpers.cpp:1102
&gt; +    return CSSFilterImageValue::create(imageValue.releaseNonNull(), filterValue.releaseNonNull());

What guarantees filterValue is non-null?

&gt; Source/WebCore/css/parser/CSSPropertyParserHelpers.cpp:1189
&gt; +    RefPtr&lt;CSSFunctionValue&gt; filterValue = CSSFunctionValue::create(filterType);

I prefer auto in a case like this.

&gt; Source/WebCore/css/parser/CSSPropertyParserHelpers.cpp:1198
&gt; +            // FIXME (crbug.com/397061): Support calc expressions like calc(10% + 0.5)

Do we really need this crbug URL?

&gt; Source/WebCore/css/parser/CSSPropertyParserHelpers.cpp:1207
&gt; +            // FIXME (crbug.com/397061): Support calc expressions like calc(10% + 0.5)

Ditto.

&gt; Source/WebCore/css/parser/CSSPropertyParserHelpers.cpp:1230
&gt; +    RefPtr&lt;CSSValueList&gt; list = CSSValueList::createSpaceSeparated();

I prefer auto in a case like this.

&gt; Source/WebCore/css/parser/CSSPropertyParserHelpers.cpp:1232
&gt; +        RefPtr&lt;CSSValue&gt; filterValue = consumeUrl(range);

Ditto.

&gt; Source/WebCore/css/parser/CSSPropertyParserHelpers.cpp:1258
&gt; +    RefPtr&lt;CSSPrimitiveValue&gt; horizontalOffset = consumeLength(range, cssParserMode, ValueRangeAll);

I prefer auto.

&gt; Source/WebCore/css/parser/CSSPropertyParserHelpers.cpp:1262
&gt; +    RefPtr&lt;CSSPrimitiveValue&gt; verticalOffset = consumeLength(range, cssParserMode, ValueRangeAll);

Ditto.

&gt; Source/WebCore/css/parser/CSSPropertyParserHelpers.cpp:1266
&gt; +    RefPtr&lt;CSSPrimitiveValue&gt; blurRadius = consumeLength(range, cssParserMode, ValueRangeAll);

Ditto.

&gt; Source/WebCore/css/parser/CSSPropertyParserHelpers.cpp:1286
&gt; +    // We pass RefPtrs, since they can actually be null.

I don’t think we need this comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1251067</commentid>
    <comment_count>4</comment_count>
      <attachid>294582</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2016-11-14 11:55:44 -0800</bug_when>
    <thetext>Comment on attachment 294582
Patch

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

&gt;&gt; Source/WebCore/css/parser/CSSPropertyParserHelpers.cpp:1232
&gt;&gt; +        RefPtr&lt;CSSValue&gt; filterValue = consumeUrl(range);
&gt; 
&gt; Ditto.

I couldn&apos;t do this one, because auto thought it was a CSSPrimitiveValue, and then got angry when it tried to assign a CSSFunctionValue below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1251070</commentid>
    <comment_count>5</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2016-11-14 12:02:47 -0800</bug_when>
    <thetext>Committed r208700: &lt;http://trac.webkit.org/changeset/208700&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294582</attachid>
            <date>2016-11-11 19:20:28 -0800</date>
            <delta_ts>2016-11-12 21:22:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164673-20161112141606.patch</filename>
            <type>text/plain</type>
            <size>21040</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4NTcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2I4NWEzMDBmNTM2OWFi
NDQyMDcyOTE2MzUxOTVlNzA1NTk1OTM1Zi4uYTJiYTMxN2FiZmY1YzZkZGJkNGUxOWNmM2U1ZDA3
NWNmZTAwNTg3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE2LTExLTExICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBIYW5kbGUgZmlsdGVyKCkgaW1h
Z2UgdHlwZSBpbiBuZXcgQ1NTIFBhcnNlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTY0NjczCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbXMvMjkyMzEz
NzY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
IHN1cHBvcnQgZm9yIHRoZSA8aW1hZ2U+IHR5cGUgZmlsdGVyKCkgdG8gdGhlCisgICAgICAgIG5l
dyBDU1MgUGFyc2VyLiBUaGlzIGludm9sdmVkIG1vdmluZyBzb21lIGZ1bmN0aW9ucworICAgICAg
ICBmcm9tIENTU1Byb3BlcnR5UGFyc2VyIGludG8gQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLgor
CisgICAgICAgIENvdmVyZWQgYnkgZmFzdC9maWx0ZXItaW1hZ2UgdGVzdHMuCisKKyAgICAgICAg
KiBjc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbjoKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1Byb3Bl
cnR5UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVTaGFkb3cpOgorICAgICAg
ICAoV2ViQ29yZTo6cGFyc2VTaW5nbGVTaGFkb3cpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6Y29uc3VtZUZpbHRlckZ1bmN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNv
bnN1bWVGaWx0ZXIpOiBEZWxldGVkLgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQ
YXJzZXJIZWxwZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVs
cGVyczo6Y29uc3VtZUZpbHRlckltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5
UGFyc2VySGVscGVyczo6Y29uc3VtZUdlbmVyYXRlZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6aXNHZW5lcmF0ZWRJbWFnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVGaWx0ZXJGdW5jdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVGaWx0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1l
U2luZ2xlU2hhZG93KToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVs
cGVycy5oOgorCiAyMDE2LTExLTEwICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBZGQgQ1NTIENvbG9yIExldmVsIDQgdG8gZmVhdHVyZXMuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbiBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NWYWx1ZUtleXdvcmRzLmluCmluZGV4IDE5YTZhZjU4NjZmYTY1ZWNhODVkYzJmOTBiY2Ri
Y2E4OTVlZThiZWQuLmNiODQxYzE0ZDQ2MDJhNzgzZTk4NDliN2ZhN2MzOTI0Nzg1Y2VlYjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluCkBAIC0xMTY1LDYgKzExNjUsOCBA
QCByZXBlYXRpbmctcmFkaWFsLWdyYWRpZW50CiAtd2Via2l0LXJlcGVhdGluZy1yYWRpYWwtZ3Jh
ZGllbnQKIC13ZWJraXQtaW1hZ2Utc2V0CiAtd2Via2l0LW5hbWVkLWltYWdlCitmaWx0ZXIKKy13
ZWJraXQtZmlsdGVyCiAKIC8vIGRlcHJlY2F0ZWQgZ3JhZGllbnRzCiBmcm9tCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCmluZGV4IGVkOWU5YjIx
ZDQwYmYxMTc2YjcyYmNjMTNkYWQxYmYxODYwMTJkNjQuLjZlNzIxMTYyYzA5YTJlODJhOWU5N2My
MDAzMDNkZGJiYmRmZTc1N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTUHJvcGVydHlQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
UHJvcGVydHlQYXJzZXIuY3BwCkBAIC0xMzA4LDUyICsxMzA4LDYgQEAgc3RhdGljIFJlZlB0cjxD
U1NWYWx1ZT4gY29uc3VtZVpJbmRleChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKICAgICBy
ZXR1cm4gY29uc3VtZUludGVnZXIocmFuZ2UpOwogfQogCi1zdGF0aWMgUmVmUHRyPENTU1NoYWRv
d1ZhbHVlPiBwYXJzZVNpbmdsZVNoYWRvdyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NT
UGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBib29sIGFsbG93SW5zZXQsIGJvb2wgYWxsb3dTcHJl
YWQpCi17Ci0gICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBzdHlsZTsKLSAgICBSZWZQdHI8
Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbG9yOwotCi0gICAgaWYgKHJhbmdlLmF0RW5kKCkpCi0gICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1
ZUluc2V0KSB7Ci0gICAgICAgIGlmICghYWxsb3dJbnNldCkKLSAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgICAgICBzdHlsZSA9IGNvbnN1bWVJZGVudChyYW5nZSk7Ci0gICAgfQotICAg
IGNvbG9yID0gY29uc3VtZUNvbG9yKHJhbmdlLCBjc3NQYXJzZXJNb2RlKTsKLQotICAgIFJlZlB0
cjxDU1NQcmltaXRpdmVWYWx1ZT4gaG9yaXpvbnRhbE9mZnNldCA9IGNvbnN1bWVMZW5ndGgocmFu
Z2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwpOwotICAgIGlmICghaG9yaXpvbnRhbE9m
ZnNldCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBSZWZQdHI8Q1NTUHJpbWl0aXZl
VmFsdWU+IHZlcnRpY2FsT2Zmc2V0ID0gY29uc3VtZUxlbmd0aChyYW5nZSwgY3NzUGFyc2VyTW9k
ZSwgVmFsdWVSYW5nZUFsbCk7Ci0gICAgaWYgKCF2ZXJ0aWNhbE9mZnNldCkKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0KLSAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGJsdXJSYWRpdXMg
PSBjb25zdW1lTGVuZ3RoKHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlQWxsKTsKLSAg
ICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHNwcmVhZERpc3RhbmNlOwotICAgIGlmIChibHVy
UmFkaXVzKSB7Ci0gICAgICAgIC8vIEJsdXIgcmFkaXVzIG11c3QgYmUgbm9uLW5lZ2F0aXZlLgot
ICAgICAgICBpZiAoYmx1clJhZGl1cy0+ZG91YmxlVmFsdWUoKSA8IDApCi0gICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgaWYgKGFsbG93U3ByZWFkKQotICAgICAgICAgICAgc3By
ZWFkRGlzdGFuY2UgPSBjb25zdW1lTGVuZ3RoKHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJh
bmdlQWxsKTsKLSAgICB9Ci0KLSAgICBpZiAoIXJhbmdlLmF0RW5kKCkpIHsKLSAgICAgICAgaWYg
KCFjb2xvcikKLSAgICAgICAgICAgIGNvbG9yID0gY29uc3VtZUNvbG9yKHJhbmdlLCBjc3NQYXJz
ZXJNb2RlKTsKLSAgICAgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlSW5zZXQp
IHsKLSAgICAgICAgICAgIGlmICghYWxsb3dJbnNldCB8fCBzdHlsZSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgICAgIHN0eWxlID0gY29uc3VtZUlkZW50KHJhbmdl
KTsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICAvLyBXZSBwYXNzIFJlZlB0cnMsIHNpbmNl
IHRoZXkgY2FuIGFjdHVhbGx5IGJlIG51bGwuCi0gICAgcmV0dXJuIENTU1NoYWRvd1ZhbHVlOjpj
cmVhdGUoV1RGTW92ZShob3Jpem9udGFsT2Zmc2V0KSwgV1RGTW92ZSh2ZXJ0aWNhbE9mZnNldCks
IFdURk1vdmUoYmx1clJhZGl1cyksIFdURk1vdmUoc3ByZWFkRGlzdGFuY2UpLCBXVEZNb3ZlKHN0
eWxlKSwgV1RGTW92ZShjb2xvcikpOwotfQotCiBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25z
dW1lU2hhZG93KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1Bh
cnNlck1vZGUsIGJvb2wgaXNCb3hTaGFkb3dQcm9wZXJ0eSkKIHsKICAgICBpZiAocmFuZ2UucGVl
aygpLmlkKCkgPT0gQ1NTVmFsdWVOb25lKQpAQCAtMTM2MSw3ICsxMzE1LDcgQEAgc3RhdGljIFJl
ZlB0cjxDU1NWYWx1ZT4gY29uc3VtZVNoYWRvdyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwg
Q1NTUGFyc2VyTW9kZQogCiAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gc2hhZG93VmFsdWVMaXN0
ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwogICAgIGRvIHsKLSAgICAg
ICAgaWYgKFJlZlB0cjxDU1NTaGFkb3dWYWx1ZT4gc2hhZG93VmFsdWUgPSBwYXJzZVNpbmdsZVNo
YWRvdyhyYW5nZSwgY3NzUGFyc2VyTW9kZSwgaXNCb3hTaGFkb3dQcm9wZXJ0eSwgaXNCb3hTaGFk
b3dQcm9wZXJ0eSkpCisgICAgICAgIGlmIChSZWZQdHI8Q1NTU2hhZG93VmFsdWU+IHNoYWRvd1Zh
bHVlID0gY29uc3VtZVNpbmdsZVNoYWRvdyhyYW5nZSwgY3NzUGFyc2VyTW9kZSwgaXNCb3hTaGFk
b3dQcm9wZXJ0eSwgaXNCb3hTaGFkb3dQcm9wZXJ0eSkpCiAgICAgICAgICAgICBzaGFkb3dWYWx1
ZUxpc3QtPmFwcGVuZCgqc2hhZG93VmFsdWUpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTEzNjksNjcgKzEzMjMsNiBAQCBzdGF0aWMgUmVmUHRyPENTU1Zh
bHVlPiBjb25zdW1lU2hhZG93KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJN
b2RlCiAgICAgcmV0dXJuIHNoYWRvd1ZhbHVlTGlzdDsKIH0KIAotc3RhdGljIFJlZlB0cjxDU1NG
dW5jdGlvblZhbHVlPiBjb25zdW1lRmlsdGVyRnVuY3Rpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYg
cmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCi17Ci0gICAgQ1NTVmFsdWVJ
RCBmaWx0ZXJUeXBlID0gcmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKTsKLSAgICBpZiAoZmlsdGVy
VHlwZSA8IENTU1ZhbHVlSW52ZXJ0IHx8IGZpbHRlclR5cGUgPiBDU1NWYWx1ZURyb3BTaGFkb3cp
Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIENTU1BhcnNlclRva2VuUmFuZ2UgYXJncyA9
IGNvbnN1bWVGdW5jdGlvbihyYW5nZSk7Ci0gICAgUmVmUHRyPENTU0Z1bmN0aW9uVmFsdWU+IGZp
bHRlclZhbHVlID0gQ1NTRnVuY3Rpb25WYWx1ZTo6Y3JlYXRlKGZpbHRlclR5cGUpOwotICAgIFJl
ZlB0cjxDU1NWYWx1ZT4gcGFyc2VkVmFsdWU7Ci0KLSAgICBpZiAoZmlsdGVyVHlwZSA9PSBDU1NW
YWx1ZURyb3BTaGFkb3cpCi0gICAgICAgIHBhcnNlZFZhbHVlID0gcGFyc2VTaW5nbGVTaGFkb3co
YXJncywgY29udGV4dC5tb2RlLCBmYWxzZSwgZmFsc2UpOwotICAgIGVsc2UgewotICAgICAgICBp
ZiAoYXJncy5hdEVuZCgpKQotICAgICAgICAgICAgcmV0dXJuIGZpbHRlclZhbHVlOwotICAgICAg
ICBpZiAoZmlsdGVyVHlwZSA9PSBDU1NWYWx1ZUJyaWdodG5lc3MpIHsKLSAgICAgICAgICAgIC8v
IEZJWE1FIChjcmJ1Zy5jb20vMzk3MDYxKTogU3VwcG9ydCBjYWxjIGV4cHJlc3Npb25zIGxpa2Ug
Y2FsYygxMCUgKyAwLjUpCi0gICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVQZXJjZW50
KGFyZ3MsIFZhbHVlUmFuZ2VBbGwpOwotICAgICAgICAgICAgaWYgKCFwYXJzZWRWYWx1ZSkKLSAg
ICAgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVOdW1iZXIoYXJncywgVmFsdWVSYW5n
ZUFsbCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoZmlsdGVyVHlwZSA9PSBDU1NWYWx1ZUh1ZVJvdGF0
ZSkKLSAgICAgICAgICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZUFuZ2xlKGFyZ3MsIGNvbnRleHQu
bW9kZSwgVW5pdGxlc3NRdWlyazo6Rm9yYmlkKTsKLSAgICAgICAgZWxzZSBpZiAoZmlsdGVyVHlw
ZSA9PSBDU1NWYWx1ZUJsdXIpIHsKLSAgICAgICAgICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZUxl
bmd0aChhcmdzLCBIVE1MU3RhbmRhcmRNb2RlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOwotICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gRklYTUUgKGNyYnVnLmNvbS8zOTcwNjEpOiBT
dXBwb3J0IGNhbGMgZXhwcmVzc2lvbnMgbGlrZSBjYWxjKDEwJSArIDAuNSkKLSAgICAgICAgICAg
IHBhcnNlZFZhbHVlID0gY29uc3VtZVBlcmNlbnQoYXJncywgVmFsdWVSYW5nZU5vbk5lZ2F0aXZl
KTsKLSAgICAgICAgICAgIGlmICghcGFyc2VkVmFsdWUpCi0gICAgICAgICAgICAgICAgcGFyc2Vk
VmFsdWUgPSBjb25zdW1lTnVtYmVyKGFyZ3MsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7Ci0gICAg
ICAgICAgICBpZiAocGFyc2VkVmFsdWUgJiYgZmlsdGVyVHlwZSAhPSBDU1NWYWx1ZVNhdHVyYXRl
ICYmIGZpbHRlclR5cGUgIT0gQ1NTVmFsdWVDb250cmFzdCkgewotICAgICAgICAgICAgICAgIGJv
b2wgaXNQZXJjZW50YWdlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCpwYXJzZWRWYWx1
ZSkuaXNQZXJjZW50YWdlKCk7Ci0gICAgICAgICAgICAgICAgZG91YmxlIG1heEFsbG93ZWQgPSBp
c1BlcmNlbnRhZ2UgPyAxMDAuMCA6IDEuMDsKLSAgICAgICAgICAgICAgICBpZiAoZG93bmNhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWU+KCpwYXJzZWRWYWx1ZSkuZG91YmxlVmFsdWUoKSA+IG1heEFsbG93
ZWQpIHsKLSAgICAgICAgICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBDU1NQcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlKG1heEFsbG93ZWQsIGlzUGVyY2VudGFnZSA/IENTU1ByaW1pdGl2ZVZhbHVlOjpV
bml0VHlwZXM6OkNTU19QRVJDRU5UQUdFIDogQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6
Q1NTX05VTUJFUik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgfQotICAgIGlmICghcGFyc2VkVmFsdWUgfHwgIWFyZ3MuYXRFbmQoKSkKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgZmlsdGVyVmFsdWUtPmFwcGVuZCgqcGFyc2VkVmFsdWUpOwot
ICAgIHJldHVybiBmaWx0ZXJWYWx1ZTsKLX0KLQotc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29u
c3VtZUZpbHRlcihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29u
dGV4dCYgY29udGV4dCkKLXsKLSAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVO
b25lKQotICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKLQotICAgIFJlZlB0cjxD
U1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7
Ci0gICAgZG8gewotICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IGZpbHRlclZhbHVlID0gY29uc3Vt
ZVVybChyYW5nZSk7Ci0gICAgICAgIGlmICghZmlsdGVyVmFsdWUpIHsKLSAgICAgICAgICAgIGZp
bHRlclZhbHVlID0gY29uc3VtZUZpbHRlckZ1bmN0aW9uKHJhbmdlLCBjb250ZXh0KTsKLSAgICAg
ICAgICAgIGlmICghZmlsdGVyVmFsdWUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgICAgIH0KLSAgICAgICAgbGlzdC0+YXBwZW5kKGZpbHRlclZhbHVlLnJlbGVhc2VOb25O
dWxsKCkpOwotICAgIH0gd2hpbGUgKCFyYW5nZS5hdEVuZCgpKTsKLSAgICByZXR1cm4gbGlzdDsK
LX0KLQogc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZVRleHREZWNvcmF0aW9uTGluZShD
U1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKIHsKICAgICBDU1NWYWx1ZUlEIGlkID0gcmFuZ2Uu
cGVlaygpLmlkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1By
b3BlcnR5UGFyc2VySGVscGVycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1By
b3BlcnR5UGFyc2VySGVscGVycy5jcHAKaW5kZXggY2EwYzUxMGMzNTBhMzUxNzBkZDVlYTQyYjA3
ZDE5OWU3NzAzMDYzNC4uMDgyZTY3YzY2OTNjZGY3MjU3NjEyZjdmNGI0NGY5N2NkYzMyNDAwZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhl
bHBlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJz
ZXJIZWxwZXJzLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkNTU0NhbGN1bGF0aW9u
VmFsdWUuaCIKICNpbmNsdWRlICJDU1NDYW52YXNWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0Nyb3Nz
ZmFkZVZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTRmlsdGVySW1hZ2VWYWx1ZS5oIgogI2luY2x1ZGUg
IkNTU0dyYWRpZW50VmFsdWUuaCIKICNpbmNsdWRlICJDU1NJbWFnZVNldFZhbHVlLmgiCiAjaW5j
bHVkZSAiQ1NTSW1hZ2VWYWx1ZS5oIgpAQCAtMTA4Niw3ICsxMDg3LDIxIEBAIHN0YXRpYyBSZWZQ
dHI8Q1NTVmFsdWU+IGNvbnN1bWVXZWJraXROYW1lZEltYWdlKENTU1BhcnNlclRva2VuUmFuZ2Um
IGFyZ3MpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBDU1NOYW1lZEltYWdl
VmFsdWU6OmNyZWF0ZShpbWFnZU5hbWUpOwogfQotICAgIAorCitzdGF0aWMgUmVmUHRyPENTU1Zh
bHVlPiBjb25zdW1lRmlsdGVySW1hZ2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgY29uc3Qg
Q1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IGltYWdl
VmFsdWUgPSBjb25zdW1lSW1hZ2VPck5vbmUoYXJncywgY29udGV4dCk7CisgICAgaWYgKCFpbWFn
ZVZhbHVlIHx8ICFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgIFJlZlB0cjxDU1NWYWx1ZT4gZmlsdGVyVmFsdWUgPSBj
b25zdW1lRmlsdGVyKGFyZ3MsIGNvbnRleHQpOworCisgICAgaWYgKCFhcmdzLmF0RW5kKCkpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIENTU0ZpbHRlckltYWdlVmFsdWU6
OmNyZWF0ZShpbWFnZVZhbHVlLnJlbGVhc2VOb25OdWxsKCksIGZpbHRlclZhbHVlLnJlbGVhc2VO
b25OdWxsKCkpOworfQorCiBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lR2VuZXJhdGVk
SW1hZ2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlckNvbnRleHQgY29udGV4
dCkKIHsKICAgICBDU1NWYWx1ZUlEIGlkID0gcmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKTsKQEAg
LTExMTcsNyArMTEzMiw4IEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVHZW5lcmF0
ZWRJbWFnZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyCiAgICAgICAgIHJlc3Vs
dCA9IGNvbnN1bWVXZWJraXRDYW52YXMoYXJncyk7CiAgICAgZWxzZSBpZiAoaWQgPT0gQ1NTVmFs
dWVXZWJraXROYW1lZEltYWdlKQogICAgICAgICByZXN1bHQgPSBjb25zdW1lV2Via2l0TmFtZWRJ
bWFnZShhcmdzKTsKLQorICAgIGVsc2UgaWYgKGlkID09IENTU1ZhbHVlV2Via2l0RmlsdGVyIHx8
IGlkID09IENTU1ZhbHVlRmlsdGVyKQorICAgICAgICByZXN1bHQgPSBjb25zdW1lRmlsdGVySW1h
Z2UoYXJncywgY29udGV4dCk7CiAgICAgaWYgKCFyZXN1bHQgfHwgIWFyZ3MuYXRFbmQoKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmFuZ2UgPSByYW5nZUNvcHk7CkBAIC0xMTYxLDcg
KzExNzcsMTE0IEBAIHN0YXRpYyBib29sIGlzR2VuZXJhdGVkSW1hZ2UoQ1NTVmFsdWVJRCBpZCkK
ICAgICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVXZWJraXRMaW5lYXJHcmFkaWVudCB8fCBpZCA9PSBD
U1NWYWx1ZVdlYmtpdFJhZGlhbEdyYWRpZW50CiAgICAgICAgIHx8IGlkID09IENTU1ZhbHVlV2Vi
a2l0UmVwZWF0aW5nTGluZWFyR3JhZGllbnQgfHwgaWQgPT0gQ1NTVmFsdWVXZWJraXRSZXBlYXRp
bmdSYWRpYWxHcmFkaWVudAogICAgICAgICB8fCBpZCA9PSBDU1NWYWx1ZVdlYmtpdEdyYWRpZW50
IHx8IGlkID09IENTU1ZhbHVlV2Via2l0Q3Jvc3NGYWRlIHx8IGlkID09IENTU1ZhbHVlV2Via2l0
Q2FudmFzCi0gICAgICAgIHx8IGlkID09IENTU1ZhbHVlQ3Jvc3NGYWRlIHx8IGlkID09IENTU1Zh
bHVlV2Via2l0TmFtZWRJbWFnZTsKKyAgICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVDcm9zc0ZhZGUg
fHwgaWQgPT0gQ1NTVmFsdWVXZWJraXROYW1lZEltYWdlIHx8IGlkID09IENTU1ZhbHVlV2Via2l0
RmlsdGVyIHx8IGlkID09IENTU1ZhbHVlRmlsdGVyOworfQorCitSZWZQdHI8Q1NTRnVuY3Rpb25W
YWx1ZT4gY29uc3VtZUZpbHRlckZ1bmN0aW9uKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBj
b25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQoreworICAgIENTU1ZhbHVlSUQgZmlsdGVy
VHlwZSA9IHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCk7CisgICAgaWYgKGZpbHRlclR5cGUgPCBD
U1NWYWx1ZUludmVydCB8fCBmaWx0ZXJUeXBlID4gQ1NTVmFsdWVEcm9wU2hhZG93KQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIGFyZ3MgPSBjb25zdW1l
RnVuY3Rpb24ocmFuZ2UpOworICAgIFJlZlB0cjxDU1NGdW5jdGlvblZhbHVlPiBmaWx0ZXJWYWx1
ZSA9IENTU0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZShmaWx0ZXJUeXBlKTsKKyAgICBSZWZQdHI8Q1NT
VmFsdWU+IHBhcnNlZFZhbHVlOworCisgICAgaWYgKGZpbHRlclR5cGUgPT0gQ1NTVmFsdWVEcm9w
U2hhZG93KQorICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVTaW5nbGVTaGFkb3coYXJncywg
Y29udGV4dC5tb2RlLCBmYWxzZSwgZmFsc2UpOworICAgIGVsc2UgeworICAgICAgICBpZiAoYXJn
cy5hdEVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIGZpbHRlclZhbHVlOworICAgICAgICBpZiAo
ZmlsdGVyVHlwZSA9PSBDU1NWYWx1ZUJyaWdodG5lc3MpIHsKKyAgICAgICAgICAgIC8vIEZJWE1F
IChjcmJ1Zy5jb20vMzk3MDYxKTogU3VwcG9ydCBjYWxjIGV4cHJlc3Npb25zIGxpa2UgY2FsYygx
MCUgKyAwLjUpCisgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVQZXJjZW50KGFyZ3Ms
IFZhbHVlUmFuZ2VBbGwpOworICAgICAgICAgICAgaWYgKCFwYXJzZWRWYWx1ZSkKKyAgICAgICAg
ICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVOdW1iZXIoYXJncywgVmFsdWVSYW5nZUFsbCk7
CisgICAgICAgIH0gZWxzZSBpZiAoZmlsdGVyVHlwZSA9PSBDU1NWYWx1ZUh1ZVJvdGF0ZSkKKyAg
ICAgICAgICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZUFuZ2xlKGFyZ3MsIGNvbnRleHQubW9kZSwg
VW5pdGxlc3NRdWlyazo6Rm9yYmlkKTsKKyAgICAgICAgZWxzZSBpZiAoZmlsdGVyVHlwZSA9PSBD
U1NWYWx1ZUJsdXIpCisgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVMZW5ndGgoYXJn
cywgSFRNTFN0YW5kYXJkTW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICAvLyBGSVhNRSAoY3JidWcuY29tLzM5NzA2MSk6IFN1cHBvcnQgY2Fs
YyBleHByZXNzaW9ucyBsaWtlIGNhbGMoMTAlICsgMC41KQorICAgICAgICAgICAgcGFyc2VkVmFs
dWUgPSBjb25zdW1lUGVyY2VudChhcmdzLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworICAgICAg
ICAgICAgaWYgKCFwYXJzZWRWYWx1ZSkKKyAgICAgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IGNv
bnN1bWVOdW1iZXIoYXJncywgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAgICAgICAgICAgIGlm
IChwYXJzZWRWYWx1ZSAmJiBmaWx0ZXJUeXBlICE9IENTU1ZhbHVlU2F0dXJhdGUgJiYgZmlsdGVy
VHlwZSAhPSBDU1NWYWx1ZUNvbnRyYXN0KSB7CisgICAgICAgICAgICAgICAgYm9vbCBpc1BlcmNl
bnRhZ2UgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnBhcnNlZFZhbHVlKS5pc1BlcmNl
bnRhZ2UoKTsKKyAgICAgICAgICAgICAgICBkb3VibGUgbWF4QWxsb3dlZCA9IGlzUGVyY2VudGFn
ZSA/IDEwMC4wIDogMS4wOworICAgICAgICAgICAgICAgIGlmIChkb3duY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZT4oKnBhcnNlZFZhbHVlKS5kb3VibGVWYWx1ZSgpID4gbWF4QWxsb3dlZCkKKyAgICAg
ICAgICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG1h
eEFsbG93ZWQsIGlzUGVyY2VudGFnZSA/IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNT
U19QRVJDRU5UQUdFIDogQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX05VTUJFUik7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKCFwYXJzZWRWYWx1ZSB8
fCAhYXJncy5hdEVuZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBmaWx0ZXJWYWx1
ZS0+YXBwZW5kKCpwYXJzZWRWYWx1ZSk7CisgICAgcmV0dXJuIGZpbHRlclZhbHVlOworfQorCitS
ZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVGaWx0ZXIoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2Us
IGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCit7CisgICAgaWYgKHJhbmdlLnBlZWso
KS5pZCgpID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5n
ZSk7CisKKyAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVh
dGVTcGFjZVNlcGFyYXRlZCgpOworICAgIGRvIHsKKyAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiBm
aWx0ZXJWYWx1ZSA9IGNvbnN1bWVVcmwocmFuZ2UpOworICAgICAgICBpZiAoIWZpbHRlclZhbHVl
KSB7CisgICAgICAgICAgICBmaWx0ZXJWYWx1ZSA9IGNvbnN1bWVGaWx0ZXJGdW5jdGlvbihyYW5n
ZSwgY29udGV4dCk7CisgICAgICAgICAgICBpZiAoIWZpbHRlclZhbHVlKQorICAgICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisgICAgICAgIGxpc3QtPmFwcGVuZChmaWx0
ZXJWYWx1ZS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICB9IHdoaWxlICghcmFuZ2UuYXRFbmQoKSk7
CisKKyAgICByZXR1cm4gbGlzdDsKK30KKworUmVmUHRyPENTU1NoYWRvd1ZhbHVlPiBjb25zdW1l
U2luZ2xlU2hhZG93KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNz
c1BhcnNlck1vZGUsIGJvb2wgYWxsb3dJbnNldCwgYm9vbCBhbGxvd1NwcmVhZCkKK3sKKyAgICBS
ZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHN0eWxlOworICAgIFJlZlB0cjxDU1NQcmltaXRpdmVW
YWx1ZT4gY29sb3I7CisKKyAgICBpZiAocmFuZ2UuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlSW5zZXQpIHsKKyAg
ICAgICAgaWYgKCFhbGxvd0luc2V0KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
ICAgIHN0eWxlID0gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICB9CisgICAgY29sb3IgPSBjb25z
dW1lQ29sb3IocmFuZ2UsIGNzc1BhcnNlck1vZGUpOworCisgICAgUmVmUHRyPENTU1ByaW1pdGl2
ZVZhbHVlPiBob3Jpem9udGFsT2Zmc2V0ID0gY29uc3VtZUxlbmd0aChyYW5nZSwgY3NzUGFyc2Vy
TW9kZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgaWYgKCFob3Jpem9udGFsT2Zmc2V0KQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmVydGlj
YWxPZmZzZXQgPSBjb25zdW1lTGVuZ3RoKHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdl
QWxsKTsKKyAgICBpZiAoIXZlcnRpY2FsT2Zmc2V0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gYmx1clJhZGl1cyA9IGNvbnN1bWVMZW5n
dGgocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwpOworICAgIFJlZlB0cjxDU1NQ
cmltaXRpdmVWYWx1ZT4gc3ByZWFkRGlzdGFuY2U7CisgICAgaWYgKGJsdXJSYWRpdXMpIHsKKyAg
ICAgICAgLy8gQmx1ciByYWRpdXMgbXVzdCBiZSBub24tbmVnYXRpdmUuCisgICAgICAgIGlmIChi
bHVyUmFkaXVzLT5kb3VibGVWYWx1ZSgpIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworICAgICAgICBpZiAoYWxsb3dTcHJlYWQpCisgICAgICAgICAgICBzcHJlYWREaXN0YW5jZSA9
IGNvbnN1bWVMZW5ndGgocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwpOworICAg
IH0KKworICAgIGlmICghcmFuZ2UuYXRFbmQoKSkgeworICAgICAgICBpZiAoIWNvbG9yKQorICAg
ICAgICAgICAgY29sb3IgPSBjb25zdW1lQ29sb3IocmFuZ2UsIGNzc1BhcnNlck1vZGUpOworICAg
ICAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVJbnNldCkgeworICAgICAgICAg
ICAgaWYgKCFhbGxvd0luc2V0IHx8IHN0eWxlKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgICAgICAgICAgc3R5bGUgPSBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgICAgICB9
CisgICAgfQorCisgICAgLy8gV2UgcGFzcyBSZWZQdHJzLCBzaW5jZSB0aGV5IGNhbiBhY3R1YWxs
eSBiZSBudWxsLgorICAgIHJldHVybiBDU1NTaGFkb3dWYWx1ZTo6Y3JlYXRlKFdURk1vdmUoaG9y
aXpvbnRhbE9mZnNldCksIFdURk1vdmUodmVydGljYWxPZmZzZXQpLCBXVEZNb3ZlKGJsdXJSYWRp
dXMpLCBXVEZNb3ZlKHNwcmVhZERpc3RhbmNlKSwgV1RGTW92ZShzdHlsZSksIFdURk1vdmUoY29s
b3IpKTsKIH0KIAogUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lSW1hZ2UoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgcmFuZ2UsIENTU1BhcnNlckNvbnRleHQgY29udGV4dCwgQ29uc3VtZUdlbmVyYXRlZElt
YWdlIGdlbmVyYXRlZEltYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNl
ci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmgKaW5kZXggNjg3NDAyYzZhZTUzOTg2NWUyNGY5MDk4
MzM0MGU2ZDAzZDk3YjU5NC4uYjdlZjA1Y2E2YjYyY2E2MmQwNWU0Nzg0ZjJjZmZmZDc0NTk3ZTcw
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNl
ckhlbHBlcnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFy
c2VySGVscGVycy5oCkBAIC0zMiw5ICszMiwxMSBAQAogI2RlZmluZSBDU1NQcm9wZXJ0eVBhcnNl
ckhlbHBlcnNfaAogCiAjaW5jbHVkZSAiQ1NTQ3VzdG9tSWRlbnRWYWx1ZS5oIgorI2luY2x1ZGUg
IkNTU0Z1bmN0aW9uVmFsdWUuaCIKICNpbmNsdWRlICJDU1NQYXJzZXJNb2RlLmgiCiAjaW5jbHVk
ZSAiQ1NTUGFyc2VyVG9rZW5SYW5nZS5oIgogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgi
CisjaW5jbHVkZSAiQ1NTU2hhZG93VmFsdWUuaCIKICNpbmNsdWRlICJMZW5ndGguaCIgLy8gRm9y
IFZhbHVlUmFuZ2UKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtOTAsNiArOTIsMTAgQEAgZW51
bSBjbGFzcyBDb25zdW1lR2VuZXJhdGVkSW1hZ2UgewogUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1l
SW1hZ2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIENTU1BhcnNlckNvbnRleHQsIENvbnN1bWVHZW5l
cmF0ZWRJbWFnZSA9IENvbnN1bWVHZW5lcmF0ZWRJbWFnZTo6QWxsb3cpOwogUmVmUHRyPENTU1Zh
bHVlPiBjb25zdW1lSW1hZ2VPck5vbmUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIENTU1BhcnNlckNv
bnRleHQpOwogCitSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVGaWx0ZXIoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmKTsKK1JlZlB0cjxDU1NGdW5jdGlvblZhbHVl
PiBjb25zdW1lRmlsdGVyRnVuY3Rpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIGNvbnN0IENTU1Bh
cnNlckNvbnRleHQmKTsKK1JlZlB0cjxDU1NTaGFkb3dWYWx1ZT4gY29uc3VtZVNpbmdsZVNoYWRv
dyhDU1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2VyTW9kZSwgYm9vbCBhbGxvd0luc2V0LCBi
b29sIGFsbG93U3ByZWFkKTsKKwogLy8gVGVtcGxhdGUgaW1wbGVtZW50YXRpb25zIGFyZSBhdCB0
aGUgYm90dG9tIG9mIHRoZSBmaWxlIGZvciByZWFkYWJpbGl0eS4KIAogdGVtcGxhdGU8dHlwZW5h
bWUuLi4gZW1wdHlCYXNlQ2FzZT4gaW5saW5lIGJvb2wgaWRlbnRNYXRjaGVzKENTU1ZhbHVlSUQp
IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZDM3YTM1YTA1MGVjY2UyNzgzZTg4NDkxNzdiNDVi
MmVlNDhiMmFjYS4uOTgyN2YzNGEyY2JmMzFkMWJhZmI2NTZjNWYyYWNlNjNlM2Y1NTk5NiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE3IEBACisyMDE2LTExLTExICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxl
LmNvbT4KKworICAgICAgICBIYW5kbGUgZmlsdGVyKCkgaW1hZ2UgdHlwZSBpbiBuZXcgQ1NTIFBh
cnNlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0
NjczCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbXMvMjkyMzEzNzY+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHRoZSB0ZXN0IHRoYXQgYWxs
b3dzIGEgc3RyaW5nIHZhbHVlIGZvciB0aGUKKyAgICAgICAgaW1hZ2Ugc291cmNlIHJhdGhlciB0
aGFuIGEgdXJsKCkuCisKKyAgICAgICAgKiBmYXN0L2ZpbHRlci1pbWFnZS9maWx0ZXItaW1hZ2Ut
YW5pbWF0aW9uLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2ZpbHRlci1pbWFnZS9maWx0
ZXItaW1hZ2UtYW5pbWF0aW9uLmh0bWw6CisKIDIwMTYtMTEtMTAgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjA4NTIyKTogTGF5b3V0VGVz
dCBmYXN0L2xvYWRlci9yZWxvYWQtemVyby1ieXRlLXBsdWdpbi5odG1sIGlzIGEgZmxha3kgZmFp
bHVyZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9maWx0ZXItaW1hZ2UvZmlsdGVyLWlt
YWdlLWFuaW1hdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2ZpbHRlci1pbWFn
ZS9maWx0ZXItaW1hZ2UtYW5pbWF0aW9uLWV4cGVjdGVkLnR4dAppbmRleCA2MTE4Y2NjNzVkZTdl
YzJjNmZiMDFhMDVhMTAzOWIxNzBjNzIxOWExLi5mNTNlZTVkYTUzNWJiZDJhNjU1N2VmMTY0NTZk
MTE3OGM4ZWU0NmMyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbHRlci1pbWFnZS9m
aWx0ZXItaW1hZ2UtYW5pbWF0aW9uLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2ZpbHRlci1pbWFnZS9maWx0ZXItaW1hZ2UtYW5pbWF0aW9uLWV4cGVjdGVkLnR4dApAQCAtMSwx
MCArMSw5IEBACi0gICAgICAgICAgICAKKyAgICAgICAgICAgCiBQQVNTIC0gImJhY2tncm91bmRJ
bWFnZSIgcHJvcGVydHkgZm9yICJicmlnaHRuZXNzIiBlbGVtZW50IGF0IDFzIHNhdyBzb21ldGhp
bmcgY2xvc2UgdG86IGZpbHRlcih1cmwoaW1hZ2Uuc3ZnKSwgYnJpZ2h0bmVzcygwLjUpKQogUEFT
UyAtICJiYWNrZ3JvdW5kSW1hZ2UiIHByb3BlcnR5IGZvciAiYmx1ciIgZWxlbWVudCBhdCAxcyBz
YXcgc29tZXRoaW5nIGNsb3NlIHRvOiBmaWx0ZXIodXJsKGltYWdlLnN2ZyksIGJsdXIoNXB4KSkK
IFBBU1MgLSAiYmFja2dyb3VuZEltYWdlIiBwcm9wZXJ0eSBmb3IgImdyYXlzY2FsZSIgZWxlbWVu
dCBhdCAxcyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiBmaWx0ZXIodXJsKGltYWdlLnN2ZyksIGdy
YXlzY2FsZSgwLjUpKQogUEFTUyAtICJiYWNrZ3JvdW5kSW1hZ2UiIHByb3BlcnR5IGZvciAic2Vw
aWEiIGVsZW1lbnQgYXQgMXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogZmlsdGVyKHVybChpbWFn
ZS5zdmcpLCBzZXBpYSgwLjUpKQogUEFTUyAtICJiYWNrZ3JvdW5kSW1hZ2UiIHByb3BlcnR5IGZv
ciAibm8iIGVsZW1lbnQgYXQgMXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogZmlsdGVyKHVybChi
bHVlLnN2ZyksIHNlcGlhKDApKQotUEFTUyAtICJiYWNrZ3JvdW5kSW1hZ2UiIHByb3BlcnR5IGZv
ciAic3RyaW5nIiBlbGVtZW50IGF0IDFzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IGZpbHRlcih1
cmwoaW1hZ2Uuc3ZnKSwgc2VwaWEoMC41KSkKIFBBU1MgLSAiYmFja2dyb3VuZEltYWdlIiBwcm9w
ZXJ0eSBmb3IgIm11bHRpcGxlMSIgZWxlbWVudCBhdCAxcyBzYXcgc29tZXRoaW5nIGNsb3NlIHRv
OiBmaWx0ZXIodXJsKGltYWdlLnN2ZyksIHNlcGlhKDAuNSkgYmx1cigxLjVweCkgaHVlLXJvdGF0
ZSgyMi41ZGVnKSkKIFBBU1MgLSAiYmFja2dyb3VuZEltYWdlIiBwcm9wZXJ0eSBmb3IgIm11bHRp
cGxlMiIgZWxlbWVudCBhdCAxcyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiBmaWx0ZXIodXJsKGlt
YWdlLnN2ZyksIGNvbnRyYXN0KDAuNSkgYmx1cigxLjVweCkgaHVlLXJvdGF0ZSgyMi41ZGVnKSkK
IFBBU1MgLSAiYmFja2dyb3VuZEltYWdlIiBwcm9wZXJ0eSBmb3IgInVybGZpbHRlciIgZWxlbWVu
dCBhdCAxcyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiBmaWx0ZXIodXJsKGltYWdlLnN2ZyksIHNl
cGlhKDAuMjUpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9maWx0ZXItaW1hZ2UvZmls
dGVyLWltYWdlLWFuaW1hdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9maWx0ZXItaW1hZ2Uv
ZmlsdGVyLWltYWdlLWFuaW1hdGlvbi5odG1sCmluZGV4IDI2MjIzMGMwYjY4ZWQ0ZDVjMTA1YWFl
YzY0NjU4ODE2NTIyM2FkNmIuLjYzMDdiYWJiZGNiODI3NWUxY2IwNmIzMDE0YTI4NGMyNTk4NmE0
OGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZmlsdGVyLWltYWdlL2ZpbHRlci1pbWFn
ZS1hbmltYXRpb24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ZpbHRlci1pbWFnZS9maWx0
ZXItaW1hZ2UtYW5pbWF0aW9uLmh0bWwKQEAgLTMxLDEwICszMSw2IEBACiAgICAgICAtd2Via2l0
LWFuaW1hdGlvbjogbm8tYW5pbSAycyBsaW5lYXI7CiAgICAgfQogCi0gICAgI3N0cmluZyB7Ci0g
ICAgICAtd2Via2l0LWFuaW1hdGlvbjogc3RyaW5nLWFuaW0gMnMgbGluZWFyOwotICAgIH0KLQog
ICAgICNtdWx0aXBsZTEgewogICAgICAgLXdlYmtpdC1hbmltYXRpb246IG11bHRpcGxlLWFuaW0x
IDJzIGxpbmVhcjsKICAgICB9CkBAIC04OCwxMSArODQsNiBAQAogICAgICAgICB0byAgIHsgYmFj
a2dyb3VuZC1pbWFnZTogZmlsdGVyKHVybChyZXNvdXJjZXMvYmx1ZS5zdmcpLCBzZXBpYSgwKSk7
IH0KICAgICB9CiAKLSAgICBALXdlYmtpdC1rZXlmcmFtZXMgc3RyaW5nLWFuaW0gewotICAgICAg
ICBmcm9tIHsgYmFja2dyb3VuZC1pbWFnZTogZmlsdGVyKCdyZXNvdXJjZXMvaW1hZ2Uuc3ZnJywg
c2VwaWEoMSkpOyB9Ci0gICAgICAgIHRvICAgeyBiYWNrZ3JvdW5kLWltYWdlOiBmaWx0ZXIodXJs
KHJlc291cmNlcy9pbWFnZS5zdmcpLCBzZXBpYSgwKSk7IH0KLSAgICB9Ci0KICAgICBALXdlYmtp
dC1rZXlmcmFtZXMgbXVsdGlwbGUtYW5pbTEgewogICAgICAgICBmcm9tIHsgYmFja2dyb3VuZC1p
bWFnZTogZmlsdGVyKHVybChyZXNvdXJjZXMvaW1hZ2Uuc3ZnKSwgc2VwaWEoMC4yNSkgYmx1cigz
cHgpIGh1ZS1yb3RhdGUoNDVkZWcpKTsgfQogICAgICAgICB0byAgIHsgYmFja2dyb3VuZC1pbWFn
ZTogZmlsdGVyKHVybChyZXNvdXJjZXMvaW1hZ2Uuc3ZnKSwgc2VwaWEoMC43NSkpOyB9CkBAIC0x
MzcsNyArMTI4LDYgQEAKICAgICAgIFsiZ3JheXNjYWxlLWFuaW0iLCAgMSwgImdyYXlzY2FsZSIs
ICJiYWNrZ3JvdW5kSW1hZ2UiLCAiZmlsdGVyKHVybChpbWFnZS5zdmcpLCBncmF5c2NhbGUoMC41
KSkiLCAwLjA1XSwKICAgICAgIFsic2VwaWEtYW5pbSIsICAxLCAic2VwaWEiLCAiYmFja2dyb3Vu
ZEltYWdlIiwgImZpbHRlcih1cmwoaW1hZ2Uuc3ZnKSwgc2VwaWEoMC41KSkiLCAwLjA1XSwKICAg
ICAgIFsibm8tYW5pbSIsICAxLCAibm8iLCAiYmFja2dyb3VuZEltYWdlIiwgImZpbHRlcih1cmwo
Ymx1ZS5zdmcpLCBzZXBpYSgwKSkiLCAwXSwKLSAgICAgIFsic3RyaW5nLWFuaW0iLCAgMSwgInN0
cmluZyIsICJiYWNrZ3JvdW5kSW1hZ2UiLCAiZmlsdGVyKHVybChpbWFnZS5zdmcpLCBzZXBpYSgw
LjUpKSIsIDBdLAogICAgICAgWyJtdWx0aXBsZS1hbmltMSIsICAxLCAibXVsdGlwbGUxIiwgImJh
Y2tncm91bmRJbWFnZSIsICJmaWx0ZXIodXJsKGltYWdlLnN2ZyksIHNlcGlhKDAuNSkgYmx1cigx
LjVweCkgaHVlLXJvdGF0ZSgyMi41ZGVnKSkiLCAwLjA1XSwKICAgICAgIFsibXVsdGlwbGUtYW5p
bTIiLCAgMSwgIm11bHRpcGxlMiIsICJiYWNrZ3JvdW5kSW1hZ2UiLCAiZmlsdGVyKHVybChpbWFn
ZS5zdmcpLCBjb250cmFzdCgwLjUpIGJsdXIoMS41cHgpIGh1ZS1yb3RhdGUoMjIuNWRlZykpIiwg
MC4wNV0sCiAgICAgICBbInVybC10by1maWx0ZXItYW5pbSIsICAxLCAidXJsZmlsdGVyIiwgImJh
Y2tncm91bmRJbWFnZSIsICIgZmlsdGVyKHVybChpbWFnZS5zdmcpLCBzZXBpYSgwLjI1KSkiLCAw
LjA1XSwKQEAgLTE1OCw3ICsxNDgsNiBAQAogPGRpdiBjbGFzcz0iYm94IiBpZD0iZ3JheXNjYWxl
Ij48L2Rpdj4KIDxkaXYgY2xhc3M9ImJveCIgaWQ9InNlcGlhIj48L2Rpdj4KIDxkaXYgY2xhc3M9
ImJveCIgaWQ9Im5vIj48L2Rpdj4KLTxkaXYgY2xhc3M9ImJveCIgaWQ9InN0cmluZyI+PC9kaXY+
CiA8ZGl2IGNsYXNzPSJib3giIGlkPSJtdWx0aXBsZTEiPjwvZGl2PgogPGRpdiBjbGFzcz0iYm94
IiBpZD0ibXVsdGlwbGUyIj48L2Rpdj4KIDxkaXYgY2xhc3M9ImJveCIgaWQ9InVybGZpbHRlciI+
PC9kaXY+Cg==
</data>
<flag name="review"
          id="317258"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>