<?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>160487</bug_id>
          
          <creation_ts>2016-08-02 19:54:32 -0700</creation_ts>
          <short_desc>Add support for wrapper types in dictionaries</short_desc>
          <delta_ts>2016-08-04 15:03:49 -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>Bindings</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=160480</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=160511</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1216757</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-08-02 19:54:32 -0700</bug_when>
    <thetext>Add support for wrapper types in dictionaries</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216758</commentid>
    <comment_count>1</comment_count>
      <attachid>285184</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-08-02 19:56:26 -0700</bug_when>
    <thetext>Created attachment 285184
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216768</commentid>
    <comment_count>2</comment_count>
      <attachid>285186</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-08-02 20:28:34 -0700</bug_when>
    <thetext>Created attachment 285186
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216769</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-08-02 20:29:47 -0700</bug_when>
    <thetext>@Darin / @Sam: What do you think of this approach?
@Simon: Is this sufficient to support your use cases?

I have verified that the generated code builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216780</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-08-02 21:13:29 -0700</bug_when>
    <thetext>What I need to work is:
https://wicg.github.io/IntersectionObserver/#intersection-observer-init
and
https://wicg.github.io/IntersectionObserver/#intersection-observer-entry</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216787</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-08-02 21:23:11 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; What I need to work is:
&gt; https://wicg.github.io/IntersectionObserver/#intersection-observer-init
&gt; and
&gt; https://wicg.github.io/IntersectionObserver/#intersection-observer-entry

Ok, this patch gets us closer but you will still have trouble with the union type because we don&apos;t support unions at all in the bindings generator (not just in dictionaries).

Honestly, I would suggest using the &quot;Dictionary&quot; type in the IDL and deal with the JSDictionary type manually in the implementation for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216790</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-08-02 21:28:22 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; What I need to work is:
&gt; &gt; https://wicg.github.io/IntersectionObserver/#intersection-observer-init
&gt; &gt; and
&gt; &gt; https://wicg.github.io/IntersectionObserver/#intersection-observer-entry
&gt; 
&gt; Ok, this patch gets us closer but you will still have trouble with the union
&gt; type because we don&apos;t support unions at all in the bindings generator (not
&gt; just in dictionaries).
&gt; 
&gt; Honestly, I would suggest using the &quot;Dictionary&quot; type in the IDL and deal
&gt; with the JSDictionary type manually in the implementation for now.

Or we could maybe use &apos;any&apos; type for the ´threshold&apos; dictionary member for now. If it does not work yet it would be trivial to add support for ´any&apos; type in dictionaries. It would pass a JSValue to the implementation and the implementation would need to take care of converting this value into either a double or a sequence of double.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216798</commentid>
    <comment_count>7</comment_count>
      <attachid>285186</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-08-02 22:16:57 -0700</bug_when>
    <thetext>Comment on attachment 285186
Patch

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

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:1022
&gt; +            # FIXME: Ideally we would pass non-nullable wrapper types by reference. However, we currently
&gt; +            # cannot have references in the struct on native side because this function returns { } in case
&gt; +            # of error.

I suppose this could be fixed by making the return type of convert be an Optional just like the type of convertOptional and use Nullopt when we are throwing an exception. If that doesn’t hurt performance too badly it might be worth doing. Could even make the code calling this more optimal because checking for null is probably more efficient than checking state.hadException().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216803</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-08-02 22:28:04 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Comment on attachment 285186 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=285186&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:1022
&gt; &gt; +            # FIXME: Ideally we would pass non-nullable wrapper types by reference. However, we currently
&gt; &gt; +            # cannot have references in the struct on native side because this function returns { } in case
&gt; &gt; +            # of error.
&gt; 
&gt; I suppose this could be fixed by making the return type of convert be an
&gt; Optional just like the type of convertOptional and use Nullopt when we are
&gt; throwing an exception. If that doesn’t hurt performance too badly it might
&gt; be worth doing. Could even make the code calling this more optimal because
&gt; checking for null is probably more efficient than checking
&gt; state.hadException().

Yes, I had the same thought but it seemed like a bigger change, especially considering we do not have users that need support for non billable wrapper types in dictionaries yet (in Simon&apos;s case the member is nullable. That said, I am happy to incorporate this into my patch tomorrow if you think I should.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216804</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-08-02 22:29:12 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; Comment on attachment 285186 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=285186&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:1022
&gt; &gt; &gt; +            # FIXME: Ideally we would pass non-nullable wrapper types by reference. However, we currently
&gt; &gt; &gt; +            # cannot have references in the struct on native side because this function returns { } in case
&gt; &gt; &gt; +            # of error.
&gt; &gt; 
&gt; &gt; I suppose this could be fixed by making the return type of convert be an
&gt; &gt; Optional just like the type of convertOptional and use Nullopt when we are
&gt; &gt; throwing an exception. If that doesn’t hurt performance too badly it might
&gt; &gt; be worth doing. Could even make the code calling this more optimal because
&gt; &gt; checking for null is probably more efficient than checking
&gt; &gt; state.hadException().
&gt; 
&gt; Yes, I had the same thought but it seemed like a bigger change, especially
&gt; considering we do not have users that need support for non billable wrapper
&gt; types in dictionaries yet (in Simon&apos;s case the member is nullable. That
&gt; said, I am happy to incorporate this into my patch tomorrow if you think I
&gt; should.

s/billable/nullable (darn autocorrect)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216805</commentid>
    <comment_count>10</comment_count>
      <attachid>285186</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-08-02 22:46:35 -0700</bug_when>
    <thetext>Comment on attachment 285186
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:1022
&gt;&gt;&gt;&gt; +            # of error.
&gt;&gt;&gt; 
&gt;&gt;&gt; I suppose this could be fixed by making the return type of convert be an Optional just like the type of convertOptional and use Nullopt when we are throwing an exception. If that doesn’t hurt performance too badly it might be worth doing. Could even make the code calling this more optimal because checking for null is probably more efficient than checking state.hadException().
&gt;&gt; 
&gt;&gt; Yes, I had the same thought but it seemed like a bigger change, especially considering we do not have users that need support for non billable wrapper types in dictionaries yet (in Simon&apos;s case the member is nullable. That said, I am happy to incorporate this into my patch tomorrow if you think I should.
&gt; 
&gt; s/billable/nullable (darn autocorrect)

You could make it an error to ask for a non-nullable wrapper type in a dictionary rather than implementing it with the wrong type. If nobody needs it right now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216924</commentid>
    <comment_count>11</comment_count>
      <attachid>285233</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-08-03 08:54:19 -0700</bug_when>
    <thetext>Created attachment 285233
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216925</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-08-03 08:54:47 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Comment on attachment 285186 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=285186&amp;action=review
&gt; 
&gt; &gt;&gt;&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:1022
&gt; &gt;&gt;&gt;&gt; +            # of error.
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; I suppose this could be fixed by making the return type of convert be an Optional just like the type of convertOptional and use Nullopt when we are throwing an exception. If that doesn’t hurt performance too badly it might be worth doing. Could even make the code calling this more optimal because checking for null is probably more efficient than checking state.hadException().
&gt; &gt;&gt; 
&gt; &gt;&gt; Yes, I had the same thought but it seemed like a bigger change, especially considering we do not have users that need support for non billable wrapper types in dictionaries yet (in Simon&apos;s case the member is nullable. That said, I am happy to incorporate this into my patch tomorrow if you think I should.
&gt; &gt; 
&gt; &gt; s/billable/nullable (darn autocorrect)
&gt; 
&gt; You could make it an error to ask for a non-nullable wrapper type in a
&gt; dictionary rather than implementing it with the wrong type. If nobody needs
&gt; it right now.

Ok, I chose this approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1217611</commentid>
    <comment_count>13</comment_count>
      <attachid>285233</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-08-04 15:03:43 -0700</bug_when>
    <thetext>Comment on attachment 285233
Patch

Clearing flags on attachment: 285233

Committed r204143: &lt;http://trac.webkit.org/changeset/204143&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1217612</commentid>
    <comment_count>14</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-08-04 15:03:49 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285184</attachid>
            <date>2016-08-02 19:56:26 -0700</date>
            <delta_ts>2016-08-02 20:28:29 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>160487_dictionary_wrappers_WIP.patch</filename>
            <type>text/plain</type>
            <size>9373</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydC5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0LmgKaW5kZXggMDgyNDFmZC4u
ZWQ2OTQyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252
ZXJ0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0LmgKQEAg
LTQ5LDYgKzQ5LDkgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gRW5hYmxlSWZGbG9hdGluZ1BvaW50
VHlwZTxULCBPcHRpb25hbDxUPj4gY29udmVydE9wdGlvbmFsKEoKIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFU+IEVuYWJsZUlmSW50ZWdyYWxUeXBlPFQ+IGNvbnZlcnRPcHRpb25hbChK
U0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSwgSW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0
aW9uLCBVJiYgZGVmYXVsdFZhbHVlKTsKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+
IEVuYWJsZUlmRmxvYXRpbmdQb2ludFR5cGU8VD4gY29udmVydE9wdGlvbmFsKEpTQzo6RXhlY1N0
YXRlJiwgSlNDOjpKU1ZhbHVlLCBTaG91bGRBbGxvd05vbkZpbml0ZSwgVSYmIGRlZmF1bHRWYWx1
ZSk7CiAKK2VudW0gY2xhc3MgSXNOdWxsYWJsZSB7IE5vLCBZZXMgfTsKK3RlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIEpTVD4gVCBjb252ZXJ0V3JhcHBlclR5cGUoSlNDOjpFeGVjU3RhdGUm
LCBKU0M6OkpTVmFsdWUsIElzTnVsbGFibGUpOworCiAvLyBUaGlzIGlzIHdoZXJlIHRoZSBpbXBs
ZW1lbnRhdGlvbiBvZiB0aGUgdGhpbmdzIGRlY2xhcmVkIGFib3ZlIGJlZ2luczoKIAogdGVtcGxh
dGU8dHlwZW5hbWUgVD4gVCBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1Zh
bHVlIHZhbHVlKQpAQCAtNjYsNiArNjksMTQgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5l
IEVuYWJsZUlmRmxvYXRpbmdQb2ludFR5cGU8VD4gY29udmVydChKU0M6OkV4ZWNTdGF0ZSYKICAg
ICByZXR1cm4gQ29udmVydGVyPFQ+Ojpjb252ZXJ0KHN0YXRlLCB2YWx1ZSwgYWxsb3cpOwogfQog
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBKU1Q+IFQqIGNvbnZlcnRXcmFwcGVyVHlw
ZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgSXNOdWxsYWJsZSBp
c051bGxhYmxlKQoreworICAgIFQqIG9iamVjdCA9IEpTVDo6dG9XcmFwcGVkKHZhbHVlKTsKKyAg
ICBpZiAoIW9iamVjdCAmJiAoaXNOdWxsYWJsZSA9PSBJc051bGxhYmxlOjpObyB8fCAhdmFsdWUu
aXNVbmRlZmluZWRPck51bGwoKSkpCisgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7Cisg
ICAgcmV0dXJuIG9iamVjdDsKK30KKwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHR5cGVu
YW1lIENvbnZlcnRlcjxUPjo6T3B0aW9uYWxWYWx1ZSBjb252ZXJ0T3B0aW9uYWwoSlNDOjpFeGVj
U3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUpCiB7CiAgICAgcmV0dXJuIHZhbHVlLmlz
VW5kZWZpbmVkKCkgPyB0eXBlbmFtZSBDb252ZXJ0ZXI8VD46Ok9wdGlvbmFsVmFsdWUoKSA6IGNv
bnZlcnQ8VD4oc3RhdGUsIHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggY2EyODRhNS4uOGMzMWNjNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0K
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0K
QEAgLTk5NywxOSArOTk3LDMzIEBAIHN1YiBHZW5lcmF0ZURpY3Rpb25hcnlJbXBsZW1lbnRhdGlv
bkNvbnRlbnQKICAgICAgICAgICAgICAgICAkcmVzdWx0IC49ICIgICAgaWYgKFVOTElLRUxZKHN0
YXRlLmhhZEV4Y2VwdGlvbigpKSlcbiI7CiAgICAgICAgICAgICAgICAgJHJlc3VsdCAuPSAiICAg
ICAgICByZXR1cm4geyB9O1xuIjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICMgRklYTUU6
IEV2ZW50dWFsbHkgd2Ugd2lsbCB3YW50IHRoaXMgdG8gc2hhcmUgYSBsb3QgbW9yZSBjb2RlIHdp
dGggSlNWYWx1ZVRvTmF0aXZlLgotICAgICAgICAgICAgbXkgJGZ1bmN0aW9uID0gJG1lbWJlci0+
aXNPcHRpb25hbCA/ICJjb252ZXJ0T3B0aW9uYWwiIDogImNvbnZlcnQiOwotICAgICAgICAgICAg
JHJlc3VsdCAuPSAiICAgIGF1dG8gIiAuICRtZW1iZXItPm5hbWUgLiAiID0gIiAuICRmdW5jdGlv
biAuICI8IiAuIEdldE5hdGl2ZVR5cGVGcm9tU2lnbmF0dXJlKCRpbnRlcmZhY2UsICRtZW1iZXIp
IC4gIj4iCi0gICAgICAgICAgICAgICAgLiAiKHN0YXRlLCBvYmplY3QtPmdldCgmc3RhdGUsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCBcIiIgLiAkbWVtYmVyLT5uYW1lIC4gIlwiKSki
Ci0gICAgICAgICAgICAgICAgLiBHZW5lcmF0ZUNvbnZlcnNpb25SdWxlV2l0aExlYWRpbmdDb21t
YSgkaW50ZXJmYWNlLCAkbWVtYmVyKQotICAgICAgICAgICAgICAgIC4gR2VuZXJhdGVEZWZhdWx0
VmFsdWVXaXRoTGVhZGluZ0NvbW1hKCRpbnRlcmZhY2UsICRtZW1iZXIpIC4gIik7XG4iOworICAg
ICAgICAgICAgbXkgJHR5cGUgPSAkbWVtYmVyLT50eXBlOworICAgICAgICAgICAgbXkgJG5hbWUg
PSAkbWVtYmVyLT5uYW1lOworICAgICAgICAgICAgbXkgJHZhbHVlID0gIm9iamVjdC0+Z2V0KCZz
dGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsIFwiJHtuYW1lfVwiKSkiOworICAg
ICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1dyYXBwZXJUeXBlKCRtZW1iZXItPnR5cGUp
KSB7CisgICAgICAgICAgICAgICAgbXkgJG51bGxhYmxlUGFyYW1ldGVyID0gJG1lbWJlci0+aXNO
dWxsYWJsZSA/ICJJc051bGxhYmxlOjpZZXMiIDogIklzTnVsbGFibGU6Ok5vIjsKKyAgICAgICAg
ICAgICAgICAkcmVzdWx0IC49ICIgICAgYXV0byogJG5hbWUgPSBjb252ZXJ0V3JhcHBlclR5cGU8
JHR5cGUsIEpTJHt0eXBlfT4oc3RhdGUsICR2YWx1ZSwgJG51bGxhYmxlUGFyYW1ldGVyKTtcbiI7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICMgRklYTUU6IEV2ZW50dWFs
bHkgd2Ugd2lsbCB3YW50IHRoaXMgdG8gc2hhcmUgYSBsb3QgbW9yZSBjb2RlIHdpdGggSlNWYWx1
ZVRvTmF0aXZlLgorICAgICAgICAgICAgICAgIG15ICRmdW5jdGlvbiA9ICRtZW1iZXItPmlzT3B0
aW9uYWwgPyAiY29udmVydE9wdGlvbmFsIiA6ICJjb252ZXJ0IjsKKyAgICAgICAgICAgICAgICAk
cmVzdWx0IC49ICIgICAgYXV0byAiIC4gJG1lbWJlci0+bmFtZSAuICIgPSAiIC4gJGZ1bmN0aW9u
IC4gIjwiIC4gR2V0TmF0aXZlVHlwZUZyb21TaWduYXR1cmUoJGludGVyZmFjZSwgJG1lbWJlcikg
LiAiPiIKKyAgICAgICAgICAgICAgICAgICAgLiAiKHN0YXRlLCAkdmFsdWUiCisgICAgICAgICAg
ICAgICAgICAgIC4gR2VuZXJhdGVDb252ZXJzaW9uUnVsZVdpdGhMZWFkaW5nQ29tbWEoJGludGVy
ZmFjZSwgJG1lbWJlcikKKyAgICAgICAgICAgICAgICAgICAgLiBHZW5lcmF0ZURlZmF1bHRWYWx1
ZVdpdGhMZWFkaW5nQ29tbWEoJGludGVyZmFjZSwgJG1lbWJlcikgLiAiKTtcbiI7CisgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAkbmVlZEV4Y2VwdGlvbkNoZWNrID0gMTsKICAgICAgICAgfQog
CiAgICAgICAgIG15ICRhcmd1bWVudHMgPSAiIjsKICAgICAgICAgJGNvbW1hID0gIiI7CiAgICAg
ICAgIGZvcmVhY2ggbXkgJG1lbWJlciAoQHskZGljdGlvbmFyeS0+bWVtYmVyc30pIHsKLSAgICAg
ICAgICAgICRhcmd1bWVudHMgLj0gJGNvbW1hIC4gIldURk1vdmUoIiAuICRtZW1iZXItPm5hbWUg
LiAiKSI7CisgICAgICAgICAgICBteSAkdmFsdWU7CisgICAgICAgICAgICBpZiAoJGNvZGVHZW5l
cmF0b3ItPklzV3JhcHBlclR5cGUoJG1lbWJlci0+dHlwZSkpIHsKKyAgICAgICAgICAgICAgICAk
dmFsdWUgPSAkbWVtYmVyLT5pc051bGxhYmxlID8gJG1lbWJlci0+bmFtZSA6ICIqIiAuICRtZW1i
ZXItPm5hbWU7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICR2YWx1ZSA9
ICJXVEZNb3ZlKCIgLiAkbWVtYmVyLT5uYW1lIC4gIikiCisgICAgICAgICAgICB9CisgICAgICAg
ICAgICAkYXJndW1lbnRzIC49ICRjb21tYSAuICR2YWx1ZTsKICAgICAgICAgICAgICRjb21tYSA9
ICIsICI7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9JRExQYXJzZXIucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lE
TFBhcnNlci5wbQppbmRleCA1MDQzMTEyLi5jMTEyYjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbQpAQCAtNjgzLDcgKzY4MywxNCBAQCBzdWIgcGFy
c2VEaWN0aW9uYXJ5TWVtYmVyCiAgICAgICAgICAgICAkbWVtYmVyLT5pc09wdGlvbmFsKDApOwog
ICAgICAgICB9CiAgICAgICAgICRtZW1iZXItPmV4dGVuZGVkQXR0cmlidXRlcygkZXh0ZW5kZWRB
dHRyaWJ1dGVMaXN0KTsKLSAgICAgICAgJG1lbWJlci0+dHlwZSgkc2VsZi0+cGFyc2VUeXBlKCkp
OworICAgICAgICBteSAkdHlwZSA9ICRzZWxmLT5wYXJzZVR5cGUoKTsKKyAgICAgICAgaWYgKHR5
cGVIYXNOdWxsYWJsZVN1ZmZpeCgkdHlwZSkpIHsKKyAgICAgICAgICAgICRtZW1iZXItPmlzTnVs
bGFibGUoMSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAkbWVtYmVyLT5pc051bGxh
YmxlKDApOworICAgICAgICB9CisgICAgICAgICRtZW1iZXItPnR5cGUodHlwZVJlbW92ZU51bGxh
YmxlU3VmZml4KCR0eXBlKSk7CisKICAgICAgICAgbXkgJG5hbWVUb2tlbiA9ICRzZWxmLT5nZXRU
b2tlbigpOwogICAgICAgICAkc2VsZi0+YXNzZXJ0VG9rZW5UeXBlKCRuYW1lVG9rZW4sIElkZW50
aWZpZXJUb2tlbik7CiAgICAgICAgICRtZW1iZXItPm5hbWUoJG5hbWVUb2tlbi0+dmFsdWUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T2JqLmNwcAppbmRleCBjYzM0NjE5Li4xNzViYTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApAQCAtNDUzLDggKzQ1
Myw2IEBAIHRlbXBsYXRlPD4gaW5saW5lIGNvbnN0IGNoYXIqIGV4cGVjdGVkRW51bWVyYXRpb25W
YWx1ZXM8VGVzdE9iajo6Q29uZmlkZW5jZT4oKQogCiB0ZW1wbGF0ZTw+IFRlc3RPYmo6OkRpY3Rp
b25hcnkgY29udmVydDxUZXN0T2JqOjpEaWN0aW9uYXJ5PihFeGVjU3RhdGUmIHN0YXRlLCBKU1Zh
bHVlIHZhbHVlKQogewotICAgIGlmICh2YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAg
ICByZXR1cm4geyB7IH0sIFRlc3RPYmo6OkVudW1UeXBlOjpFbnVtVmFsdWUxLCBUZXN0T2JqOjpF
bnVtVHlwZTo6RW1wdHlTdHJpbmcsICJkZWZhdWx0U3RyaW5nIiwgeyB9LCBmYWxzZSwgeyB9LCB7
IH0sIHsgfSwgeyB9LCAwLCAwLCB7IH0sIHsgfSwgMCwgMCwgeyB9LCB7IH0sIHsgfSwgMCwgeyB9
LCAwLCB7IH0sIDAsIHsgfSwgMCwgeyB9LCAwIH07CiAgICAgYXV0byogb2JqZWN0ID0gdmFsdWUu
Z2V0T2JqZWN0KCk7CiAgICAgaWYgKFVOTElLRUxZKCFvYmplY3QgfHwgb2JqZWN0LT50eXBlKCkg
PT0gUmVnRXhwT2JqZWN0VHlwZSkpIHsKICAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsK
QEAgLTU0Miw3ICs1NDAsMTMgQEAgdGVtcGxhdGU8PiBUZXN0T2JqOjpEaWN0aW9uYXJ5IGNvbnZl
cnQ8VGVzdE9iajo6RGljdGlvbmFyeT4oRXhlY1N0YXRlJiBzdGF0ZSwgSlMKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUuaGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4geyB9OwogICAgIGF1
dG8gdW5zaWduZWRMYXJnZUludGVnZXJXaXRoRGVmYXVsdCA9IGNvbnZlcnRPcHRpb25hbDx1aW50
NjRfdD4oc3RhdGUsIG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygm
c3RhdGUsICJ1bnNpZ25lZExhcmdlSW50ZWdlcldpdGhEZWZhdWx0IikpLCBOb3JtYWxDb252ZXJz
aW9uLCAwKTsKLSAgICByZXR1cm4geyBXVEZNb3ZlKGVudW1lcmF0aW9uVmFsdWVXaXRob3V0RGVm
YXVsdCksIFdURk1vdmUoZW51bWVyYXRpb25WYWx1ZVdpdGhEZWZhdWx0KSwgV1RGTW92ZShlbnVt
ZXJhdGlvblZhbHVlV2l0aEVtcHR5U3RyaW5nRGVmYXVsdCksIFdURk1vdmUoc3RyaW5nV2l0aERl
ZmF1bHQpLCBXVEZNb3ZlKHN0cmluZ1dpdGhvdXREZWZhdWx0KSwgV1RGTW92ZShib29sZWFuV2l0
aERlZmF1bHQpLCBXVEZNb3ZlKGJvb2xlYW5XaXRob3V0RGVmYXVsdCksIFdURk1vdmUoc2VxdWVu
Y2VPZlN0cmluZ3MpLCBXVEZNb3ZlKHJlc3RyaWN0ZWREb3VibGUpLCBXVEZNb3ZlKHVucmVzdHJp
Y3RlZERvdWJsZSksIFdURk1vdmUocmVzdHJpY3RlZERvdWJsZVdpdGhEZWZhdWx0KSwgV1RGTW92
ZSh1bnJlc3RyaWN0ZWREb3VibGVXaXRoRGVmYXVsdCksIFdURk1vdmUocmVzdHJpY3RlZEZsb2F0
KSwgV1RGTW92ZSh1bnJlc3RyaWN0ZWRGbG9hdCksIFdURk1vdmUocmVzdHJpY3RlZEZsb2F0V2l0
aERlZmF1bHQpLCBXVEZNb3ZlKHVucmVzdHJpY3RlZEZsb2F0V2l0aERlZmF1bHQpLCBXVEZNb3Zl
KHNtYWxsSW50ZWdlckNsYW1wZWQpLCBXVEZNb3ZlKHNtYWxsSW50ZWdlcldpdGhEZWZhdWx0KSwg
V1RGTW92ZShzbWFsbFVuc2lnbmVkSW50ZWdlckVuZm9yY2VkUmFuZ2UpLCBXVEZNb3ZlKHNtYWxs
VW5zaWduZWRJbnRlZ2VyV2l0aERlZmF1bHQpLCBXVEZNb3ZlKGludGVnZXIpLCBXVEZNb3ZlKGlu
dGVnZXJXaXRoRGVmYXVsdCksIFdURk1vdmUodW5zaWduZWRJbnRlZ2VyKSwgV1RGTW92ZSh1bnNp
Z25lZEludGVnZXJXaXRoRGVmYXVsdCksIFdURk1vdmUobGFyZ2VJbnRlZ2VyKSwgV1RGTW92ZShs
YXJnZUludGVnZXJXaXRoRGVmYXVsdCksIFdURk1vdmUodW5zaWduZWRMYXJnZUludGVnZXIpLCBX
VEZNb3ZlKHVuc2lnbmVkTGFyZ2VJbnRlZ2VyV2l0aERlZmF1bHQpIH07CisgICAgaWYgKFVOTElL
RUxZKHN0YXRlLmhhZEV4Y2VwdGlvbigpKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICBhdXRv
KiBudWxsYWJsZU5vZGUgPSBjb252ZXJ0V3JhcHBlclR5cGU8Tm9kZSwgSlNOb2RlPihzdGF0ZSwg
b2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgIm51bGxh
YmxlTm9kZSIpKSwgSXNOdWxsYWJsZTo6WWVzKTsKKyAgICBpZiAoVU5MSUtFTFkoc3RhdGUuaGFk
RXhjZXB0aW9uKCkpKQorICAgICAgICByZXR1cm4geyB9OworICAgIGF1dG8qIG5vZGUgPSBjb252
ZXJ0V3JhcHBlclR5cGU8Tm9kZSwgSlNOb2RlPihzdGF0ZSwgb2JqZWN0LT5nZXQoJnN0YXRlLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgIm5vZGUiKSksIElzTnVsbGFibGU6Ok5vKTsK
KyAgICByZXR1cm4geyBXVEZNb3ZlKGVudW1lcmF0aW9uVmFsdWVXaXRob3V0RGVmYXVsdCksIFdU
Rk1vdmUoZW51bWVyYXRpb25WYWx1ZVdpdGhEZWZhdWx0KSwgV1RGTW92ZShlbnVtZXJhdGlvblZh
bHVlV2l0aEVtcHR5U3RyaW5nRGVmYXVsdCksIFdURk1vdmUoc3RyaW5nV2l0aERlZmF1bHQpLCBX
VEZNb3ZlKHN0cmluZ1dpdGhvdXREZWZhdWx0KSwgV1RGTW92ZShib29sZWFuV2l0aERlZmF1bHQp
LCBXVEZNb3ZlKGJvb2xlYW5XaXRob3V0RGVmYXVsdCksIFdURk1vdmUoc2VxdWVuY2VPZlN0cmlu
Z3MpLCBXVEZNb3ZlKHJlc3RyaWN0ZWREb3VibGUpLCBXVEZNb3ZlKHVucmVzdHJpY3RlZERvdWJs
ZSksIFdURk1vdmUocmVzdHJpY3RlZERvdWJsZVdpdGhEZWZhdWx0KSwgV1RGTW92ZSh1bnJlc3Ry
aWN0ZWREb3VibGVXaXRoRGVmYXVsdCksIFdURk1vdmUocmVzdHJpY3RlZEZsb2F0KSwgV1RGTW92
ZSh1bnJlc3RyaWN0ZWRGbG9hdCksIFdURk1vdmUocmVzdHJpY3RlZEZsb2F0V2l0aERlZmF1bHQp
LCBXVEZNb3ZlKHVucmVzdHJpY3RlZEZsb2F0V2l0aERlZmF1bHQpLCBXVEZNb3ZlKHNtYWxsSW50
ZWdlckNsYW1wZWQpLCBXVEZNb3ZlKHNtYWxsSW50ZWdlcldpdGhEZWZhdWx0KSwgV1RGTW92ZShz
bWFsbFVuc2lnbmVkSW50ZWdlckVuZm9yY2VkUmFuZ2UpLCBXVEZNb3ZlKHNtYWxsVW5zaWduZWRJ
bnRlZ2VyV2l0aERlZmF1bHQpLCBXVEZNb3ZlKGludGVnZXIpLCBXVEZNb3ZlKGludGVnZXJXaXRo
RGVmYXVsdCksIFdURk1vdmUodW5zaWduZWRJbnRlZ2VyKSwgV1RGTW92ZSh1bnNpZ25lZEludGVn
ZXJXaXRoRGVmYXVsdCksIFdURk1vdmUobGFyZ2VJbnRlZ2VyKSwgV1RGTW92ZShsYXJnZUludGVn
ZXJXaXRoRGVmYXVsdCksIFdURk1vdmUodW5zaWduZWRMYXJnZUludGVnZXIpLCBXVEZNb3ZlKHVu
c2lnbmVkTGFyZ2VJbnRlZ2VyV2l0aERlZmF1bHQpLCBudWxsYWJsZU5vZGUsICpub2RlIH07CiB9
CiAKIHRlbXBsYXRlPD4gVGVzdE9iajo6RGljdGlvbmFyeVRoYXRTaG91bGROb3RUb2xlcmF0ZU51
bGwgY29udmVydDxUZXN0T2JqOjpEaWN0aW9uYXJ5VGhhdFNob3VsZE5vdFRvbGVyYXRlTnVsbD4o
RXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAppbmRleCA5ZDVjYTE3Li5jZWI2YzAwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRs
CkBAIC00MDMsNiArNDAzLDggQEAgZGljdGlvbmFyeSBUZXN0RGljdGlvbmFyeSB7CiAgICAgbG9u
ZyBsb25nIGxhcmdlSW50ZWdlcldpdGhEZWZhdWx0ID0gMDsKICAgICB1bnNpZ25lZCBsb25nIGxv
bmcgdW5zaWduZWRMYXJnZUludGVnZXI7CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIHVuc2lnbmVk
TGFyZ2VJbnRlZ2VyV2l0aERlZmF1bHQgPSAwOworICAgIE5vZGU/IG51bGxhYmxlTm9kZTsKKyAg
ICByZXF1aXJlZCBOb2RlIG5vZGU7CiB9OwogCiBkaWN0aW9uYXJ5IFRlc3REaWN0aW9uYXJ5VGhh
dFNob3VsZE5vdFRvbGVyYXRlTnVsbCB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285186</attachid>
            <date>2016-08-02 20:28:34 -0700</date>
            <delta_ts>2016-08-03 08:54:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160487-20160802202711.patch</filename>
            <type>text/plain</type>
            <size>10688</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0MDYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTJmMzE4MGE5N2VjMjRi
ZGM5YzM5MmI4ZjAyODIyOGUyMjExMzJlMy4uZjc4NGM2YmEzZTU4ODU1ZWIxODlhMDEyZTljZTMy
NzIwOGU5OGE5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE2LTA4LTAyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHdy
YXBwZXIgdHlwZXMgaW4gZGljdGlvbmFyaWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA0ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Igd3JhcHBlciB0eXBlcyBpbiBkaWN0
aW9uYXJpZXMuIEJvdGggbnVsbGFibGUgYW5kCisgICAgICAgIG5vbi1udWxsYWJsZSB0eXBlcyBh
cmUgc3VwcG9ydGVkLiBBIFR5cGVFcnJvciBpcyB0aHJvd24gaWYgdGhlCisgICAgICAgIGNvbnZl
cnNpb24gZmFpbHMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCB1cGRhdGVkIGJpbmRpbmdzIHRl
c3RzLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Db252ZXJ0Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpjb252ZXJ0V3JhcHBlclR5cGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVEaWN0aW9uYXJ5SW1wbGVtZW50
YXRpb25Db250ZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbToK
KyAgICAgICAgKHBhcnNlRGljdGlvbmFyeU1lbWJlcik6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0PFRl
c3RPYmo6OkRpY3Rpb25hcnk+KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVz
dE9iai5pZGw6CisKIDIwMTYtMDgtMDIgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxl
LmNvbT4KIAogICAgICAgICBGcmVlemUgdGhlIE9iamVjdGl2ZS1DIERPTSBFdmVudCBhbmQgQ1NT
IGJpbmRpbmdzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNv
bnZlcnQuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydC5oCmluZGV4
IDA4MjQxZmRkYWQxNWRjNGI1ZWFmNGNhY2VmNzJiODJhZjBjNTk0NzYuLmJkMGNkYmZkM2RiOGRl
NzBmY2FiYTJmOGYyZDQ2ZTdjMTBlNjQ3OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NQ29udmVydC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NQ29udmVydC5oCkBAIC00OSw2ICs0OSw5IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IEVu
YWJsZUlmRmxvYXRpbmdQb2ludFR5cGU8VCwgT3B0aW9uYWw8VD4+IGNvbnZlcnRPcHRpb25hbChK
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBFbmFibGVJZkludGVncmFsVHlwZTxU
PiBjb252ZXJ0T3B0aW9uYWwoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUsIEludGVnZXJD
b252ZXJzaW9uQ29uZmlndXJhdGlvbiwgVSYmIGRlZmF1bHRWYWx1ZSk7CiB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVPiBFbmFibGVJZkZsb2F0aW5nUG9pbnRUeXBlPFQ+IGNvbnZlcnRP
cHRpb25hbChKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSwgU2hvdWxkQWxsb3dOb25GaW5p
dGUsIFUmJiBkZWZhdWx0VmFsdWUpOwogCitlbnVtIGNsYXNzIElzTnVsbGFibGUgeyBObywgWWVz
IH07Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBKU1Q+IFQqIGNvbnZlcnRXcmFwcGVy
VHlwZShKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSwgSXNOdWxsYWJsZSk7CisKIC8vIFRo
aXMgaXMgd2hlcmUgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSB0aGluZ3MgZGVjbGFyZWQgYWJv
dmUgYmVnaW5zOgogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIGNvbnZlcnQoSlNDOjpFeGVjU3Rh
dGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUpCkBAIC02Niw2ICs2OSwxNCBAQCB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBpbmxpbmUgRW5hYmxlSWZGbG9hdGluZ1BvaW50VHlwZTxUPiBjb252ZXJ0
KEpTQzo6RXhlY1N0YXRlJgogICAgIHJldHVybiBDb252ZXJ0ZXI8VD46OmNvbnZlcnQoc3RhdGUs
IHZhbHVlLCBhbGxvdyk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEpTVD4g
aW5saW5lIFQqIGNvbnZlcnRXcmFwcGVyVHlwZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6
SlNWYWx1ZSB2YWx1ZSwgSXNOdWxsYWJsZSBpc051bGxhYmxlKQoreworICAgIFQqIG9iamVjdCA9
IEpTVDo6dG9XcmFwcGVkKHZhbHVlKTsKKyAgICBpZiAoIW9iamVjdCAmJiAoaXNOdWxsYWJsZSA9
PSBJc051bGxhYmxlOjpObyB8fCAhdmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkpCisgICAgICAg
IHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgcmV0dXJuIG9iamVjdDsKK30KKwogdGVtcGxh
dGU8dHlwZW5hbWUgVD4gaW5saW5lIHR5cGVuYW1lIENvbnZlcnRlcjxUPjo6T3B0aW9uYWxWYWx1
ZSBjb252ZXJ0T3B0aW9uYWwoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFs
dWUpCiB7CiAgICAgcmV0dXJuIHZhbHVlLmlzVW5kZWZpbmVkKCkgPyB0eXBlbmFtZSBDb252ZXJ0
ZXI8VD46Ok9wdGlvbmFsVmFsdWUoKSA6IGNvbnZlcnQ8VD4oc3RhdGUsIHZhbHVlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5k
ZXggY2EyODRhNTQ1ZWUxMjcwYjljZWM0YmM5ZWIzOTI5YTY4NzBmNjRkZC4uNGM4MmFmMzNmZjkw
MWJkMTNhNGFlNGZkNTljNzQxOWU2OGY3ZWE2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTk5OCwxNyArOTk4LDI4IEBA
IHN1YiBHZW5lcmF0ZURpY3Rpb25hcnlJbXBsZW1lbnRhdGlvbkNvbnRlbnQKICAgICAgICAgICAg
ICAgICAkcmVzdWx0IC49ICIgICAgICAgIHJldHVybiB7IH07XG4iOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgIyBGSVhNRTogRXZlbnR1YWxseSB3ZSB3aWxsIHdhbnQgdGhpcyB0byBzaGFy
ZSBhIGxvdCBtb3JlIGNvZGUgd2l0aCBKU1ZhbHVlVG9OYXRpdmUuCi0gICAgICAgICAgICBteSAk
ZnVuY3Rpb24gPSAkbWVtYmVyLT5pc09wdGlvbmFsID8gImNvbnZlcnRPcHRpb25hbCIgOiAiY29u
dmVydCI7Ci0gICAgICAgICAgICAkcmVzdWx0IC49ICIgICAgYXV0byAiIC4gJG1lbWJlci0+bmFt
ZSAuICIgPSAiIC4gJGZ1bmN0aW9uIC4gIjwiIC4gR2V0TmF0aXZlVHlwZUZyb21TaWduYXR1cmUo
JGludGVyZmFjZSwgJG1lbWJlcikgLiAiPiIKLSAgICAgICAgICAgICAgICAuICIoc3RhdGUsIG9i
amVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsIFwiIiAuICRt
ZW1iZXItPm5hbWUgLiAiXCIpKSIKLSAgICAgICAgICAgICAgICAuIEdlbmVyYXRlQ29udmVyc2lv
blJ1bGVXaXRoTGVhZGluZ0NvbW1hKCRpbnRlcmZhY2UsICRtZW1iZXIpCi0gICAgICAgICAgICAg
ICAgLiBHZW5lcmF0ZURlZmF1bHRWYWx1ZVdpdGhMZWFkaW5nQ29tbWEoJGludGVyZmFjZSwgJG1l
bWJlcikgLiAiKTtcbiI7CisgICAgICAgICAgICBteSAkdHlwZSA9ICRtZW1iZXItPnR5cGU7Cisg
ICAgICAgICAgICBteSAkbmFtZSA9ICRtZW1iZXItPm5hbWU7CisgICAgICAgICAgICBteSAkdmFs
dWUgPSAib2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwg
XCIke25hbWV9XCIpKSI7CisgICAgICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzV3JhcHBl
clR5cGUoJG1lbWJlci0+dHlwZSkpIHsKKyAgICAgICAgICAgICAgICBteSAkbnVsbGFibGVQYXJh
bWV0ZXIgPSAkbWVtYmVyLT5pc051bGxhYmxlID8gIklzTnVsbGFibGU6OlllcyIgOiAiSXNOdWxs
YWJsZTo6Tm8iOworICAgICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJKUyR7dHlwZX0u
aCIpOworICAgICAgICAgICAgICAgICRyZXN1bHQgLj0gIiAgICBhdXRvKiAkbmFtZSA9IGNvbnZl
cnRXcmFwcGVyVHlwZTwkdHlwZSwgSlMke3R5cGV9PihzdGF0ZSwgJHZhbHVlLCAkbnVsbGFibGVQ
YXJhbWV0ZXIpO1xuIjsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbXkg
JGZ1bmN0aW9uID0gJG1lbWJlci0+aXNPcHRpb25hbCA/ICJjb252ZXJ0T3B0aW9uYWwiIDogImNv
bnZlcnQiOworICAgICAgICAgICAgICAgICRyZXN1bHQgLj0gIiAgICBhdXRvICRuYW1lID0gJHtm
dW5jdGlvbn08IiAuIEdldE5hdGl2ZVR5cGVGcm9tU2lnbmF0dXJlKCRpbnRlcmZhY2UsICRtZW1i
ZXIpIC4gIj4oc3RhdGUsICR2YWx1ZSIKKyAgICAgICAgICAgICAgICAgICAgLiBHZW5lcmF0ZUNv
bnZlcnNpb25SdWxlV2l0aExlYWRpbmdDb21tYSgkaW50ZXJmYWNlLCAkbWVtYmVyKQorICAgICAg
ICAgICAgICAgICAgICAuIEdlbmVyYXRlRGVmYXVsdFZhbHVlV2l0aExlYWRpbmdDb21tYSgkaW50
ZXJmYWNlLCAkbWVtYmVyKSAuICIpO1xuIjsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgICRu
ZWVkRXhjZXB0aW9uQ2hlY2sgPSAxOwogICAgICAgICB9CiAKICAgICAgICAgbXkgJGFyZ3VtZW50
cyA9ICIiOwogICAgICAgICAkY29tbWEgPSAiIjsKICAgICAgICAgZm9yZWFjaCBteSAkbWVtYmVy
IChAeyRkaWN0aW9uYXJ5LT5tZW1iZXJzfSkgeworICAgICAgICAgICAgIyBGSVhNRTogSWRlYWxs
eSB3ZSB3b3VsZCBwYXNzIG5vbi1udWxsYWJsZSB3cmFwcGVyIHR5cGVzIGJ5IHJlZmVyZW5jZS4g
SG93ZXZlciwgd2UgY3VycmVudGx5CisgICAgICAgICAgICAjIGNhbm5vdCBoYXZlIHJlZmVyZW5j
ZXMgaW4gdGhlIHN0cnVjdCBvbiBuYXRpdmUgc2lkZSBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gcmV0
dXJucyB7IH0gaW4gY2FzZQorICAgICAgICAgICAgIyBvZiBlcnJvci4KICAgICAgICAgICAgICRh
cmd1bWVudHMgLj0gJGNvbW1hIC4gIldURk1vdmUoIiAuICRtZW1iZXItPm5hbWUgLiAiKSI7CiAg
ICAgICAgICAgICAkY29tbWEgPSAiLCAiOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbSBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCmluZGV4IDUwNDMxMTIyM2YxZGM2OTQwNzc2YTll
MTAxZGE0MDg3Mjc1ODJhMzMuLmMxMTJiMmFkNmRiN2M1NWJmNDc0OWMwZGI5ZmEzZTJjMmMxMTJl
YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2Vy
LnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCkBA
IC02ODMsNyArNjgzLDE0IEBAIHN1YiBwYXJzZURpY3Rpb25hcnlNZW1iZXIKICAgICAgICAgICAg
ICRtZW1iZXItPmlzT3B0aW9uYWwoMCk7CiAgICAgICAgIH0KICAgICAgICAgJG1lbWJlci0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOwotICAgICAgICAkbWVtYmVy
LT50eXBlKCRzZWxmLT5wYXJzZVR5cGUoKSk7CisgICAgICAgIG15ICR0eXBlID0gJHNlbGYtPnBh
cnNlVHlwZSgpOworICAgICAgICBpZiAodHlwZUhhc051bGxhYmxlU3VmZml4KCR0eXBlKSkgewor
ICAgICAgICAgICAgJG1lbWJlci0+aXNOdWxsYWJsZSgxKTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICRtZW1iZXItPmlzTnVsbGFibGUoMCk7CisgICAgICAgIH0KKyAgICAgICAgJG1l
bWJlci0+dHlwZSh0eXBlUmVtb3ZlTnVsbGFibGVTdWZmaXgoJHR5cGUpKTsKKwogICAgICAgICBt
eSAkbmFtZVRva2VuID0gJHNlbGYtPmdldFRva2VuKCk7CiAgICAgICAgICRzZWxmLT5hc3NlcnRU
b2tlblR5cGUoJG5hbWVUb2tlbiwgSWRlbnRpZmllclRva2VuKTsKICAgICAgICAgJG1lbWJlci0+
bmFtZSgkbmFtZVRva2VuLT52YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IGNjMzQ2MTk2NGRlNjU2MjZl
ODAyZTg5MGQ3ZTBmYjFjNDMyZjAxM2UuLmFjYmNkOWU1NTZiYTlhZDM5NWUzMzEyZWY0ZmExMWUw
MWIwMzNmZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBAIC00NTMsOCArNDUzLDYgQEAgdGVtcGxhdGU8PiBpbmxp
bmUgY29uc3QgY2hhciogZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlczxUZXN0T2JqOjpDb25maWRl
bmNlPigpCiAKIHRlbXBsYXRlPD4gVGVzdE9iajo6RGljdGlvbmFyeSBjb252ZXJ0PFRlc3RPYmo6
OkRpY3Rpb25hcnk+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgaWYg
KHZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHJldHVybiB7IHsgfSwgVGVzdE9i
ajo6RW51bVR5cGU6OkVudW1WYWx1ZTEsIFRlc3RPYmo6OkVudW1UeXBlOjpFbXB0eVN0cmluZywg
ImRlZmF1bHRTdHJpbmciLCB7IH0sIGZhbHNlLCB7IH0sIHsgfSwgeyB9LCB7IH0sIDAsIDAsIHsg
fSwgeyB9LCAwLCAwLCB7IH0sIHsgfSwgeyB9LCAwLCB7IH0sIDAsIHsgfSwgMCwgeyB9LCAwLCB7
IH0sIDAgfTsKICAgICBhdXRvKiBvYmplY3QgPSB2YWx1ZS5nZXRPYmplY3QoKTsKICAgICBpZiAo
VU5MSUtFTFkoIW9iamVjdCB8fCBvYmplY3QtPnR5cGUoKSA9PSBSZWdFeHBPYmplY3RUeXBlKSkg
ewogICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOwpAQCAtNTQyLDcgKzU0MCwxMyBAQCB0
ZW1wbGF0ZTw+IFRlc3RPYmo6OkRpY3Rpb25hcnkgY29udmVydDxUZXN0T2JqOjpEaWN0aW9uYXJ5
PihFeGVjU3RhdGUmIHN0YXRlLCBKUwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS5oYWRFeGNlcHRp
b24oKSkpCiAgICAgICAgIHJldHVybiB7IH07CiAgICAgYXV0byB1bnNpZ25lZExhcmdlSW50ZWdl
cldpdGhEZWZhdWx0ID0gY29udmVydE9wdGlvbmFsPHVpbnQ2NF90PihzdGF0ZSwgb2JqZWN0LT5n
ZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgInVuc2lnbmVkTGFyZ2VJ
bnRlZ2VyV2l0aERlZmF1bHQiKSksIE5vcm1hbENvbnZlcnNpb24sIDApOwotICAgIHJldHVybiB7
IFdURk1vdmUoZW51bWVyYXRpb25WYWx1ZVdpdGhvdXREZWZhdWx0KSwgV1RGTW92ZShlbnVtZXJh
dGlvblZhbHVlV2l0aERlZmF1bHQpLCBXVEZNb3ZlKGVudW1lcmF0aW9uVmFsdWVXaXRoRW1wdHlT
dHJpbmdEZWZhdWx0KSwgV1RGTW92ZShzdHJpbmdXaXRoRGVmYXVsdCksIFdURk1vdmUoc3RyaW5n
V2l0aG91dERlZmF1bHQpLCBXVEZNb3ZlKGJvb2xlYW5XaXRoRGVmYXVsdCksIFdURk1vdmUoYm9v
bGVhbldpdGhvdXREZWZhdWx0KSwgV1RGTW92ZShzZXF1ZW5jZU9mU3RyaW5ncyksIFdURk1vdmUo
cmVzdHJpY3RlZERvdWJsZSksIFdURk1vdmUodW5yZXN0cmljdGVkRG91YmxlKSwgV1RGTW92ZShy
ZXN0cmljdGVkRG91YmxlV2l0aERlZmF1bHQpLCBXVEZNb3ZlKHVucmVzdHJpY3RlZERvdWJsZVdp
dGhEZWZhdWx0KSwgV1RGTW92ZShyZXN0cmljdGVkRmxvYXQpLCBXVEZNb3ZlKHVucmVzdHJpY3Rl
ZEZsb2F0KSwgV1RGTW92ZShyZXN0cmljdGVkRmxvYXRXaXRoRGVmYXVsdCksIFdURk1vdmUodW5y
ZXN0cmljdGVkRmxvYXRXaXRoRGVmYXVsdCksIFdURk1vdmUoc21hbGxJbnRlZ2VyQ2xhbXBlZCks
IFdURk1vdmUoc21hbGxJbnRlZ2VyV2l0aERlZmF1bHQpLCBXVEZNb3ZlKHNtYWxsVW5zaWduZWRJ
bnRlZ2VyRW5mb3JjZWRSYW5nZSksIFdURk1vdmUoc21hbGxVbnNpZ25lZEludGVnZXJXaXRoRGVm
YXVsdCksIFdURk1vdmUoaW50ZWdlciksIFdURk1vdmUoaW50ZWdlcldpdGhEZWZhdWx0KSwgV1RG
TW92ZSh1bnNpZ25lZEludGVnZXIpLCBXVEZNb3ZlKHVuc2lnbmVkSW50ZWdlcldpdGhEZWZhdWx0
KSwgV1RGTW92ZShsYXJnZUludGVnZXIpLCBXVEZNb3ZlKGxhcmdlSW50ZWdlcldpdGhEZWZhdWx0
KSwgV1RGTW92ZSh1bnNpZ25lZExhcmdlSW50ZWdlciksIFdURk1vdmUodW5zaWduZWRMYXJnZUlu
dGVnZXJXaXRoRGVmYXVsdCkgfTsKKyAgICBpZiAoVU5MSUtFTFkoc3RhdGUuaGFkRXhjZXB0aW9u
KCkpKQorICAgICAgICByZXR1cm4geyB9OworICAgIGF1dG8qIG51bGxhYmxlTm9kZSA9IGNvbnZl
cnRXcmFwcGVyVHlwZTxOb2RlLCBKU05vZGU+KHN0YXRlLCBvYmplY3QtPmdldCgmc3RhdGUsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAibnVsbGFibGVOb2RlIikpLCBJc051bGxhYmxl
OjpZZXMpOworICAgIGlmIChVTkxJS0VMWShzdGF0ZS5oYWRFeGNlcHRpb24oKSkpCisgICAgICAg
IHJldHVybiB7IH07CisgICAgYXV0byogbm9kZSA9IGNvbnZlcnRXcmFwcGVyVHlwZTxOb2RlLCBK
U05vZGU+KHN0YXRlLCBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmco
JnN0YXRlLCAibm9kZSIpKSwgSXNOdWxsYWJsZTo6Tm8pOworICAgIHJldHVybiB7IFdURk1vdmUo
ZW51bWVyYXRpb25WYWx1ZVdpdGhvdXREZWZhdWx0KSwgV1RGTW92ZShlbnVtZXJhdGlvblZhbHVl
V2l0aERlZmF1bHQpLCBXVEZNb3ZlKGVudW1lcmF0aW9uVmFsdWVXaXRoRW1wdHlTdHJpbmdEZWZh
dWx0KSwgV1RGTW92ZShzdHJpbmdXaXRoRGVmYXVsdCksIFdURk1vdmUoc3RyaW5nV2l0aG91dERl
ZmF1bHQpLCBXVEZNb3ZlKGJvb2xlYW5XaXRoRGVmYXVsdCksIFdURk1vdmUoYm9vbGVhbldpdGhv
dXREZWZhdWx0KSwgV1RGTW92ZShzZXF1ZW5jZU9mU3RyaW5ncyksIFdURk1vdmUocmVzdHJpY3Rl
ZERvdWJsZSksIFdURk1vdmUodW5yZXN0cmljdGVkRG91YmxlKSwgV1RGTW92ZShyZXN0cmljdGVk
RG91YmxlV2l0aERlZmF1bHQpLCBXVEZNb3ZlKHVucmVzdHJpY3RlZERvdWJsZVdpdGhEZWZhdWx0
KSwgV1RGTW92ZShyZXN0cmljdGVkRmxvYXQpLCBXVEZNb3ZlKHVucmVzdHJpY3RlZEZsb2F0KSwg
V1RGTW92ZShyZXN0cmljdGVkRmxvYXRXaXRoRGVmYXVsdCksIFdURk1vdmUodW5yZXN0cmljdGVk
RmxvYXRXaXRoRGVmYXVsdCksIFdURk1vdmUoc21hbGxJbnRlZ2VyQ2xhbXBlZCksIFdURk1vdmUo
c21hbGxJbnRlZ2VyV2l0aERlZmF1bHQpLCBXVEZNb3ZlKHNtYWxsVW5zaWduZWRJbnRlZ2VyRW5m
b3JjZWRSYW5nZSksIFdURk1vdmUoc21hbGxVbnNpZ25lZEludGVnZXJXaXRoRGVmYXVsdCksIFdU
Rk1vdmUoaW50ZWdlciksIFdURk1vdmUoaW50ZWdlcldpdGhEZWZhdWx0KSwgV1RGTW92ZSh1bnNp
Z25lZEludGVnZXIpLCBXVEZNb3ZlKHVuc2lnbmVkSW50ZWdlcldpdGhEZWZhdWx0KSwgV1RGTW92
ZShsYXJnZUludGVnZXIpLCBXVEZNb3ZlKGxhcmdlSW50ZWdlcldpdGhEZWZhdWx0KSwgV1RGTW92
ZSh1bnNpZ25lZExhcmdlSW50ZWdlciksIFdURk1vdmUodW5zaWduZWRMYXJnZUludGVnZXJXaXRo
RGVmYXVsdCksIFdURk1vdmUobnVsbGFibGVOb2RlKSwgV1RGTW92ZShub2RlKSB9OwogfQogCiB0
ZW1wbGF0ZTw+IFRlc3RPYmo6OkRpY3Rpb25hcnlUaGF0U2hvdWxkTm90VG9sZXJhdGVOdWxsIGNv
bnZlcnQ8VGVzdE9iajo6RGljdGlvbmFyeVRoYXRTaG91bGROb3RUb2xlcmF0ZU51bGw+KEV4ZWNT
dGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKaW5kZXggOWQ1Y2ExN2Q5MGY2MGNlMzZhMmVlYjk2
NTlkOGQ3MTQ2ODY5MTk4Yi4uY2ViNmMwMDc1ZjE4OGZjOWJmNmE3MDNjODVjNWY2MGVkNmQxYTVl
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RP
YmouaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2Jq
LmlkbApAQCAtNDAzLDYgKzQwMyw4IEBAIGRpY3Rpb25hcnkgVGVzdERpY3Rpb25hcnkgewogICAg
IGxvbmcgbG9uZyBsYXJnZUludGVnZXJXaXRoRGVmYXVsdCA9IDA7CiAgICAgdW5zaWduZWQgbG9u
ZyBsb25nIHVuc2lnbmVkTGFyZ2VJbnRlZ2VyOwogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB1bnNp
Z25lZExhcmdlSW50ZWdlcldpdGhEZWZhdWx0ID0gMDsKKyAgICBOb2RlPyBudWxsYWJsZU5vZGU7
CisgICAgcmVxdWlyZWQgTm9kZSBub2RlOwogfTsKIAogZGljdGlvbmFyeSBUZXN0RGljdGlvbmFy
eVRoYXRTaG91bGROb3RUb2xlcmF0ZU51bGwgewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285233</attachid>
            <date>2016-08-03 08:54:19 -0700</date>
            <delta_ts>2016-08-04 15:03:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160487-20160803085256.patch</filename>
            <type>text/plain</type>
            <size>10448</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0MDYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTJmMzE4MGE5N2VjMjRi
ZGM5YzM5MmI4ZjAyODIyOGUyMjExMzJlMy4uN2QyMDY2YjI2YTQ2NjE4ODBlODRjY2UxOGQzOGMw
ZWNlOTE1MmNlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE2LTA4LTAyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHdy
YXBwZXIgdHlwZXMgaW4gZGljdGlvbmFyaWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA0ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgbnVsbGFibGUgd3JhcHBlciB0eXBl
cyBpbiBkaWN0aW9uYXJpZXMuCisgICAgICAgIEEgVHlwZUVycm9yIGlzIHRocm93biBpZiB0aGUg
Y29udmVyc2lvbiBmYWlscy4KKworICAgICAgICBObyBuZXcgdGVzdHMsIHVwZGF0ZWQgYmluZGlu
Z3MgdGVzdHMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNvbnZlcnRXcmFwcGVyVHlwZSk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZURpY3Rpb25hcnlJbXBs
ZW1lbnRhdGlvbkNvbnRlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2Vy
LnBtOgorICAgICAgICAocGFyc2VEaWN0aW9uYXJ5TWVtYmVyKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZl
cnQ8VGVzdE9iajo6RGljdGlvbmFyeT4pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9UZXN0T2JqLmlkbDoKKwogMjAxNi0wOC0wMiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FA
YXBwbGUuY29tPgogCiAgICAgICAgIEZyZWV6ZSB0aGUgT2JqZWN0aXZlLUMgRE9NIEV2ZW50IGFu
ZCBDU1MgYmluZGluZ3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NQ29udmVydC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0LmgK
aW5kZXggMDgyNDFmZGRhZDE1ZGM0YjVlYWY0Y2FjZWY3MmI4MmFmMGM1OTQ3Ni4uYmQwY2RiZmQz
ZGI4ZGU3MGZjYWJhMmY4ZjJkNDZlN2MxMGU2NDc5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01Db252ZXJ0LmgKQEAgLTQ5LDYgKzQ5LDkgQEAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4gRW5hYmxlSWZGbG9hdGluZ1BvaW50VHlwZTxULCBPcHRpb25hbDxUPj4gY29udmVydE9wdGlv
bmFsKEoKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IEVuYWJsZUlmSW50ZWdyYWxU
eXBlPFQ+IGNvbnZlcnRPcHRpb25hbChKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSwgSW50
ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9uLCBVJiYgZGVmYXVsdFZhbHVlKTsKIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IEVuYWJsZUlmRmxvYXRpbmdQb2ludFR5cGU8VD4gY29u
dmVydE9wdGlvbmFsKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlLCBTaG91bGRBbGxvd05v
bkZpbml0ZSwgVSYmIGRlZmF1bHRWYWx1ZSk7CiAKK2VudW0gY2xhc3MgSXNOdWxsYWJsZSB7IE5v
LCBZZXMgfTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEpTVD4gVCogY29udmVydFdy
YXBwZXJUeXBlKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlLCBJc051bGxhYmxlKTsKKwog
Ly8gVGhpcyBpcyB3aGVyZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIHRoaW5ncyBkZWNsYXJl
ZCBhYm92ZSBiZWdpbnM6CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgY29udmVydChKU0M6OkV4
ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKQEAgLTY2LDYgKzY5LDE0IEBAIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBFbmFibGVJZkZsb2F0aW5nUG9pbnRUeXBlPFQ+IGNv
bnZlcnQoSlNDOjpFeGVjU3RhdGUmCiAgICAgcmV0dXJuIENvbnZlcnRlcjxUPjo6Y29udmVydChz
dGF0ZSwgdmFsdWUsIGFsbG93KTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
SlNUPiBpbmxpbmUgVCogY29udmVydFdyYXBwZXJUeXBlKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwg
SlNDOjpKU1ZhbHVlIHZhbHVlLCBJc051bGxhYmxlIGlzTnVsbGFibGUpCit7CisgICAgVCogb2Jq
ZWN0ID0gSlNUOjp0b1dyYXBwZWQodmFsdWUpOworICAgIGlmICghb2JqZWN0ICYmIChpc051bGxh
YmxlID09IElzTnVsbGFibGU6Ok5vIHx8ICF2YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSkKKyAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICByZXR1cm4gb2JqZWN0OworfQorCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgdHlwZW5hbWUgQ29udmVydGVyPFQ+OjpPcHRpb25h
bFZhbHVlIGNvbnZlcnRPcHRpb25hbChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1
ZSB2YWx1ZSkKIHsKICAgICByZXR1cm4gdmFsdWUuaXNVbmRlZmluZWQoKSA/IHR5cGVuYW1lIENv
bnZlcnRlcjxUPjo6T3B0aW9uYWxWYWx1ZSgpIDogY29udmVydDxUPihzdGF0ZSwgdmFsdWUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bQppbmRleCBjYTI4NGE1NDVlZTEyNzBiOWNlYzRiYzllYjM5MjlhNjg3MGY2NGRkLi5hOTkwYjA3
OTk5MDhmYjMzMGE5ZWI4ZTNiODBhZDg0MTQ2ZjE0YmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtOTIzLDYgKzkyMyw3
IEBAIHN1YiBHZW5lcmF0ZURlZmF1bHRWYWx1ZQogICAgICAgICBteSAkZW51bWVyYXRpb25WYWx1
ZU5hbWUgPSBHZXRFbnVtZXJhdGlvblZhbHVlTmFtZShzdWJzdHIoJHZhbHVlLCAxLCAtMSkpOwog
ICAgICAgICAkdmFsdWUgPSAkY2xhc3NOYW1lIC4gIjo6IiAuICRlbnVtZXJhdGlvblZhbHVlTmFt
ZTsKICAgICB9CisgICAgJHZhbHVlID0gIm51bGxwdHIiIGlmICR2YWx1ZSBlcSAibnVsbCI7CiAK
ICAgICByZXR1cm4gJHZhbHVlOwogfQpAQCAtOTk4LDExICs5OTksMTkgQEAgc3ViIEdlbmVyYXRl
RGljdGlvbmFyeUltcGxlbWVudGF0aW9uQ29udGVudAogICAgICAgICAgICAgICAgICRyZXN1bHQg
Lj0gIiAgICAgICAgcmV0dXJuIHsgfTtcbiI7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAj
IEZJWE1FOiBFdmVudHVhbGx5IHdlIHdpbGwgd2FudCB0aGlzIHRvIHNoYXJlIGEgbG90IG1vcmUg
Y29kZSB3aXRoIEpTVmFsdWVUb05hdGl2ZS4KLSAgICAgICAgICAgIG15ICRmdW5jdGlvbiA9ICRt
ZW1iZXItPmlzT3B0aW9uYWwgPyAiY29udmVydE9wdGlvbmFsIiA6ICJjb252ZXJ0IjsKLSAgICAg
ICAgICAgICRyZXN1bHQgLj0gIiAgICBhdXRvICIgLiAkbWVtYmVyLT5uYW1lIC4gIiA9ICIgLiAk
ZnVuY3Rpb24gLiAiPCIgLiBHZXROYXRpdmVUeXBlRnJvbVNpZ25hdHVyZSgkaW50ZXJmYWNlLCAk
bWVtYmVyKSAuICI+IgotICAgICAgICAgICAgICAgIC4gIihzdGF0ZSwgb2JqZWN0LT5nZXQoJnN0
YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgXCIiIC4gJG1lbWJlci0+bmFtZSAu
ICJcIikpIgotICAgICAgICAgICAgICAgIC4gR2VuZXJhdGVDb252ZXJzaW9uUnVsZVdpdGhMZWFk
aW5nQ29tbWEoJGludGVyZmFjZSwgJG1lbWJlcikKLSAgICAgICAgICAgICAgICAuIEdlbmVyYXRl
RGVmYXVsdFZhbHVlV2l0aExlYWRpbmdDb21tYSgkaW50ZXJmYWNlLCAkbWVtYmVyKSAuICIpO1xu
IjsKKyAgICAgICAgICAgIG15ICR0eXBlID0gJG1lbWJlci0+dHlwZTsKKyAgICAgICAgICAgIG15
ICRuYW1lID0gJG1lbWJlci0+bmFtZTsKKyAgICAgICAgICAgIG15ICR2YWx1ZSA9ICJvYmplY3Qt
PmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCBcIiR7bmFtZX1cIikp
IjsKKyAgICAgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNXcmFwcGVyVHlwZSgkbWVtYmVy
LT50eXBlKSkgeworICAgICAgICAgICAgICAgIGRpZSAiRGljdGlvbmFyeSBtZW1iZXIgb2Ygbm9u
LW51bGxhYmxlIHdyYXBwZXIgdHlwZXMgYXJlIG5vdCBzdXBwb3J0ZWQgeWV0IiB1bmxlc3MgJG1l
bWJlci0+aXNOdWxsYWJsZTsKKyAgICAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlMk
e3R5cGV9LmgiKTsKKyAgICAgICAgICAgICAgICAkcmVzdWx0IC49ICIgICAgYXV0byogJG5hbWUg
PSBjb252ZXJ0V3JhcHBlclR5cGU8JHR5cGUsIEpTJHt0eXBlfT4oc3RhdGUsICR2YWx1ZSwgSXNO
dWxsYWJsZTo6WWVzKTtcbiI7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IG15ICRmdW5jdGlvbiA9ICRtZW1iZXItPmlzT3B0aW9uYWwgPyAiY29udmVydE9wdGlvbmFsIiA6
ICJjb252ZXJ0IjsKKyAgICAgICAgICAgICAgICAkcmVzdWx0IC49ICIgICAgYXV0byAkbmFtZSA9
ICR7ZnVuY3Rpb259PCIgLiBHZXROYXRpdmVUeXBlRnJvbVNpZ25hdHVyZSgkaW50ZXJmYWNlLCAk
bWVtYmVyKSAuICI+KHN0YXRlLCAkdmFsdWUiCisgICAgICAgICAgICAgICAgICAgIC4gR2VuZXJh
dGVDb252ZXJzaW9uUnVsZVdpdGhMZWFkaW5nQ29tbWEoJGludGVyZmFjZSwgJG1lbWJlcikKKyAg
ICAgICAgICAgICAgICAgICAgLiBHZW5lcmF0ZURlZmF1bHRWYWx1ZVdpdGhMZWFkaW5nQ29tbWEo
JGludGVyZmFjZSwgJG1lbWJlcikgLiAiKTtcbiI7CisgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAkbmVlZEV4Y2VwdGlvbkNoZWNrID0gMTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbSBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCmluZGV4IDUwNDMxMTIyM2YxZGM2OTQwNzc2
YTllMTAxZGE0MDg3Mjc1ODJhMzMuLmMxMTJiMmFkNmRiN2M1NWJmNDc0OWMwZGI5ZmEzZTJjMmMx
MTJlYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFy
c2VyLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBt
CkBAIC02ODMsNyArNjgzLDE0IEBAIHN1YiBwYXJzZURpY3Rpb25hcnlNZW1iZXIKICAgICAgICAg
ICAgICRtZW1iZXItPmlzT3B0aW9uYWwoMCk7CiAgICAgICAgIH0KICAgICAgICAgJG1lbWJlci0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOwotICAgICAgICAkbWVt
YmVyLT50eXBlKCRzZWxmLT5wYXJzZVR5cGUoKSk7CisgICAgICAgIG15ICR0eXBlID0gJHNlbGYt
PnBhcnNlVHlwZSgpOworICAgICAgICBpZiAodHlwZUhhc051bGxhYmxlU3VmZml4KCR0eXBlKSkg
eworICAgICAgICAgICAgJG1lbWJlci0+aXNOdWxsYWJsZSgxKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICRtZW1iZXItPmlzTnVsbGFibGUoMCk7CisgICAgICAgIH0KKyAgICAgICAg
JG1lbWJlci0+dHlwZSh0eXBlUmVtb3ZlTnVsbGFibGVTdWZmaXgoJHR5cGUpKTsKKwogICAgICAg
ICBteSAkbmFtZVRva2VuID0gJHNlbGYtPmdldFRva2VuKCk7CiAgICAgICAgICRzZWxmLT5hc3Nl
cnRUb2tlblR5cGUoJG5hbWVUb2tlbiwgSWRlbnRpZmllclRva2VuKTsKICAgICAgICAgJG1lbWJl
ci0+bmFtZSgkbmFtZVRva2VuLT52YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IGNjMzQ2MTk2NGRlNjU2
MjZlODAyZTg5MGQ3ZTBmYjFjNDMyZjAxM2UuLjhkZmVjZTFjNTgxZjljZTEzYTEzZWE2YzkwMjEw
MGUwZTAxYzJlOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBAIC00NTQsNyArNDU0LDcgQEAgdGVtcGxhdGU8PiBp
bmxpbmUgY29uc3QgY2hhciogZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlczxUZXN0T2JqOjpDb25m
aWRlbmNlPigpCiB0ZW1wbGF0ZTw+IFRlc3RPYmo6OkRpY3Rpb25hcnkgY29udmVydDxUZXN0T2Jq
OjpEaWN0aW9uYXJ5PihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogewogICAgIGlm
ICh2YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICByZXR1cm4geyB7IH0sIFRlc3RP
Ymo6OkVudW1UeXBlOjpFbnVtVmFsdWUxLCBUZXN0T2JqOjpFbnVtVHlwZTo6RW1wdHlTdHJpbmcs
ICJkZWZhdWx0U3RyaW5nIiwgeyB9LCBmYWxzZSwgeyB9LCB7IH0sIHsgfSwgeyB9LCAwLCAwLCB7
IH0sIHsgfSwgMCwgMCwgeyB9LCB7IH0sIHsgfSwgMCwgeyB9LCAwLCB7IH0sIDAsIHsgfSwgMCwg
eyB9LCAwIH07CisgICAgICAgIHJldHVybiB7IHsgfSwgVGVzdE9iajo6RW51bVR5cGU6OkVudW1W
YWx1ZTEsIFRlc3RPYmo6OkVudW1UeXBlOjpFbXB0eVN0cmluZywgImRlZmF1bHRTdHJpbmciLCB7
IH0sIGZhbHNlLCB7IH0sIHsgfSwgeyB9LCB7IH0sIDAsIDAsIHsgfSwgeyB9LCAwLCAwLCB7IH0s
IHsgfSwgeyB9LCAwLCB7IH0sIDAsIHsgfSwgMCwgeyB9LCAwLCB7IH0sIDAsIG51bGxwdHIgfTsK
ICAgICBhdXRvKiBvYmplY3QgPSB2YWx1ZS5nZXRPYmplY3QoKTsKICAgICBpZiAoVU5MSUtFTFko
IW9iamVjdCB8fCBvYmplY3QtPnR5cGUoKSA9PSBSZWdFeHBPYmplY3RUeXBlKSkgewogICAgICAg
ICB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOwpAQCAtNTQyLDcgKzU0MiwxMCBAQCB0ZW1wbGF0ZTw+
IFRlc3RPYmo6OkRpY3Rpb25hcnkgY29udmVydDxUZXN0T2JqOjpEaWN0aW9uYXJ5PihFeGVjU3Rh
dGUmIHN0YXRlLCBKUwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS5oYWRFeGNlcHRpb24oKSkpCiAg
ICAgICAgIHJldHVybiB7IH07CiAgICAgYXV0byB1bnNpZ25lZExhcmdlSW50ZWdlcldpdGhEZWZh
dWx0ID0gY29udmVydE9wdGlvbmFsPHVpbnQ2NF90PihzdGF0ZSwgb2JqZWN0LT5nZXQoJnN0YXRl
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgInVuc2lnbmVkTGFyZ2VJbnRlZ2VyV2l0
aERlZmF1bHQiKSksIE5vcm1hbENvbnZlcnNpb24sIDApOwotICAgIHJldHVybiB7IFdURk1vdmUo
ZW51bWVyYXRpb25WYWx1ZVdpdGhvdXREZWZhdWx0KSwgV1RGTW92ZShlbnVtZXJhdGlvblZhbHVl
V2l0aERlZmF1bHQpLCBXVEZNb3ZlKGVudW1lcmF0aW9uVmFsdWVXaXRoRW1wdHlTdHJpbmdEZWZh
dWx0KSwgV1RGTW92ZShzdHJpbmdXaXRoRGVmYXVsdCksIFdURk1vdmUoc3RyaW5nV2l0aG91dERl
ZmF1bHQpLCBXVEZNb3ZlKGJvb2xlYW5XaXRoRGVmYXVsdCksIFdURk1vdmUoYm9vbGVhbldpdGhv
dXREZWZhdWx0KSwgV1RGTW92ZShzZXF1ZW5jZU9mU3RyaW5ncyksIFdURk1vdmUocmVzdHJpY3Rl
ZERvdWJsZSksIFdURk1vdmUodW5yZXN0cmljdGVkRG91YmxlKSwgV1RGTW92ZShyZXN0cmljdGVk
RG91YmxlV2l0aERlZmF1bHQpLCBXVEZNb3ZlKHVucmVzdHJpY3RlZERvdWJsZVdpdGhEZWZhdWx0
KSwgV1RGTW92ZShyZXN0cmljdGVkRmxvYXQpLCBXVEZNb3ZlKHVucmVzdHJpY3RlZEZsb2F0KSwg
V1RGTW92ZShyZXN0cmljdGVkRmxvYXRXaXRoRGVmYXVsdCksIFdURk1vdmUodW5yZXN0cmljdGVk
RmxvYXRXaXRoRGVmYXVsdCksIFdURk1vdmUoc21hbGxJbnRlZ2VyQ2xhbXBlZCksIFdURk1vdmUo
c21hbGxJbnRlZ2VyV2l0aERlZmF1bHQpLCBXVEZNb3ZlKHNtYWxsVW5zaWduZWRJbnRlZ2VyRW5m
b3JjZWRSYW5nZSksIFdURk1vdmUoc21hbGxVbnNpZ25lZEludGVnZXJXaXRoRGVmYXVsdCksIFdU
Rk1vdmUoaW50ZWdlciksIFdURk1vdmUoaW50ZWdlcldpdGhEZWZhdWx0KSwgV1RGTW92ZSh1bnNp
Z25lZEludGVnZXIpLCBXVEZNb3ZlKHVuc2lnbmVkSW50ZWdlcldpdGhEZWZhdWx0KSwgV1RGTW92
ZShsYXJnZUludGVnZXIpLCBXVEZNb3ZlKGxhcmdlSW50ZWdlcldpdGhEZWZhdWx0KSwgV1RGTW92
ZSh1bnNpZ25lZExhcmdlSW50ZWdlciksIFdURk1vdmUodW5zaWduZWRMYXJnZUludGVnZXJXaXRo
RGVmYXVsdCkgfTsKKyAgICBpZiAoVU5MSUtFTFkoc3RhdGUuaGFkRXhjZXB0aW9uKCkpKQorICAg
ICAgICByZXR1cm4geyB9OworICAgIGF1dG8qIG51bGxhYmxlTm9kZSA9IGNvbnZlcnRXcmFwcGVy
VHlwZTxOb2RlLCBKU05vZGU+KHN0YXRlLCBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoJnN0YXRlLCAibnVsbGFibGVOb2RlIikpLCBJc051bGxhYmxlOjpZZXMpOwor
ICAgIHJldHVybiB7IFdURk1vdmUoZW51bWVyYXRpb25WYWx1ZVdpdGhvdXREZWZhdWx0KSwgV1RG
TW92ZShlbnVtZXJhdGlvblZhbHVlV2l0aERlZmF1bHQpLCBXVEZNb3ZlKGVudW1lcmF0aW9uVmFs
dWVXaXRoRW1wdHlTdHJpbmdEZWZhdWx0KSwgV1RGTW92ZShzdHJpbmdXaXRoRGVmYXVsdCksIFdU
Rk1vdmUoc3RyaW5nV2l0aG91dERlZmF1bHQpLCBXVEZNb3ZlKGJvb2xlYW5XaXRoRGVmYXVsdCks
IFdURk1vdmUoYm9vbGVhbldpdGhvdXREZWZhdWx0KSwgV1RGTW92ZShzZXF1ZW5jZU9mU3RyaW5n
cyksIFdURk1vdmUocmVzdHJpY3RlZERvdWJsZSksIFdURk1vdmUodW5yZXN0cmljdGVkRG91Ymxl
KSwgV1RGTW92ZShyZXN0cmljdGVkRG91YmxlV2l0aERlZmF1bHQpLCBXVEZNb3ZlKHVucmVzdHJp
Y3RlZERvdWJsZVdpdGhEZWZhdWx0KSwgV1RGTW92ZShyZXN0cmljdGVkRmxvYXQpLCBXVEZNb3Zl
KHVucmVzdHJpY3RlZEZsb2F0KSwgV1RGTW92ZShyZXN0cmljdGVkRmxvYXRXaXRoRGVmYXVsdCks
IFdURk1vdmUodW5yZXN0cmljdGVkRmxvYXRXaXRoRGVmYXVsdCksIFdURk1vdmUoc21hbGxJbnRl
Z2VyQ2xhbXBlZCksIFdURk1vdmUoc21hbGxJbnRlZ2VyV2l0aERlZmF1bHQpLCBXVEZNb3ZlKHNt
YWxsVW5zaWduZWRJbnRlZ2VyRW5mb3JjZWRSYW5nZSksIFdURk1vdmUoc21hbGxVbnNpZ25lZElu
dGVnZXJXaXRoRGVmYXVsdCksIFdURk1vdmUoaW50ZWdlciksIFdURk1vdmUoaW50ZWdlcldpdGhE
ZWZhdWx0KSwgV1RGTW92ZSh1bnNpZ25lZEludGVnZXIpLCBXVEZNb3ZlKHVuc2lnbmVkSW50ZWdl
cldpdGhEZWZhdWx0KSwgV1RGTW92ZShsYXJnZUludGVnZXIpLCBXVEZNb3ZlKGxhcmdlSW50ZWdl
cldpdGhEZWZhdWx0KSwgV1RGTW92ZSh1bnNpZ25lZExhcmdlSW50ZWdlciksIFdURk1vdmUodW5z
aWduZWRMYXJnZUludGVnZXJXaXRoRGVmYXVsdCksIFdURk1vdmUobnVsbGFibGVOb2RlKSB9Owog
fQogCiB0ZW1wbGF0ZTw+IFRlc3RPYmo6OkRpY3Rpb25hcnlUaGF0U2hvdWxkTm90VG9sZXJhdGVO
dWxsIGNvbnZlcnQ8VGVzdE9iajo6RGljdGlvbmFyeVRoYXRTaG91bGROb3RUb2xlcmF0ZU51bGw+
KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKaW5kZXggOWQ1Y2ExN2Q5MGY2MGNlMzZh
MmVlYjk2NTlkOGQ3MTQ2ODY5MTk4Yi4uYmU0MmZkYjg5NDMzZmIwYjM5ZDg1OTI2MTU4NmNhY2I5
OTM0ZTBjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Rlc3RPYmouaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9U
ZXN0T2JqLmlkbApAQCAtNDAzLDYgKzQwMyw3IEBAIGRpY3Rpb25hcnkgVGVzdERpY3Rpb25hcnkg
ewogICAgIGxvbmcgbG9uZyBsYXJnZUludGVnZXJXaXRoRGVmYXVsdCA9IDA7CiAgICAgdW5zaWdu
ZWQgbG9uZyBsb25nIHVuc2lnbmVkTGFyZ2VJbnRlZ2VyOwogICAgIHVuc2lnbmVkIGxvbmcgbG9u
ZyB1bnNpZ25lZExhcmdlSW50ZWdlcldpdGhEZWZhdWx0ID0gMDsKKyAgICBOb2RlPyBudWxsYWJs
ZU5vZGUgPSBudWxsOwogfTsKIAogZGljdGlvbmFyeSBUZXN0RGljdGlvbmFyeVRoYXRTaG91bGRO
b3RUb2xlcmF0ZU51bGwgewo=
</data>

          </attachment>
      

    </bug>

</bugzilla>