<?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>214484</bug_id>
          
          <creation_ts>2020-07-17 10:24:40 -0700</creation_ts>
          <short_desc>[webkitcorepy] Add mocks.ContextStack</short_desc>
          <delta_ts>2020-08-04 22:15:35 -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>Tools / Tests</component>
          <version>Safari 13</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=214378</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="Jonathan Bedard">jbedard</reporter>
          <assigned_to name="Jonathan Bedard">jbedard</assigned_to>
          <cc>dewei_zhu</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1672535</commentid>
    <comment_count>0</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-07-17 10:24:40 -0700</bug_when>
    <thetext>Add a class which allows a context leveraging mock to stack. This is useful when mocking requests or subprocess, where a single function (or class of functions) is handling calls that are destined for different for different mock handlers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672539</commentid>
    <comment_count>1</comment_count>
      <attachid>404572</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-07-17 10:30:35 -0700</bug_when>
    <thetext>Created attachment 404572
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673926</commentid>
    <comment_count>2</comment_count>
      <attachid>404948</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-07-22 12:22:08 -0700</bug_when>
    <thetext>Created attachment 404948
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1674734</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-07-24 10:25:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/66060898&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676406</commentid>
    <comment_count>4</comment_count>
      <attachid>405576</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-07-30 09:11:33 -0700</bug_when>
    <thetext>Created attachment 405576
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676707</commentid>
    <comment_count>5</comment_count>
      <attachid>405661</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-07-30 21:11:09 -0700</bug_when>
    <thetext>Created attachment 405661
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677695</commentid>
    <comment_count>6</comment_count>
      <attachid>405936</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-08-04 12:36:25 -0700</bug_when>
    <thetext>Created attachment 405936
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677810</commentid>
    <comment_count>7</comment_count>
      <attachid>405936</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2020-08-04 17:06:09 -0700</bug_when>
    <thetext>Comment on attachment 405936
Patch

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

&gt; Tools/Scripts/libraries/webkitcorepy/webkitcorepy/tests/mocks/context_stack_unittest.py:51
&gt; +

Could you tell me more about the use case of this? Can we just use mock.patch context manager to do this?

def foo():
    return &apos;a

with patch(&apos;__main__.foo&apos;, new=lambda : &apos;b&apos;):
    print(foo())
    with patch(&apos;__main__.foo&apos;, new=lambda : &apos;c&apos;):
        print(foo())
    print(foo())

I got:
b
c
b</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677811</commentid>
    <comment_count>8</comment_count>
      <attachid>405936</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2020-08-04 17:07:35 -0700</bug_when>
    <thetext>Comment on attachment 405936
Patch

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

&gt; Tools/Scripts/libraries/webkitcorepy/webkitcorepy/tests/mocks/context_stack_unittest.py:70
&gt; +

Maybe we want to check stack_1 again when we are out of stack_2 context.

&gt; Tools/Scripts/libraries/webkitcorepy/webkitcorepy/tests/mocks/context_stack_unittest.py:79
&gt; +                self.assertEqual(str(stack_2), to_be_replaced())

Ditto here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677826</commentid>
    <comment_count>9</comment_count>
      <attachid>405936</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-08-04 17:38:27 -0700</bug_when>
    <thetext>Comment on attachment 405936
Patch

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

&gt;&gt; Tools/Scripts/libraries/webkitcorepy/webkitcorepy/tests/mocks/context_stack_unittest.py:51
&gt;&gt; +
&gt; 
&gt; Could you tell me more about the use case of this? Can we just use mock.patch context manager to do this?
&gt; 
&gt; def foo():
&gt;     return &apos;a
&gt; 
&gt; with patch(&apos;__main__.foo&apos;, new=lambda : &apos;b&apos;):
&gt;     print(foo())
&gt;     with patch(&apos;__main__.foo&apos;, new=lambda : &apos;c&apos;):
&gt;         print(foo())
&gt;     print(foo())
&gt; 
&gt; I got:
&gt; b
&gt; c
&gt; b

This is what you should get.

This class is useful for mocking out functions which have arguments that need to be conceptually separated. Take, for example, mocking requests. First, to mock requests, we have, if I recall, 7 or 8 calls that need to be mocked in a very similar way, hence the list of patches, but more importantly, a specific logical context would only apply to a single domain. This is basically the case where I want to do this:

requests to https://results.webkit.org -&gt; handler_for_results_database(url)
requests to https://build.webkit.org -&gt; handler_for_build_webkit_org(url)

We could try and do this with a single mock function, but it&apos;s likely we already have a handler for each of these, it would be nice if we didn&apos;t have to re-build the handler each time, and do something like so:

with MockResultsWebKitOrg():
    with MockBuildWebKitOrg():
        # Stuff to test

And that&apos;s where the whole &apos;top&apos; and &apos;stack&apos; bit come in. Our generic mocking structure for requests will do something like this:

class RequestsMockStack(ContextStack):
    top = None

    ....

    def route(self, args):
        # Virtual function defined by children classes

    def _route(self, args):
        if meetsCondition(args):
            return self.route(args)
        if self.top:
            return self._route(args)
        raise Exception(&apos;Nothing in the stack matched request conditions&apos;)

So we can stack a bunch of request handlers together without having to re-declare the shared ones. You can do a similar thing with subprocess and even filesystem primitives.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677878</commentid>
    <comment_count>10</comment_count>
      <attachid>405936</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-08-04 21:13:22 -0700</bug_when>
    <thetext>Comment on attachment 405936
Patch

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

&gt;&gt; Tools/Scripts/libraries/webkitcorepy/webkitcorepy/tests/mocks/context_stack_unittest.py:70
&gt;&gt; +
&gt; 
&gt; Maybe we want to check stack_1 again when we are out of stack_2 context.

Good idea, making the change!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677879</commentid>
    <comment_count>11</comment_count>
      <attachid>405983</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-08-04 21:15:10 -0700</bug_when>
    <thetext>Created attachment 405983
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677886</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-08-04 22:15:34 -0700</bug_when>
    <thetext>Committed r265277: &lt;https://trac.webkit.org/changeset/265277&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 405983.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404572</attachid>
            <date>2020-07-17 10:30:35 -0700</date>
            <delta_ts>2020-07-22 12:22:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214484-20200717103034.patch</filename>
            <type>text/plain</type>
            <size>10892</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2NDUxNykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI1IEBACisyMDIwLTA3LTE3ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbd2Via2l0Y29yZXB5XSBBZGQgbW9ja3MuQ29udGV4dFN0YWNrCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQ0ODQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBjbGFzcyB3
aGljaCBhbGxvd3MgYSBjb250ZXh0IGxldmVyYWdpbmcgbW9jayB0byBzdGFjay4gVGhpcyBpcyB1
c2VmdWwgd2hlbgorICAgICAgICBtb2NraW5nIHJlcXVlc3RzIG9yIHN1YnByb2Nlc3MsIHdoZXJl
IGEgc2luZ2xlIGZ1bmN0aW9uIChvciBjbGFzcyBvZiBmdW5jdGlvbnMpCisgICAgICAgIGlzIGhh
bmRsaW5nIGNhbGxzIHRoYXQgYXJlIGRlc3RpbmVkIGZvciBkaWZmZXJlbnQgZm9yIGRpZmZlcmVu
dCBtb2NrIGhhbmRsZXJzLgorCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29y
ZXB5L3dlYmtpdGNvcmVweS9tb2NrczogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy9saWJyYXJp
ZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9tb2Nrcy9fX2luaXRfXy5weTogQWRkZWQuCisg
ICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9tb2Nr
cy9jb250ZXh0X3N0YWNrLnB5OiBBZGRlZC4KKyAgICAgICAgKENvbnRleHRTdGFjayk6IENsYXNz
IHdoaWNoIHN0YWNrcyBtb2NrIGhhbmRsZXJzLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVz
L3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvdGVzdHMvbW9ja3M6IEFkZGVkLgorICAgICAgICAq
IFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvdGVzdHMvbW9ja3Mv
X19pbml0X18ucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNv
cmVweS93ZWJraXRjb3JlcHkvdGVzdHMvbW9ja3MvY29udGV4dF9zdGFja191bml0dGVzdC5weTog
QWRkZWQuCisgICAgICAgICh0b19iZV9yZXBsYWNlZCk6IEZ1bmN0aW9uIHRvIGJlIG1vY2tlZAor
ICAgICAgICAoRXhhbXBsZVN0YWNrKTogRXhhbXBsZSBtb2NrIGhhbmRsZXIuCisgICAgICAgIChD
b250ZXh0U3RhY2spOiBUZXN0IHN1aXRlLgorCiAyMDIwLTA3LTE3ICBUcnVpdHQgU2F2ZWxsICA8
dHNhdmVsbEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNjQ0
NzcuCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvUkVBRE1FLm1k
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS9SRUFE
TUUubWQJKHJldmlzaW9uIDI2NDUwOCkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtp
dGNvcmVweS9SRUFETUUubWQJKHdvcmtpbmcgY29weSkKQEAgLTIsNiArMiw5IEBACiAKIFByb3Zp
ZGVzIGEgbnVtYmVyIG9mIHV0aWxpdGllcyBpbnRlbmRlZCB0byBzdXBwb3J0IGludGVybWVkaWF0
ZSB0byBhZHZhbmNlZCBQeXRob24gcHJvZ3JhbW1pbmcuCiAKKyMjIFJlcXVpcmVtZW50cworCitU
aGUgbW9jayBsaWJyYXJ5LgogCiAjIyBVc2FnZQogCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJh
cmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L21vY2tzL19faW5pdF9fLnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkv
bW9ja3MvX19pbml0X18ucHkJKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJp
ZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9tb2Nrcy9fX2luaXRfXy5weQkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDIzIEBACisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1l
dDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisjIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04KKyMgQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKK2Zyb20gd2Via2l0Y29yZXB5Lm1vY2tzLmNvbnRleHRfc3RhY2sgaW1wb3J0IENvbnRleHRT
dGFjawpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNv
cmVweS9tb2Nrcy9jb250ZXh0X3N0YWNrLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMv
bGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvbW9ja3MvY29udGV4dF9zdGFjay5w
eQkobm9uZXhpc3RlbnQpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkv
d2Via2l0Y29yZXB5L21vY2tzL2NvbnRleHRfc3RhY2sucHkJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw0MiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisjIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisjIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisj
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisjIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKK2NsYXNz
IENvbnRleHRTdGFjayhvYmplY3QpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNscyk6Cisg
ICAgICAgIHNlbGYucHJldmlvdXMgPSBOb25lCisgICAgICAgIHNlbGYucGF0Y2hlcyA9IFtdCisg
ICAgICAgIHNlbGYuY2xzID0gY2xzCisKKyAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgorICAgICAg
ICBzZWxmLnByZXZpb3VzID0gc2VsZi50b3AKKyAgICAgICAgc2VsZi5jbHMudG9wID0gc2VsZgor
ICAgICAgICBmb3IgcGF0Y2ggaW4gc2VsZi5wYXRjaGVzOgorICAgICAgICAgICAgcGF0Y2guX19l
bnRlcl9fKCkKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCBl
eGNfdHlwZSwgZXhjX3ZhbHVlLCB0cmFjZWJhY2spOgorICAgICAgICBmb3IgcGF0Y2ggaW4gcmV2
ZXJzZWQoc2VsZi5wYXRjaGVzKToKKyAgICAgICAgICAgIHBhdGNoLl9fZXhpdF9fKGV4Y190eXBl
LCBleGNfdmFsdWUsIHRyYWNlYmFjaykKKyAgICAgICAgc2VsZi5jbHMudG9wID0gc2VsZi5wcmV2
aW91cworICAgICAgICBzZWxmLnByZXZpb3VzID0gTm9uZQpJbmRleDogVG9vbHMvU2NyaXB0cy9s
aWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS90ZXN0cy9tb2Nrcy9fX2luaXRfXy5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Vi
a2l0Y29yZXB5L3Rlc3RzL21vY2tzL19faW5pdF9fLnB5CShub25leGlzdGVudCkKKysrIFRvb2xz
L1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvdGVzdHMvbW9ja3Mv
X19pbml0X18ucHkJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMSBAQAorIyBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisjIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKKyMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisjIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTCisjIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Vi
a2l0Y29yZXB5L3dlYmtpdGNvcmVweS90ZXN0cy9tb2Nrcy9jb250ZXh0X3N0YWNrX3VuaXR0ZXN0
LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93
ZWJraXRjb3JlcHkvdGVzdHMvbW9ja3MvY29udGV4dF9zdGFja191bml0dGVzdC5weQkobm9uZXhp
c3RlbnQpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29y
ZXB5L3Rlc3RzL21vY2tzL2NvbnRleHRfc3RhY2tfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw3OSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6Cisj
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisj
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorIyBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisjIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyMgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OCisjIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisjIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitp
bXBvcnQgbW9jaworaW1wb3J0IHVuaXR0ZXN0CisKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBt
b2NrcworCisKK2RlZiB0b19iZV9yZXBsYWNlZCgpOgorICAgIHJldHVybiBOb25lCisKKworY2xh
c3MgRXhhbXBsZVN0YWNrKG1vY2tzLkNvbnRleHRTdGFjayk6CisgICAgdG9wID0gTm9uZQorCisg
ICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzdXBlcihFeGFtcGxlU3RhY2ssIHNlbGYp
Ll9faW5pdF9fKGNscz1FeGFtcGxlU3RhY2spCisgICAgICAgIHNlbGYucGF0Y2hlcy5hcHBlbmQo
bW9jay5wYXRjaCgKKyAgICAgICAgICAgICd3ZWJraXRjb3JlcHkudGVzdHMubW9ja3MuY29udGV4
dF9zdGFja191bml0dGVzdC50b19iZV9yZXBsYWNlZCcsCisgICAgICAgICAgICBuZXc9bGFtYmRh
OiBzdHIoc2VsZiksCisgICAgICAgICkpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgaGVp
Z2h0KGNscyk6CisgICAgICAgIGNvdW50ID0gMAorICAgICAgICBjdXJyZW50ID0gY2xzLnRvcAor
ICAgICAgICB3aGlsZSBjdXJyZW50OgorICAgICAgICAgICAgY3VycmVudCA9IGN1cnJlbnQucHJl
dmlvdXMKKyAgICAgICAgICAgIGNvdW50ICs9IDEKKyAgICAgICAgcmV0dXJuIGNvdW50CisKKwor
Y2xhc3MgQ29udGV4dFN0YWNrKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X3N0
YWNraW5nKHNlbGYpOgorICAgICAgICBzdGFja18xID0gRXhhbXBsZVN0YWNrKCkKKyAgICAgICAg
c3RhY2tfMiA9IEV4YW1wbGVTdGFjaygpCisKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoRXhh
bXBsZVN0YWNrLnRvcCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBFeGFtcGxlU3RhY2su
aGVpZ2h0KCkpCisgICAgICAgIHdpdGggc3RhY2tfMToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoMSwgRXhhbXBsZVN0YWNrLmhlaWdodCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChFeGFtcGxlU3RhY2sudG9wLCBzdGFja18xKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJ
c05vbmUoRXhhbXBsZVN0YWNrLnRvcC5wcmV2aW91cykKKworICAgICAgICAgICAgd2l0aCBzdGFj
a18yOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiwgRXhhbXBsZVN0YWNrLmhl
aWdodCgpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRXhhbXBsZVN0YWNrLnRv
cCwgc3RhY2tfMikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEV4YW1wbGVTdGFj
ay50b3AucHJldmlvdXMsIHN0YWNrXzEpCisKKyAgICBkZWYgdGVzdF9wYXRjaChzZWxmKToKKyAg
ICAgICAgc3RhY2tfMSA9IEV4YW1wbGVTdGFjaygpCisgICAgICAgIHN0YWNrXzIgPSBFeGFtcGxl
U3RhY2soKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHRvX2JlX3JlcGxhY2VkKCkpCisg
ICAgICAgIHdpdGggc3RhY2tfMToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHN0
YWNrXzEpLCB0b19iZV9yZXBsYWNlZCgpKQorICAgICAgICAgICAgd2l0aCBzdGFja18yOgorICAg
ICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHN0YWNrXzIpLCB0b19iZV9yZXBsYWNl
ZCgpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404948</attachid>
            <date>2020-07-22 12:22:08 -0700</date>
            <delta_ts>2020-07-30 09:11:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214484-20200722122208.patch</filename>
            <type>text/plain</type>
            <size>11476</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2NDcxOCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI1IEBACisyMDIwLTA3LTIyICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbd2Via2l0Y29yZXB5XSBBZGQgbW9ja3MuQ29udGV4dFN0YWNrCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQ0ODQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBjbGFzcyB3
aGljaCBhbGxvd3MgYSBjb250ZXh0IGxldmVyYWdpbmcgbW9jayB0byBzdGFjay4gVGhpcyBpcyB1
c2VmdWwgd2hlbgorICAgICAgICBtb2NraW5nIHJlcXVlc3RzIG9yIHN1YnByb2Nlc3MsIHdoZXJl
IGEgc2luZ2xlIGZ1bmN0aW9uIChvciBjbGFzcyBvZiBmdW5jdGlvbnMpCisgICAgICAgIGlzIGhh
bmRsaW5nIGNhbGxzIHRoYXQgYXJlIGRlc3RpbmVkIGZvciBkaWZmZXJlbnQgZm9yIGRpZmZlcmVu
dCBtb2NrIGhhbmRsZXJzLgorCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29y
ZXB5L3dlYmtpdGNvcmVweS9tb2NrczogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy9saWJyYXJp
ZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9tb2Nrcy9fX2luaXRfXy5weTogQWRkZWQuCisg
ICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9tb2Nr
cy9jb250ZXh0X3N0YWNrLnB5OiBBZGRlZC4KKyAgICAgICAgKENvbnRleHRTdGFjayk6IENsYXNz
IHdoaWNoIHN0YWNrcyBtb2NrIGhhbmRsZXJzLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVz
L3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvdGVzdHMvbW9ja3M6IEFkZGVkLgorICAgICAgICAq
IFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvdGVzdHMvbW9ja3Mv
X19pbml0X18ucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNv
cmVweS93ZWJraXRjb3JlcHkvdGVzdHMvbW9ja3MvY29udGV4dF9zdGFja191bml0dGVzdC5weTog
QWRkZWQuCisgICAgICAgICh0b19iZV9yZXBsYWNlZCk6IEZ1bmN0aW9uIHRvIGJlIG1vY2tlZAor
ICAgICAgICAoRXhhbXBsZVN0YWNrKTogRXhhbXBsZSBtb2NrIGhhbmRsZXIuCisgICAgICAgIChD
b250ZXh0U3RhY2spOiBUZXN0IHN1aXRlLgorCiAyMDIwLTA3LTIyICBZdXN1a2UgU3V6dWtpICA8
eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgVGVzdFdURi5XVEZfUGFja2VkLlBhY2tlZEFs
aWduZWRQdHIgc2hvdWxkIGJlIGFkanVzdGVkIGJlY2F1c2UgQVJNIG1hY09TIGlzIHVzaW5nIDQ4
IGJpdHMgZm9yIGVmZmVjdGl2ZSBhZGRyZXNzIHdpZHRoCkluZGV4OiBUb29scy9TY3JpcHRzL2xp
YnJhcmllcy93ZWJraXRjb3JlcHkvUkVBRE1FLm1kCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS9SRUFETUUubWQJKHJldmlzaW9uIDI2NDcxOCkKKysr
IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS9SRUFETUUubWQJKHdvcmtpbmcg
Y29weSkKQEAgLTIsNiArMiw5IEBACiAKIFByb3ZpZGVzIGEgbnVtYmVyIG9mIHV0aWxpdGllcyBp
bnRlbmRlZCB0byBzdXBwb3J0IGludGVybWVkaWF0ZSB0byBhZHZhbmNlZCBQeXRob24gcHJvZ3Jh
bW1pbmcuCiAKKyMjIFJlcXVpcmVtZW50cworCitUaGUgbW9jayBsaWJyYXJ5LgogCiAjIyBVc2Fn
ZQogCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29y
ZXB5L19faW5pdF9fLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dl
YmtpdGNvcmVweS93ZWJraXRjb3JlcHkvX19pbml0X18ucHkJKHJldmlzaW9uIDI2NDcxOCkKKysr
IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvX19pbml0
X18ucHkJKHdvcmtpbmcgY29weSkKQEAgLTIzLDQgKzIzLDQgQEAKIGZyb20gd2Via2l0Y29yZXB5
LnZlcnNpb24gaW1wb3J0IFZlcnNpb24KIGZyb20gd2Via2l0Y29yZXB5LnN0cmluZ191dGlscyBp
bXBvcnQgQnl0ZXNJTywgU3RyaW5nSU8sIFVuaWNvZGVJTywgdW5pY29kZQogCi12ZXJzaW9uID0g
VmVyc2lvbigwLCAwLCAyKQordmVyc2lvbiA9IFZlcnNpb24oMCwgMCwgMykKSW5kZXg6IFRvb2xz
L1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvbW9ja3MvX19pbml0
X18ucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5
L3dlYmtpdGNvcmVweS9tb2Nrcy9fX2luaXRfXy5weQkobm9uZXhpc3RlbnQpCisrKyBUb29scy9T
Y3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L21vY2tzL19faW5pdF9f
LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjMgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFO
RCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQorIyBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworIyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisj
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorIyBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUworIyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworZnJvbSB3ZWJraXRjb3JlcHkubW9ja3MuY29udGV4dF9zdGFjayBp
bXBvcnQgQ29udGV4dFN0YWNrCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRj
b3JlcHkvd2Via2l0Y29yZXB5L21vY2tzL2NvbnRleHRfc3RhY2sucHkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9tb2Nrcy9j
b250ZXh0X3N0YWNrLnB5CShub25leGlzdGVudCkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVz
L3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvbW9ja3MvY29udGV4dF9zdGFjay5weQkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDQyIEBACisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJl
IG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisjIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04KKyMgQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKKworY2xhc3MgQ29udGV4dFN0YWNrKG9iamVjdCk6CisKKyAgICBkZWYgX19pbml0X18o
c2VsZiwgY2xzKToKKyAgICAgICAgc2VsZi5wcmV2aW91cyA9IE5vbmUKKyAgICAgICAgc2VsZi5w
YXRjaGVzID0gW10KKyAgICAgICAgc2VsZi5jbHMgPSBjbHMKKworICAgIGRlZiBfX2VudGVyX18o
c2VsZik6CisgICAgICAgIHNlbGYucHJldmlvdXMgPSBzZWxmLnRvcAorICAgICAgICBzZWxmLmNs
cy50b3AgPSBzZWxmCisgICAgICAgIGZvciBwYXRjaCBpbiBzZWxmLnBhdGNoZXM6CisgICAgICAg
ICAgICBwYXRjaC5fX2VudGVyX18oKQorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIF9f
ZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsdWUsIHRyYWNlYmFjayk6CisgICAgICAgIGZv
ciBwYXRjaCBpbiByZXZlcnNlZChzZWxmLnBhdGNoZXMpOgorICAgICAgICAgICAgcGF0Y2guX19l
eGl0X18oZXhjX3R5cGUsIGV4Y192YWx1ZSwgdHJhY2ViYWNrKQorICAgICAgICBzZWxmLmNscy50
b3AgPSBzZWxmLnByZXZpb3VzCisgICAgICAgIHNlbGYucHJldmlvdXMgPSBOb25lCkluZGV4OiBU
b29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L3Rlc3RzL21v
Y2tzL19faW5pdF9fLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dl
YmtpdGNvcmVweS93ZWJraXRjb3JlcHkvdGVzdHMvbW9ja3MvX19pbml0X18ucHkJKG5vbmV4aXN0
ZW50KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVw
eS90ZXN0cy9tb2Nrcy9fX2luaXRfXy5weQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIxIEBA
CisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
CisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyMgQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCkluZGV4OiBUb29scy9TY3JpcHRz
L2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L3Rlc3RzL21vY2tzL2NvbnRleHRf
c3RhY2tfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMv
d2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS90ZXN0cy9tb2Nrcy9jb250ZXh0X3N0YWNrX3VuaXR0
ZXN0LnB5CShub25leGlzdGVudCkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNv
cmVweS93ZWJraXRjb3JlcHkvdGVzdHMvbW9ja3MvY29udGV4dF9zdGFja191bml0dGVzdC5weQko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc5IEBACisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5Z
CisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04KKyMgQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMKKyMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisKK2ltcG9ydCBtb2NrCitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSB3ZWJraXRj
b3JlcHkgaW1wb3J0IG1vY2tzCisKKworZGVmIHRvX2JlX3JlcGxhY2VkKCk6CisgICAgcmV0dXJu
IE5vbmUKKworCitjbGFzcyBFeGFtcGxlU3RhY2sobW9ja3MuQ29udGV4dFN0YWNrKToKKyAgICB0
b3AgPSBOb25lCisKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHN1cGVyKEV4YW1w
bGVTdGFjaywgc2VsZikuX19pbml0X18oY2xzPUV4YW1wbGVTdGFjaykKKyAgICAgICAgc2VsZi5w
YXRjaGVzLmFwcGVuZChtb2NrLnBhdGNoKAorICAgICAgICAgICAgJ3dlYmtpdGNvcmVweS50ZXN0
cy5tb2Nrcy5jb250ZXh0X3N0YWNrX3VuaXR0ZXN0LnRvX2JlX3JlcGxhY2VkJywKKyAgICAgICAg
ICAgIG5ldz1sYW1iZGE6IHN0cihzZWxmKSwKKyAgICAgICAgKSkKKworICAgIEBjbGFzc21ldGhv
ZAorICAgIGRlZiBoZWlnaHQoY2xzKToKKyAgICAgICAgY291bnQgPSAwCisgICAgICAgIGN1cnJl
bnQgPSBjbHMudG9wCisgICAgICAgIHdoaWxlIGN1cnJlbnQ6CisgICAgICAgICAgICBjdXJyZW50
ID0gY3VycmVudC5wcmV2aW91cworICAgICAgICAgICAgY291bnQgKz0gMQorICAgICAgICByZXR1
cm4gY291bnQKKworCitjbGFzcyBDb250ZXh0U3RhY2sodW5pdHRlc3QuVGVzdENhc2UpOgorCisg
ICAgZGVmIHRlc3Rfc3RhY2tpbmcoc2VsZik6CisgICAgICAgIHN0YWNrXzEgPSBFeGFtcGxlU3Rh
Y2soKQorICAgICAgICBzdGFja18yID0gRXhhbXBsZVN0YWNrKCkKKworICAgICAgICBzZWxmLmFz
c2VydElzTm9uZShFeGFtcGxlU3RhY2sudG9wKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAs
IEV4YW1wbGVTdGFjay5oZWlnaHQoKSkKKyAgICAgICAgd2l0aCBzdGFja18xOgorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBFeGFtcGxlU3RhY2suaGVpZ2h0KCkpCisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKEV4YW1wbGVTdGFjay50b3AsIHN0YWNrXzEpCisgICAgICAgICAg
ICBzZWxmLmFzc2VydElzTm9uZShFeGFtcGxlU3RhY2sudG9wLnByZXZpb3VzKQorCisgICAgICAg
ICAgICB3aXRoIHN0YWNrXzI6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyLCBF
eGFtcGxlU3RhY2suaGVpZ2h0KCkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChF
eGFtcGxlU3RhY2sudG9wLCBzdGFja18yKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoRXhhbXBsZVN0YWNrLnRvcC5wcmV2aW91cywgc3RhY2tfMSkKKworICAgIGRlZiB0ZXN0X3Bh
dGNoKHNlbGYpOgorICAgICAgICBzdGFja18xID0gRXhhbXBsZVN0YWNrKCkKKyAgICAgICAgc3Rh
Y2tfMiA9IEV4YW1wbGVTdGFjaygpCisKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUodG9fYmVf
cmVwbGFjZWQoKSkKKyAgICAgICAgd2l0aCBzdGFja18xOgorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChzdHIoc3RhY2tfMSksIHRvX2JlX3JlcGxhY2VkKCkpCisgICAgICAgICAgICB3aXRo
IHN0YWNrXzI6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoc3RhY2tfMiks
IHRvX2JlX3JlcGxhY2VkKCkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405576</attachid>
            <date>2020-07-30 09:11:33 -0700</date>
            <delta_ts>2020-07-30 21:11:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214484-20200730091132.patch</filename>
            <type>text/plain</type>
            <size>11110</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2NTA4MikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI1IEBACisyMDIwLTA3LTMwICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbd2Via2l0Y29yZXB5XSBBZGQgbW9ja3MuQ29udGV4dFN0YWNrCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQ0ODQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBjbGFzcyB3
aGljaCBhbGxvd3MgYSBjb250ZXh0IGxldmVyYWdpbmcgbW9jayB0byBzdGFjay4gVGhpcyBpcyB1
c2VmdWwgd2hlbgorICAgICAgICBtb2NraW5nIHJlcXVlc3RzIG9yIHN1YnByb2Nlc3MsIHdoZXJl
IGEgc2luZ2xlIGZ1bmN0aW9uIChvciBjbGFzcyBvZiBmdW5jdGlvbnMpCisgICAgICAgIGlzIGhh
bmRsaW5nIGNhbGxzIHRoYXQgYXJlIGRlc3RpbmVkIGZvciBkaWZmZXJlbnQgZm9yIGRpZmZlcmVu
dCBtb2NrIGhhbmRsZXJzLgorCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29y
ZXB5L3dlYmtpdGNvcmVweS9tb2NrczogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy9saWJyYXJp
ZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9tb2Nrcy9fX2luaXRfXy5weTogQWRkZWQuCisg
ICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9tb2Nr
cy9jb250ZXh0X3N0YWNrLnB5OiBBZGRlZC4KKyAgICAgICAgKENvbnRleHRTdGFjayk6IENsYXNz
IHdoaWNoIHN0YWNrcyBtb2NrIGhhbmRsZXJzLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVz
L3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvdGVzdHMvbW9ja3M6IEFkZGVkLgorICAgICAgICAq
IFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvdGVzdHMvbW9ja3Mv
X19pbml0X18ucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNv
cmVweS93ZWJraXRjb3JlcHkvdGVzdHMvbW9ja3MvY29udGV4dF9zdGFja191bml0dGVzdC5weTog
QWRkZWQuCisgICAgICAgICh0b19iZV9yZXBsYWNlZCk6IEZ1bmN0aW9uIHRvIGJlIG1vY2tlZAor
ICAgICAgICAoRXhhbXBsZVN0YWNrKTogRXhhbXBsZSBtb2NrIGhhbmRsZXIuCisgICAgICAgIChD
b250ZXh0U3RhY2spOiBUZXN0IHN1aXRlLgorCiAyMDIwLTA3LTMwICBKb25hdGhhbiBCZWRhcmQg
IDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbQmlnIFN1cl0gQWRkIGxpbWl0ZWQgU2Vl
ZCAzIHN1cHBvcnQgdG8gRVdTCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRj
b3JlcHkvd2Via2l0Y29yZXB5L19faW5pdF9fLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvX19pbml0X18ucHkJKHJldmlz
aW9uIDI2NTA4MikKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJr
aXRjb3JlcHkvX19pbml0X18ucHkJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAgbG9n
ID0gbG9nZ2luZy5nZXRMb2dnZXIoJ3dlYmtpdGNvcmVweScpCiBmcm9tIHdlYmtpdGNvcmVweS52
ZXJzaW9uIGltcG9ydCBWZXJzaW9uCiBmcm9tIHdlYmtpdGNvcmVweS5zdHJpbmdfdXRpbHMgaW1w
b3J0IEJ5dGVzSU8sIFN0cmluZ0lPLCBVbmljb2RlSU8sIHVuaWNvZGUKIAotdmVyc2lvbiA9IFZl
cnNpb24oMCwgMCwgMykKK3ZlcnNpb24gPSBWZXJzaW9uKDAsIDAsIDQpCiAKIGZyb20gd2Via2l0
Y29yZXB5LmF1dG9pbnN0YWxsIGltcG9ydCBQYWNrYWdlLCBBdXRvSW5zdGFsbAogaWYgc3lzLnZl
cnNpb25faW5mbyA+ICgzLCAwKToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtp
dGNvcmVweS93ZWJraXRjb3JlcHkvbW9ja3MvX19pbml0X18ucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9tb2Nrcy9fX2lu
aXRfXy5weQkobm9uZXhpc3RlbnQpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRj
b3JlcHkvd2Via2l0Y29yZXB5L21vY2tzL19faW5pdF9fLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMjMgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorIyBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworIyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisjIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgor
IyBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworIyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworZnJvbSB3
ZWJraXRjb3JlcHkubW9ja3MuY29udGV4dF9zdGFjayBpbXBvcnQgQ29udGV4dFN0YWNrCkluZGV4
OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L21vY2tz
L2NvbnRleHRfc3RhY2sucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMv
d2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9tb2Nrcy9jb250ZXh0X3N0YWNrLnB5CShub25leGlz
dGVudCkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3Jl
cHkvbW9ja3MvY29udGV4dF9zdGFjay5weQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQyIEBA
CisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
CisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyMgQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworY2xhc3MgQ29udGV4dFN0
YWNrKG9iamVjdCk6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgY2xzKToKKyAgICAgICAgc2Vs
Zi5wcmV2aW91cyA9IE5vbmUKKyAgICAgICAgc2VsZi5wYXRjaGVzID0gW10KKyAgICAgICAgc2Vs
Zi5jbHMgPSBjbHMKKworICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgIHNlbGYucHJl
dmlvdXMgPSBzZWxmLnRvcAorICAgICAgICBzZWxmLmNscy50b3AgPSBzZWxmCisgICAgICAgIGZv
ciBwYXRjaCBpbiBzZWxmLnBhdGNoZXM6CisgICAgICAgICAgICBwYXRjaC5fX2VudGVyX18oKQor
ICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIF9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBl
eGNfdmFsdWUsIHRyYWNlYmFjayk6CisgICAgICAgIGZvciBwYXRjaCBpbiByZXZlcnNlZChzZWxm
LnBhdGNoZXMpOgorICAgICAgICAgICAgcGF0Y2guX19leGl0X18oZXhjX3R5cGUsIGV4Y192YWx1
ZSwgdHJhY2ViYWNrKQorICAgICAgICBzZWxmLmNscy50b3AgPSBzZWxmLnByZXZpb3VzCisgICAg
ICAgIHNlbGYucHJldmlvdXMgPSBOb25lCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93
ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L3Rlc3RzL21vY2tzL19faW5pdF9fLnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkv
dGVzdHMvbW9ja3MvX19pbml0X18ucHkJKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvU2NyaXB0cy9s
aWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS90ZXN0cy9tb2Nrcy9fX2luaXRfXy5w
eQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIxIEBACisjIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQg
QU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04KKyMgQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMKKyMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkv
d2Via2l0Y29yZXB5L3Rlc3RzL21vY2tzL2NvbnRleHRfc3RhY2tfdW5pdHRlc3QucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVw
eS90ZXN0cy9tb2Nrcy9jb250ZXh0X3N0YWNrX3VuaXR0ZXN0LnB5CShub25leGlzdGVudCkKKysr
IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvdGVzdHMv
bW9ja3MvY29udGV4dF9zdGFja191bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDc5IEBACisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyMgQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBtb2Nr
CitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IG1vY2tzCisKKwor
ZGVmIHRvX2JlX3JlcGxhY2VkKCk6CisgICAgcmV0dXJuIE5vbmUKKworCitjbGFzcyBFeGFtcGxl
U3RhY2sobW9ja3MuQ29udGV4dFN0YWNrKToKKyAgICB0b3AgPSBOb25lCisKKyAgICBkZWYgX19p
bml0X18oc2VsZik6CisgICAgICAgIHN1cGVyKEV4YW1wbGVTdGFjaywgc2VsZikuX19pbml0X18o
Y2xzPUV4YW1wbGVTdGFjaykKKyAgICAgICAgc2VsZi5wYXRjaGVzLmFwcGVuZChtb2NrLnBhdGNo
KAorICAgICAgICAgICAgJ3dlYmtpdGNvcmVweS50ZXN0cy5tb2Nrcy5jb250ZXh0X3N0YWNrX3Vu
aXR0ZXN0LnRvX2JlX3JlcGxhY2VkJywKKyAgICAgICAgICAgIG5ldz1sYW1iZGE6IHN0cihzZWxm
KSwKKyAgICAgICAgKSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBoZWlnaHQoY2xzKToK
KyAgICAgICAgY291bnQgPSAwCisgICAgICAgIGN1cnJlbnQgPSBjbHMudG9wCisgICAgICAgIHdo
aWxlIGN1cnJlbnQ6CisgICAgICAgICAgICBjdXJyZW50ID0gY3VycmVudC5wcmV2aW91cworICAg
ICAgICAgICAgY291bnQgKz0gMQorICAgICAgICByZXR1cm4gY291bnQKKworCitjbGFzcyBDb250
ZXh0U3RhY2sodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3Rfc3RhY2tpbmcoc2Vs
Zik6CisgICAgICAgIHN0YWNrXzEgPSBFeGFtcGxlU3RhY2soKQorICAgICAgICBzdGFja18yID0g
RXhhbXBsZVN0YWNrKCkKKworICAgICAgICBzZWxmLmFzc2VydElzTm9uZShFeGFtcGxlU3RhY2su
dG9wKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIEV4YW1wbGVTdGFjay5oZWlnaHQoKSkK
KyAgICAgICAgd2l0aCBzdGFja18xOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBF
eGFtcGxlU3RhY2suaGVpZ2h0KCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEV4YW1w
bGVTdGFjay50b3AsIHN0YWNrXzEpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShFeGFt
cGxlU3RhY2sudG9wLnByZXZpb3VzKQorCisgICAgICAgICAgICB3aXRoIHN0YWNrXzI6CisgICAg
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyLCBFeGFtcGxlU3RhY2suaGVpZ2h0KCkpCisg
ICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChFeGFtcGxlU3RhY2sudG9wLCBzdGFja18y
KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRXhhbXBsZVN0YWNrLnRvcC5wcmV2
aW91cywgc3RhY2tfMSkKKworICAgIGRlZiB0ZXN0X3BhdGNoKHNlbGYpOgorICAgICAgICBzdGFj
a18xID0gRXhhbXBsZVN0YWNrKCkKKyAgICAgICAgc3RhY2tfMiA9IEV4YW1wbGVTdGFjaygpCisK
KyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUodG9fYmVfcmVwbGFjZWQoKSkKKyAgICAgICAgd2l0
aCBzdGFja18xOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoc3RhY2tfMSksIHRv
X2JlX3JlcGxhY2VkKCkpCisgICAgICAgICAgICB3aXRoIHN0YWNrXzI6CisgICAgICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoc3RhY2tfMiksIHRvX2JlX3JlcGxhY2VkKCkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405661</attachid>
            <date>2020-07-30 21:11:09 -0700</date>
            <delta_ts>2020-08-04 12:36:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214484-20200730211108.patch</filename>
            <type>text/plain</type>
            <size>11130</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2NTEyOSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI1IEBACisyMDIwLTA3LTMwICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbd2Via2l0Y29yZXB5XSBBZGQgbW9ja3MuQ29udGV4dFN0YWNrCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQ0ODQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBjbGFzcyB3
aGljaCBhbGxvd3MgYSBjb250ZXh0IGxldmVyYWdpbmcgbW9jayB0byBzdGFjay4gVGhpcyBpcyB1
c2VmdWwgd2hlbgorICAgICAgICBtb2NraW5nIHJlcXVlc3RzIG9yIHN1YnByb2Nlc3MsIHdoZXJl
IGEgc2luZ2xlIGZ1bmN0aW9uIChvciBjbGFzcyBvZiBmdW5jdGlvbnMpCisgICAgICAgIGlzIGhh
bmRsaW5nIGNhbGxzIHRoYXQgYXJlIGRlc3RpbmVkIGZvciBkaWZmZXJlbnQgZm9yIGRpZmZlcmVu
dCBtb2NrIGhhbmRsZXJzLgorCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29y
ZXB5L3dlYmtpdGNvcmVweS9tb2NrczogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy9saWJyYXJp
ZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9tb2Nrcy9fX2luaXRfXy5weTogQWRkZWQuCisg
ICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9tb2Nr
cy9jb250ZXh0X3N0YWNrLnB5OiBBZGRlZC4KKyAgICAgICAgKENvbnRleHRTdGFjayk6IENsYXNz
IHdoaWNoIHN0YWNrcyBtb2NrIGhhbmRsZXJzLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVz
L3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvdGVzdHMvbW9ja3M6IEFkZGVkLgorICAgICAgICAq
IFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvdGVzdHMvbW9ja3Mv
X19pbml0X18ucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNv
cmVweS93ZWJraXRjb3JlcHkvdGVzdHMvbW9ja3MvY29udGV4dF9zdGFja191bml0dGVzdC5weTog
QWRkZWQuCisgICAgICAgICh0b19iZV9yZXBsYWNlZCk6IEZ1bmN0aW9uIHRvIGJlIG1vY2tlZAor
ICAgICAgICAoRXhhbXBsZVN0YWNrKTogRXhhbXBsZSBtb2NrIGhhbmRsZXIuCisgICAgICAgIChD
b250ZXh0U3RhY2spOiBUZXN0IHN1aXRlLgorCiAyMDIwLTA3LTMwICBKb25hdGhhbiBCZWRhcmQg
IDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbd2Via2l0Y29yZXB5XSBBZGQgYW4gYXV0
by1pbnN0YWxsZXIgKFVucmV2aWV3ZWQgZm9sbG93LXVwIGZpeCkKSW5kZXg6IFRvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvX19pbml0X18ucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVw
eS9fX2luaXRfXy5weQkocmV2aXNpb24gMjY1MTI5KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJp
ZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9fX2luaXRfXy5weQkod29ya2luZyBjb3B5KQpA
QCAtMjgsNyArMjgsNyBAQCBsb2cgPSBsb2dnaW5nLmdldExvZ2dlcignd2Via2l0Y29yZXB5JykK
IGZyb20gd2Via2l0Y29yZXB5LnZlcnNpb24gaW1wb3J0IFZlcnNpb24KIGZyb20gd2Via2l0Y29y
ZXB5LnN0cmluZ191dGlscyBpbXBvcnQgQnl0ZXNJTywgU3RyaW5nSU8sIFVuaWNvZGVJTywgdW5p
Y29kZQogCi12ZXJzaW9uID0gVmVyc2lvbigwLCAwLCA0KQordmVyc2lvbiA9IFZlcnNpb24oMCwg
MCwgNSkKIAogZnJvbSB3ZWJraXRjb3JlcHkuYXV0b2luc3RhbGwgaW1wb3J0IFBhY2thZ2UsIEF1
dG9JbnN0YWxsCiBpZiBzeXMudmVyc2lvbl9pbmZvID4gKDMsIDApOgpJbmRleDogVG9vbHMvU2Ny
aXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9tb2Nrcy9fX2luaXRfXy5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Vi
a2l0Y29yZXB5L21vY2tzL19faW5pdF9fLnB5CShub25leGlzdGVudCkKKysrIFRvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvbW9ja3MvX19pbml0X18ucHkJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFO
WQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisjIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyMgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OCisjIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTCisjIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCitmcm9tIHdlYmtpdGNvcmVweS5tb2Nrcy5jb250ZXh0X3N0YWNrIGltcG9y
dCBDb250ZXh0U3RhY2sKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVw
eS93ZWJraXRjb3JlcHkvbW9ja3MvY29udGV4dF9zdGFjay5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L21vY2tzL2NvbnRl
eHRfc3RhY2sucHkJKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Vi
a2l0Y29yZXB5L3dlYmtpdGNvcmVweS9tb2Nrcy9jb250ZXh0X3N0YWNrLnB5CSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNDIgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0
OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyMgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorIyBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworIyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisjIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTgorIyBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworIyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworCitjbGFzcyBDb250ZXh0U3RhY2sob2JqZWN0KToKKworICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBjbHMpOgorICAgICAgICBzZWxmLnByZXZpb3VzID0gTm9uZQorICAgICAgICBzZWxmLnBhdGNo
ZXMgPSBbXQorICAgICAgICBzZWxmLmNscyA9IGNscworCisgICAgZGVmIF9fZW50ZXJfXyhzZWxm
KToKKyAgICAgICAgc2VsZi5wcmV2aW91cyA9IHNlbGYudG9wCisgICAgICAgIHNlbGYuY2xzLnRv
cCA9IHNlbGYKKyAgICAgICAgZm9yIHBhdGNoIGluIHNlbGYucGF0Y2hlczoKKyAgICAgICAgICAg
IHBhdGNoLl9fZW50ZXJfXygpCisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX19leGl0
X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWx1ZSwgdHJhY2ViYWNrKToKKyAgICAgICAgZm9yIHBh
dGNoIGluIHJldmVyc2VkKHNlbGYucGF0Y2hlcyk6CisgICAgICAgICAgICBwYXRjaC5fX2V4aXRf
XyhleGNfdHlwZSwgZXhjX3ZhbHVlLCB0cmFjZWJhY2spCisgICAgICAgIHNlbGYuY2xzLnRvcCA9
IHNlbGYucHJldmlvdXMKKyAgICAgICAgc2VsZi5wcmV2aW91cyA9IE5vbmUKSW5kZXg6IFRvb2xz
L1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvdGVzdHMvbW9ja3Mv
X19pbml0X18ucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0
Y29yZXB5L3dlYmtpdGNvcmVweS90ZXN0cy9tb2Nrcy9fX2luaXRfXy5weQkobm9uZXhpc3RlbnQp
CisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L3Rl
c3RzL21vY2tzL19faW5pdF9fLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjEgQEAKKyMg
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIwor
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorIyBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworIyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisjIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorIyBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworIyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGli
cmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvdGVzdHMvbW9ja3MvY29udGV4dF9zdGFj
a191bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJr
aXRjb3JlcHkvd2Via2l0Y29yZXB5L3Rlc3RzL21vY2tzL2NvbnRleHRfc3RhY2tfdW5pdHRlc3Qu
cHkJKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5
L3dlYmtpdGNvcmVweS90ZXN0cy9tb2Nrcy9jb250ZXh0X3N0YWNrX3VuaXR0ZXN0LnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNzkgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBh
cmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyMg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorIyBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworIyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisjIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTgorIyBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwor
IyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworaW1wb3J0IG1vY2sKK2ltcG9ydCB1bml0dGVzdAorCitmcm9tIHdlYmtpdGNvcmVw
eSBpbXBvcnQgbW9ja3MKKworCitkZWYgdG9fYmVfcmVwbGFjZWQoKToKKyAgICByZXR1cm4gTm9u
ZQorCisKK2NsYXNzIEV4YW1wbGVTdGFjayhtb2Nrcy5Db250ZXh0U3RhY2spOgorICAgIHRvcCA9
IE5vbmUKKworICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc3VwZXIoRXhhbXBsZVN0
YWNrLCBzZWxmKS5fX2luaXRfXyhjbHM9RXhhbXBsZVN0YWNrKQorICAgICAgICBzZWxmLnBhdGNo
ZXMuYXBwZW5kKG1vY2sucGF0Y2goCisgICAgICAgICAgICAnd2Via2l0Y29yZXB5LnRlc3RzLm1v
Y2tzLmNvbnRleHRfc3RhY2tfdW5pdHRlc3QudG9fYmVfcmVwbGFjZWQnLAorICAgICAgICAgICAg
bmV3PWxhbWJkYTogc3RyKHNlbGYpLAorICAgICAgICApKQorCisgICAgQGNsYXNzbWV0aG9kCisg
ICAgZGVmIGhlaWdodChjbHMpOgorICAgICAgICBjb3VudCA9IDAKKyAgICAgICAgY3VycmVudCA9
IGNscy50b3AKKyAgICAgICAgd2hpbGUgY3VycmVudDoKKyAgICAgICAgICAgIGN1cnJlbnQgPSBj
dXJyZW50LnByZXZpb3VzCisgICAgICAgICAgICBjb3VudCArPSAxCisgICAgICAgIHJldHVybiBj
b3VudAorCisKK2NsYXNzIENvbnRleHRTdGFjayh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBk
ZWYgdGVzdF9zdGFja2luZyhzZWxmKToKKyAgICAgICAgc3RhY2tfMSA9IEV4YW1wbGVTdGFjaygp
CisgICAgICAgIHN0YWNrXzIgPSBFeGFtcGxlU3RhY2soKQorCisgICAgICAgIHNlbGYuYXNzZXJ0
SXNOb25lKEV4YW1wbGVTdGFjay50b3ApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgRXhh
bXBsZVN0YWNrLmhlaWdodCgpKQorICAgICAgICB3aXRoIHN0YWNrXzE6CisgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKDEsIEV4YW1wbGVTdGFjay5oZWlnaHQoKSkKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoRXhhbXBsZVN0YWNrLnRvcCwgc3RhY2tfMSkKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0SXNOb25lKEV4YW1wbGVTdGFjay50b3AucHJldmlvdXMpCisKKyAgICAgICAgICAg
IHdpdGggc3RhY2tfMjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIsIEV4YW1w
bGVTdGFjay5oZWlnaHQoKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEV4YW1w
bGVTdGFjay50b3AsIHN0YWNrXzIpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChF
eGFtcGxlU3RhY2sudG9wLnByZXZpb3VzLCBzdGFja18xKQorCisgICAgZGVmIHRlc3RfcGF0Y2go
c2VsZik6CisgICAgICAgIHN0YWNrXzEgPSBFeGFtcGxlU3RhY2soKQorICAgICAgICBzdGFja18y
ID0gRXhhbXBsZVN0YWNrKCkKKworICAgICAgICBzZWxmLmFzc2VydElzTm9uZSh0b19iZV9yZXBs
YWNlZCgpKQorICAgICAgICB3aXRoIHN0YWNrXzE6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHN0cihzdGFja18xKSwgdG9fYmVfcmVwbGFjZWQoKSkKKyAgICAgICAgICAgIHdpdGggc3Rh
Y2tfMjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihzdGFja18yKSwgdG9f
YmVfcmVwbGFjZWQoKSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405936</attachid>
            <date>2020-08-04 12:36:25 -0700</date>
            <delta_ts>2020-08-04 21:15:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214484-20200804123624.patch</filename>
            <type>text/plain</type>
            <size>11116</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2NTI1NikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI1IEBACisyMDIwLTA4LTA0ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbd2Via2l0Y29yZXB5XSBBZGQgbW9ja3MuQ29udGV4dFN0YWNrCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQ0ODQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBjbGFzcyB3
aGljaCBhbGxvd3MgYSBjb250ZXh0IGxldmVyYWdpbmcgbW9jayB0byBzdGFjay4gVGhpcyBpcyB1
c2VmdWwgd2hlbgorICAgICAgICBtb2NraW5nIHJlcXVlc3RzIG9yIHN1YnByb2Nlc3MsIHdoZXJl
IGEgc2luZ2xlIGZ1bmN0aW9uIChvciBjbGFzcyBvZiBmdW5jdGlvbnMpCisgICAgICAgIGlzIGhh
bmRsaW5nIGNhbGxzIHRoYXQgYXJlIGRlc3RpbmVkIGZvciBkaWZmZXJlbnQgZm9yIGRpZmZlcmVu
dCBtb2NrIGhhbmRsZXJzLgorCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29y
ZXB5L3dlYmtpdGNvcmVweS9tb2NrczogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy9saWJyYXJp
ZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9tb2Nrcy9fX2luaXRfXy5weTogQWRkZWQuCisg
ICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9tb2Nr
cy9jb250ZXh0X3N0YWNrLnB5OiBBZGRlZC4KKyAgICAgICAgKENvbnRleHRTdGFjayk6IENsYXNz
IHdoaWNoIHN0YWNrcyBtb2NrIGhhbmRsZXJzLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVz
L3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvdGVzdHMvbW9ja3M6IEFkZGVkLgorICAgICAgICAq
IFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvdGVzdHMvbW9ja3Mv
X19pbml0X18ucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNv
cmVweS93ZWJraXRjb3JlcHkvdGVzdHMvbW9ja3MvY29udGV4dF9zdGFja191bml0dGVzdC5weTog
QWRkZWQuCisgICAgICAgICh0b19iZV9yZXBsYWNlZCk6IEZ1bmN0aW9uIHRvIGJlIG1vY2tlZAor
ICAgICAgICAoRXhhbXBsZVN0YWNrKTogRXhhbXBsZSBtb2NrIGhhbmRsZXIuCisgICAgICAgIChD
b250ZXh0U3RhY2spOiBUZXN0IHN1aXRlLgorCiAyMDIwLTA4LTA0ICBKb25hdGhhbiBCZWRhcmQg
IDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbd2Via2l0Y29yZXB5XSBVc2Ugc2V0dXAu
cHkgZm9yIHRoZSBhdXRvaW5zdGFsbGVyCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93
ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L19faW5pdF9fLnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvX19pbml0X18ucHkJ
KHJldmlzaW9uIDI2NTI1NikKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVw
eS93ZWJraXRjb3JlcHkvX19pbml0X18ucHkJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcg
QEAgbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoJ3dlYmtpdGNvcmVweScpCiBmcm9tIHdlYmtpdGNv
cmVweS52ZXJzaW9uIGltcG9ydCBWZXJzaW9uCiBmcm9tIHdlYmtpdGNvcmVweS5zdHJpbmdfdXRp
bHMgaW1wb3J0IEJ5dGVzSU8sIFN0cmluZ0lPLCBVbmljb2RlSU8sIHVuaWNvZGUKIAotdmVyc2lv
biA9IFZlcnNpb24oMCwgMSwgMCkKK3ZlcnNpb24gPSBWZXJzaW9uKDAsIDEsIDEpCiAKIGZyb20g
d2Via2l0Y29yZXB5LmF1dG9pbnN0YWxsIGltcG9ydCBQYWNrYWdlLCBBdXRvSW5zdGFsbAogaWYg
c3lzLnZlcnNpb25faW5mbyA+ICgzLCAwKToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVz
L3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvbW9ja3MvX19pbml0X18ucHkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9tb2Nr
cy9fX2luaXRfXy5weQkobm9uZXhpc3RlbnQpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93
ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L21vY2tzL19faW5pdF9fLnB5CSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMjMgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0Ogor
IyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
IyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyMgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorIyBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworIyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisjIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTgorIyBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworIyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
ZnJvbSB3ZWJraXRjb3JlcHkubW9ja3MuY29udGV4dF9zdGFjayBpbXBvcnQgQ29udGV4dFN0YWNr
CkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5
L21vY2tzL2NvbnRleHRfc3RhY2sucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJy
YXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9tb2Nrcy9jb250ZXh0X3N0YWNrLnB5CShu
b25leGlzdGVudCkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJr
aXRjb3JlcHkvbW9ja3MvY29udGV4dF9zdGFjay5weQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDQyIEBACisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyMgQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworY2xhc3MgQ29u
dGV4dFN0YWNrKG9iamVjdCk6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgY2xzKToKKyAgICAg
ICAgc2VsZi5wcmV2aW91cyA9IE5vbmUKKyAgICAgICAgc2VsZi5wYXRjaGVzID0gW10KKyAgICAg
ICAgc2VsZi5jbHMgPSBjbHMKKworICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgIHNl
bGYucHJldmlvdXMgPSBzZWxmLnRvcAorICAgICAgICBzZWxmLmNscy50b3AgPSBzZWxmCisgICAg
ICAgIGZvciBwYXRjaCBpbiBzZWxmLnBhdGNoZXM6CisgICAgICAgICAgICBwYXRjaC5fX2VudGVy
X18oKQorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIF9fZXhpdF9fKHNlbGYsIGV4Y190
eXBlLCBleGNfdmFsdWUsIHRyYWNlYmFjayk6CisgICAgICAgIGZvciBwYXRjaCBpbiByZXZlcnNl
ZChzZWxmLnBhdGNoZXMpOgorICAgICAgICAgICAgcGF0Y2guX19leGl0X18oZXhjX3R5cGUsIGV4
Y192YWx1ZSwgdHJhY2ViYWNrKQorICAgICAgICBzZWxmLmNscy50b3AgPSBzZWxmLnByZXZpb3Vz
CisgICAgICAgIHNlbGYucHJldmlvdXMgPSBOb25lCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJh
cmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L3Rlc3RzL21vY2tzL19faW5pdF9fLnB5Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRj
b3JlcHkvdGVzdHMvbW9ja3MvX19pbml0X18ucHkJKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvU2Ny
aXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS90ZXN0cy9tb2Nrcy9fX2lu
aXRfXy5weQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIxIEBACisjIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OworIyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyMgQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMKKyMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRj
b3JlcHkvd2Via2l0Y29yZXB5L3Rlc3RzL21vY2tzL2NvbnRleHRfc3RhY2tfdW5pdHRlc3QucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtp
dGNvcmVweS90ZXN0cy9tb2Nrcy9jb250ZXh0X3N0YWNrX3VuaXR0ZXN0LnB5CShub25leGlzdGVu
dCkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkv
dGVzdHMvbW9ja3MvY29udGV4dF9zdGFja191bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDc5IEBACisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04K
KyMgQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9y
dCBtb2NrCitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IG1vY2tz
CisKKworZGVmIHRvX2JlX3JlcGxhY2VkKCk6CisgICAgcmV0dXJuIE5vbmUKKworCitjbGFzcyBF
eGFtcGxlU3RhY2sobW9ja3MuQ29udGV4dFN0YWNrKToKKyAgICB0b3AgPSBOb25lCisKKyAgICBk
ZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHN1cGVyKEV4YW1wbGVTdGFjaywgc2VsZikuX19p
bml0X18oY2xzPUV4YW1wbGVTdGFjaykKKyAgICAgICAgc2VsZi5wYXRjaGVzLmFwcGVuZChtb2Nr
LnBhdGNoKAorICAgICAgICAgICAgJ3dlYmtpdGNvcmVweS50ZXN0cy5tb2Nrcy5jb250ZXh0X3N0
YWNrX3VuaXR0ZXN0LnRvX2JlX3JlcGxhY2VkJywKKyAgICAgICAgICAgIG5ldz1sYW1iZGE6IHN0
cihzZWxmKSwKKyAgICAgICAgKSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBoZWlnaHQo
Y2xzKToKKyAgICAgICAgY291bnQgPSAwCisgICAgICAgIGN1cnJlbnQgPSBjbHMudG9wCisgICAg
ICAgIHdoaWxlIGN1cnJlbnQ6CisgICAgICAgICAgICBjdXJyZW50ID0gY3VycmVudC5wcmV2aW91
cworICAgICAgICAgICAgY291bnQgKz0gMQorICAgICAgICByZXR1cm4gY291bnQKKworCitjbGFz
cyBDb250ZXh0U3RhY2sodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3Rfc3RhY2tp
bmcoc2VsZik6CisgICAgICAgIHN0YWNrXzEgPSBFeGFtcGxlU3RhY2soKQorICAgICAgICBzdGFj
a18yID0gRXhhbXBsZVN0YWNrKCkKKworICAgICAgICBzZWxmLmFzc2VydElzTm9uZShFeGFtcGxl
U3RhY2sudG9wKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIEV4YW1wbGVTdGFjay5oZWln
aHQoKSkKKyAgICAgICAgd2l0aCBzdGFja18xOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgxLCBFeGFtcGxlU3RhY2suaGVpZ2h0KCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KEV4YW1wbGVTdGFjay50b3AsIHN0YWNrXzEpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9u
ZShFeGFtcGxlU3RhY2sudG9wLnByZXZpb3VzKQorCisgICAgICAgICAgICB3aXRoIHN0YWNrXzI6
CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyLCBFeGFtcGxlU3RhY2suaGVpZ2h0
KCkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChFeGFtcGxlU3RhY2sudG9wLCBz
dGFja18yKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRXhhbXBsZVN0YWNrLnRv
cC5wcmV2aW91cywgc3RhY2tfMSkKKworICAgIGRlZiB0ZXN0X3BhdGNoKHNlbGYpOgorICAgICAg
ICBzdGFja18xID0gRXhhbXBsZVN0YWNrKCkKKyAgICAgICAgc3RhY2tfMiA9IEV4YW1wbGVTdGFj
aygpCisKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUodG9fYmVfcmVwbGFjZWQoKSkKKyAgICAg
ICAgd2l0aCBzdGFja18xOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoc3RhY2tf
MSksIHRvX2JlX3JlcGxhY2VkKCkpCisgICAgICAgICAgICB3aXRoIHN0YWNrXzI6CisgICAgICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoc3RhY2tfMiksIHRvX2JlX3JlcGxhY2VkKCkp
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405983</attachid>
            <date>2020-08-04 21:15:10 -0700</date>
            <delta_ts>2020-08-04 22:15:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214484-20200804211509.patch</filename>
            <type>text/plain</type>
            <size>11400</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2NTI3NSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI1IEBACisyMDIwLTA4LTA0ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbd2Via2l0Y29yZXB5XSBBZGQgbW9ja3MuQ29udGV4dFN0YWNrCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQ0ODQKKworICAg
ICAgICBSZXZpZXdlZCBieSBEZXdlaSBaaHUuCisKKyAgICAgICAgQWRkIGEgY2xhc3Mgd2hpY2gg
YWxsb3dzIGEgY29udGV4dCBsZXZlcmFnaW5nIG1vY2sgdG8gc3RhY2suIFRoaXMgaXMgdXNlZnVs
IHdoZW4KKyAgICAgICAgbW9ja2luZyByZXF1ZXN0cyBvciBzdWJwcm9jZXNzLCB3aGVyZSBhIHNp
bmdsZSBmdW5jdGlvbiAob3IgY2xhc3Mgb2YgZnVuY3Rpb25zKQorICAgICAgICBpcyBoYW5kbGlu
ZyBjYWxscyB0aGF0IGFyZSBkZXN0aW5lZCBmb3IgZGlmZmVyZW50IGZvciBkaWZmZXJlbnQgbW9j
ayBoYW5kbGVycy4KKworICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93
ZWJraXRjb3JlcHkvbW9ja3M6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dl
YmtpdGNvcmVweS93ZWJraXRjb3JlcHkvbW9ja3MvX19pbml0X18ucHk6IEFkZGVkLgorICAgICAg
ICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvbW9ja3MvY29u
dGV4dF9zdGFjay5weTogQWRkZWQuCisgICAgICAgIChDb250ZXh0U3RhY2spOiBDbGFzcyB3aGlj
aCBzdGFja3MgbW9jayBoYW5kbGVycy4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJr
aXRjb3JlcHkvd2Via2l0Y29yZXB5L3Rlc3RzL21vY2tzOiBBZGRlZC4KKyAgICAgICAgKiBTY3Jp
cHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L3Rlc3RzL21vY2tzL19faW5p
dF9fLnB5OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkv
d2Via2l0Y29yZXB5L3Rlc3RzL21vY2tzL2NvbnRleHRfc3RhY2tfdW5pdHRlc3QucHk6IEFkZGVk
LgorICAgICAgICAodG9fYmVfcmVwbGFjZWQpOiBGdW5jdGlvbiB0byBiZSBtb2NrZWQKKyAgICAg
ICAgKEV4YW1wbGVTdGFjayk6IEV4YW1wbGUgbW9jayBoYW5kbGVyLgorICAgICAgICAoQ29udGV4
dFN0YWNrKTogVGVzdCBzdWl0ZS4KKwogMjAyMC0wOC0wNCAgRnVqaWkgSGlyb25vcmkgIDxIaXJv
bm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBbd2Via2l0Y29yZXB5XSBSRUdSRVNTSU9O
KHIyNjUyNTQpOiBhdXRvaW5zdGFsbGVyIGlzIGZhaWxpbmcgdG8gZXhlY3V0ZSBzZXR1cC5weSBv
biB3aW4zMiBQeXRob24KSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVw
eS93ZWJraXRjb3JlcHkvX19pbml0X18ucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9s
aWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9fX2luaXRfXy5weQkocmV2aXNpb24g
MjY1Mjc1KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNv
cmVweS9fX2luaXRfXy5weQkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQCBsb2cgPSBs
b2dnaW5nLmdldExvZ2dlcignd2Via2l0Y29yZXB5JykKIGZyb20gd2Via2l0Y29yZXB5LnZlcnNp
b24gaW1wb3J0IFZlcnNpb24KIGZyb20gd2Via2l0Y29yZXB5LnN0cmluZ191dGlscyBpbXBvcnQg
Qnl0ZXNJTywgU3RyaW5nSU8sIFVuaWNvZGVJTywgdW5pY29kZQogCi12ZXJzaW9uID0gVmVyc2lv
bigwLCAxLCAwKQordmVyc2lvbiA9IFZlcnNpb24oMCwgMSwgMSkKIAogZnJvbSB3ZWJraXRjb3Jl
cHkuYXV0b2luc3RhbGwgaW1wb3J0IFBhY2thZ2UsIEF1dG9JbnN0YWxsCiBpZiBzeXMudmVyc2lv
bl9pbmZvID4gKDMsIDApOgpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29y
ZXB5L3dlYmtpdGNvcmVweS9tb2Nrcy9fX2luaXRfXy5weQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9T
Y3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L21vY2tzL19faW5pdF9f
LnB5CShub25leGlzdGVudCkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVw
eS93ZWJraXRjb3JlcHkvbW9ja3MvX19pbml0X18ucHkJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwyMyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisj
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisjIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisjIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisjIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisjIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitmcm9tIHdlYmtp
dGNvcmVweS5tb2Nrcy5jb250ZXh0X3N0YWNrIGltcG9ydCBDb250ZXh0U3RhY2sKSW5kZXg6IFRv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvbW9ja3MvY29u
dGV4dF9zdGFjay5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJr
aXRjb3JlcHkvd2Via2l0Y29yZXB5L21vY2tzL2NvbnRleHRfc3RhY2sucHkJKG5vbmV4aXN0ZW50
KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9t
b2Nrcy9jb250ZXh0X3N0YWNrLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDIgQEAKKyMg
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIwor
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorIyBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworIyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisjIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorIyBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworIyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCitjbGFzcyBDb250ZXh0U3RhY2so
b2JqZWN0KToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjbHMpOgorICAgICAgICBzZWxmLnBy
ZXZpb3VzID0gTm9uZQorICAgICAgICBzZWxmLnBhdGNoZXMgPSBbXQorICAgICAgICBzZWxmLmNs
cyA9IGNscworCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgc2VsZi5wcmV2aW91
cyA9IHNlbGYudG9wCisgICAgICAgIHNlbGYuY2xzLnRvcCA9IHNlbGYKKyAgICAgICAgZm9yIHBh
dGNoIGluIHNlbGYucGF0Y2hlczoKKyAgICAgICAgICAgIHBhdGNoLl9fZW50ZXJfXygpCisgICAg
ICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192
YWx1ZSwgdHJhY2ViYWNrKToKKyAgICAgICAgZm9yIHBhdGNoIGluIHJldmVyc2VkKHNlbGYucGF0
Y2hlcyk6CisgICAgICAgICAgICBwYXRjaC5fX2V4aXRfXyhleGNfdHlwZSwgZXhjX3ZhbHVlLCB0
cmFjZWJhY2spCisgICAgICAgIHNlbGYuY2xzLnRvcCA9IHNlbGYucHJldmlvdXMKKyAgICAgICAg
c2VsZi5wcmV2aW91cyA9IE5vbmUKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtp
dGNvcmVweS93ZWJraXRjb3JlcHkvdGVzdHMvbW9ja3MvX19pbml0X18ucHkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS90ZXN0
cy9tb2Nrcy9fX2luaXRfXy5weQkobm9uZXhpc3RlbnQpCisrKyBUb29scy9TY3JpcHRzL2xpYnJh
cmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L3Rlc3RzL21vY2tzL19faW5pdF9fLnB5CSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjEgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
IyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkK
KyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorIyBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworIyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisjIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTgorIyBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UworIyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJr
aXRjb3JlcHkvdGVzdHMvbW9ja3MvY29udGV4dF9zdGFja191bml0dGVzdC5weQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L3Rl
c3RzL21vY2tzL2NvbnRleHRfc3RhY2tfdW5pdHRlc3QucHkJKG5vbmV4aXN0ZW50KQorKysgVG9v
bHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS90ZXN0cy9tb2Nr
cy9jb250ZXh0X3N0YWNrX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODUg
QEAKKyMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorIyBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
IyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisjIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorIyBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworIyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IG1vY2sKK2lt
cG9ydCB1bml0dGVzdAorCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgbW9ja3MKKworCitkZWYg
dG9fYmVfcmVwbGFjZWQoKToKKyAgICByZXR1cm4gTm9uZQorCisKK2NsYXNzIEV4YW1wbGVTdGFj
ayhtb2Nrcy5Db250ZXh0U3RhY2spOgorICAgIHRvcCA9IE5vbmUKKworICAgIGRlZiBfX2luaXRf
XyhzZWxmKToKKyAgICAgICAgc3VwZXIoRXhhbXBsZVN0YWNrLCBzZWxmKS5fX2luaXRfXyhjbHM9
RXhhbXBsZVN0YWNrKQorICAgICAgICBzZWxmLnBhdGNoZXMuYXBwZW5kKG1vY2sucGF0Y2goCisg
ICAgICAgICAgICAnd2Via2l0Y29yZXB5LnRlc3RzLm1vY2tzLmNvbnRleHRfc3RhY2tfdW5pdHRl
c3QudG9fYmVfcmVwbGFjZWQnLAorICAgICAgICAgICAgbmV3PWxhbWJkYTogc3RyKHNlbGYpLAor
ICAgICAgICApKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGhlaWdodChjbHMpOgorICAg
ICAgICBjb3VudCA9IDAKKyAgICAgICAgY3VycmVudCA9IGNscy50b3AKKyAgICAgICAgd2hpbGUg
Y3VycmVudDoKKyAgICAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LnByZXZpb3VzCisgICAgICAg
ICAgICBjb3VudCArPSAxCisgICAgICAgIHJldHVybiBjb3VudAorCisKK2NsYXNzIENvbnRleHRT
dGFjayh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9zdGFja2luZyhzZWxmKToK
KyAgICAgICAgc3RhY2tfMSA9IEV4YW1wbGVTdGFjaygpCisgICAgICAgIHN0YWNrXzIgPSBFeGFt
cGxlU3RhY2soKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKEV4YW1wbGVTdGFjay50b3Ap
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgRXhhbXBsZVN0YWNrLmhlaWdodCgpKQorICAg
ICAgICB3aXRoIHN0YWNrXzE6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIEV4YW1w
bGVTdGFjay5oZWlnaHQoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRXhhbXBsZVN0
YWNrLnRvcCwgc3RhY2tfMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKEV4YW1wbGVT
dGFjay50b3AucHJldmlvdXMpCisKKyAgICAgICAgICAgIHdpdGggc3RhY2tfMjoKKyAgICAgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIsIEV4YW1wbGVTdGFjay5oZWlnaHQoKSkKKyAgICAg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEV4YW1wbGVTdGFjay50b3AsIHN0YWNrXzIpCisg
ICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChFeGFtcGxlU3RhY2sudG9wLnByZXZpb3Vz
LCBzdGFja18xKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIEV4YW1wbGVTdGFj
ay5oZWlnaHQoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRXhhbXBsZVN0YWNrLnRv
cCwgc3RhY2tfMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKEV4YW1wbGVTdGFjay50
b3AucHJldmlvdXMpCisKKyAgICBkZWYgdGVzdF9wYXRjaChzZWxmKToKKyAgICAgICAgc3RhY2tf
MSA9IEV4YW1wbGVTdGFjaygpCisgICAgICAgIHN0YWNrXzIgPSBFeGFtcGxlU3RhY2soKQorCisg
ICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHRvX2JlX3JlcGxhY2VkKCkpCisgICAgICAgIHdpdGgg
c3RhY2tfMToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHN0YWNrXzEpLCB0b19i
ZV9yZXBsYWNlZCgpKQorICAgICAgICAgICAgd2l0aCBzdGFja18yOgorICAgICAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHN0YWNrXzIpLCB0b19iZV9yZXBsYWNlZCgpKQorCisgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihzdGFja18xKSwgdG9fYmVfcmVwbGFjZWQoKSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>