<?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>238392</bug_id>
          
          <creation_ts>2022-03-25 14:39:30 -0700</creation_ts>
          <short_desc>Introduce WTF_CREATE macro</short_desc>
          <delta_ts>2022-04-14 07:22: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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=145384</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="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>philipj</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1855241</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2022-03-25 14:39:30 -0700</bug_when>
    <thetext>Introduce WTF_CREATE macro</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855242</commentid>
    <comment_count>1</comment_count>
      <attachid>455799</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2022-03-25 14:43:20 -0700</bug_when>
    <thetext>Created attachment 455799
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855244</commentid>
    <comment_count>2</comment_count>
      <attachid>455800</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2022-03-25 14:49:05 -0700</bug_when>
    <thetext>Created attachment 455800
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855248</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-25 14:55:58 -0700</bug_when>
    <thetext>I&apos;ve personally never been a fan of macros. Curious how other feel about this.
It does reduce boilerplate code.. (although I&apos;d argue at the cost of readability).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855292</commentid>
    <comment_count>4</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2022-03-25 17:01:40 -0700</bug_when>
    <thetext>I think this is similar to WTF_MAKE_ISO_ALLOCATED, WTF_MAKE_NONCOPYABLE, and WTF_MAKE_NONMOVABLE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855294</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-25 17:05:25 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #4)
&gt; I think this is similar to WTF_MAKE_ISO_ALLOCATED, WTF_MAKE_NONCOPYABLE, and
&gt; WTF_MAKE_NONMOVABLE

There is one huge difference, the existing one to do define API I want to call. They add some boilerplate I don&apos;t really care about as an API user.

Your new macro though declare one of the most important APIs of the class. For new comers especially, it will make our API is little less clear as the way to construct an object of this class is no longer directly readable directly by viewing the class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855295</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-25 17:08:04 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #5)
&gt; (In reply to Alex Christensen from comment #4)
&gt; &gt; I think this is similar to WTF_MAKE_ISO_ALLOCATED, WTF_MAKE_NONCOPYABLE, and
&gt; &gt; WTF_MAKE_NONMOVABLE
&gt; 
&gt; There is one huge difference, the existing one to do define API I want to
&gt; call. They add some boilerplate I don&apos;t really care about as an API user.
&gt; 
&gt; Your new macro though declare one of the most important APIs of the class.
&gt; For new comers especially, it will make our API is little less clear as the
&gt; way to construct an object of this class is no longer directly readable
&gt; directly by viewing the class.

Might be worse discussing a bit more broadly (maybe webkit-dev?). I am not objecting if people like it but I personally don&apos;t like the idea of using macros to define public API on our objects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856672</commentid>
    <comment_count>7</comment_count>
      <attachid>455800</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-03-30 21:09:51 -0700</bug_when>
    <thetext>Comment on attachment 455800
Patch

I think I like adding this macro; I’m not too worried about hiding the create function from people reading the code.

I think the name is a little too short, WTF_CREATE doesn’t seem quite right. After all, this doesn’t create anything. It defines a function named create. Also, it’s only good for reference counted objects. A short name is neat, but this is too terse and vague, I think.

I don’t like using a semicolon after each use of the macro; that’s just an error.

It would be nicer if the use of this macro was always right next to the constructor, since the argument list of the constructor is an important part of seeing how to use the class; in the older idioms that is not so. You can see the arguments to create just by looking at create. That’s already suboptimal with these forwarding template create functions that we used for CSSRGB and the like. But to state the obvious we still want to make the constructor private and the create function public.

One downside of creating this macro, especially if it has a short name, is that it gives the impression that this is the only correct way to define a create function. And it’s not. There might be more work the create function has to do beyond just calling a constructor, and we might want a tryCreate function instead of a create function, or a create function that can fail. But this does do the job of making sure new objects are adopted into a Ref, making that standard idiom more foolproof, and I sure do like that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857403</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-04-01 14:40:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/91182646&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861483</commentid>
    <comment_count>9</comment_count>
      <attachid>455800</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2022-04-14 07:22:35 -0700</bug_when>
    <thetext>Comment on attachment 455800
Patch

I think I like Zan&apos;s approach in https://bugs.webkit.org/show_bug.cgi?id=238392 better.  As long as you have to write something in the class, it may as well be befriending RefCounted&lt;T&gt; instead of a macro.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455799</attachid>
            <date>2022-03-25 14:43:20 -0700</date>
            <delta_ts>2022-03-25 14:49:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238392-20220325144319.patch</filename>
            <type>text/plain</type>
            <size>14064</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxODgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGE4YTJkMmU4OTRjMTRhNmUzMjc0Mjk1
MzRjYjNhYmI0ZTU2MDhjMDguLmIwNGFhNjBkOWM5ZDVhNDA1MGI3NWI0MjBmNzIyNGU3MGMzYTBh
OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDMtMjUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBJbnRyb2R1Y2UgV1RGX0NSRUFURSBt
YWNybworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4
MzkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyByZWR1Y2VzIGJvaWxlcnBsYXRlIGNvZGUgaW4gb3VyIG1hbnkgY3JlYXRlIGZ1bmN0aW9ucyB0
aGF0IGp1c3QgY2FsbCB0aGUgY29uc3RydWN0b3IuCisgICAgICAgIEl0IGNvdWxkIGJlIG11Y2gg
bW9yZSB3aWRlbHkgYWRvcHRlZCBidXQgSSd2ZSBqdXN0IGFkb3B0ZWQgaXQgaW4gYSBoYW5kZnVs
bCBvZiBjbGFzc2VzLgorCisgICAgICAgICogd3RmL0ZvcndhcmQuaDoKKwogMjAyMi0wMy0yNSAg
QW50b2luZSBRdWludCAgPGdyYW91dHNAd2Via2l0Lm9yZz4KIAogICAgICAgICBbd2ViLWFuaW1h
dGlvbnNdIGVuYWJsZSBzdXBwb3J0IGZvciBtdXRhYmxlIHRpbWVsaW5lcyBieSBkZWZhdWx0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggMzlmMzI2YzU2MGRjNzVkZDZlMzUwOWNiMzYzZDU4NGNhNzVkYWZkZC4uMTVi
ZDI5ZDk4Y2JiMjhlZWVhMzlkYTE1ZDhiMWEzNzAxZmYwMmJkMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDI3IEBACisyMDIyLTAzLTI1ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgSW50cm9kdWNlIFdURl9DUkVBVEUgbWFjcm8KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODM5MgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogY3NzL3R5cGVkb20vY29s
b3IvQ1NTQ29sb3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NvbG9yOjpjcmVhdGUpOiBEZWxl
dGVkLgorICAgICAgICAqIGNzcy90eXBlZG9tL2NvbG9yL0NTU0hTTC5oOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTSFNMOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAqIGNzcy90eXBlZG9tL2Nv
bG9yL0NTU0hXQi5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTSFdCOjpjcmVhdGUpOiBEZWxldGVk
LgorICAgICAgICAqIGNzcy90eXBlZG9tL2NvbG9yL0NTU0xDSC5oOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTTENIOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAqIGNzcy90eXBlZG9tL2NvbG9y
L0NTU0xhYi5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTGFiOjpjcmVhdGUpOiBEZWxldGVkLgor
ICAgICAgICAqIGNzcy90eXBlZG9tL2NvbG9yL0NTU09LTENILmg6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NPS0xDSDo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBjc3MvdHlwZWRvbS9jb2xv
ci9DU1NPS0xhYi5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTT0tMYWI6OmNyZWF0ZSk6IERlbGV0
ZWQuCisgICAgICAgICogY3NzL3R5cGVkb20vY29sb3IvQ1NTUkdCLmg6CisgICAgICAgIChXZWJD
b3JlOjpDU1NSR0I6OmNyZWF0ZSk6IERlbGV0ZWQuCisKIDIwMjItMDMtMjUgIEogUGFzY29lICA8
al9wYXNjb2VAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJBdXRobl0gTWFpbnRhaW4gbGFzdCBt
b2RpZmljYXRpb24gdGltZSBzZXBhcmF0ZSBmcm9tIGxhc3QgdXNlZCB0aW1lIGZvciBwbGF0Zm9y
bSBjcmVkZW50aWFscwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiYmM1ZjUyMmI1NzVjNjVmNGNmZDdjYzAyM2U0NjYz
MWM2Y2RhYjUzLi5iYjQxYzcyZTJjNzI5NWUxODM0MWFkZDVmMGIzYTJmODE1OGEzNmExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIyLTAzLTI1ICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW50cm9kdWNlIFdURl9DUkVBVEUgbWFj
cm8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODM5
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogR1BVUHJvY2Vz
cy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGlwZWxpbmUuaDoKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLmg6CisgICAgICAg
IChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2s6OmNyZWF0ZSk6IERlbGV0ZWQuCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaDoKKwog
MjAyMi0wMy0yNSAgSiBQYXNjb2UgIDxqX3Bhc2NvZUBhcHBsZS5jb20+CiAgICAgICAgIFtXZWJB
dXRobl0gTWFpbnRhaW4gbGFzdCBtb2RpZmljYXRpb24gdGltZSBzZXBhcmF0ZSBmcm9tIGxhc3Qg
dXNlZCB0aW1lIGZvciBwbGF0Zm9ybSBjcmVkZW50aWFscwogICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4MjkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9Gb3J3YXJkLmggYi9Tb3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmgKaW5kZXggM2NlNzYxMjQy
YzMyZWMxNjk0YzY1YTc3ZTc0MGU5YzY2OTNjM2JiNC4uMTIwNDA0ZTE3MmEwMzYwMTI1MTNiMjM4
NTE3YjE2NTkzY2IyMWZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRm9yd2FyZC5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaApAQCAtMjI4LDMgKzIyOCw1IEBAIHRlbXBsYXRl
PGNsYXNzIEU+IHVzaW5nIFVuZXhwZWN0ZWQgPSBzdGQ6OmV4cGVyaW1lbnRhbDo6dW5leHBlY3Rl
ZDxFPjsKICNkZWZpbmUgV1RGX0xBWllfSEFTX1JFU1RfOCBXVEZfTEFaWV9FWFBBTkQKICNkZWZp
bmUgV1RGX0xBWllfSEFTX1JFU1QoLi4uKSBcCiAgICAgV1RGX0xBWllfSk9JTihXVEZfTEFaWV9I
QVNfUkVTVF8sIFdURl9MQVpZX05VTV9BUkdTKF9fVkFfQVJHU19fKSkKKworI2RlZmluZSBXVEZf
Q1JFQVRFKGNsYXNzbmFtZSkgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gc3RhdGljIFJlZjxj
bGFzc25hbWU+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBj
bGFzc25hbWUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL2NvbG9yL0NTU0NvbG9yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvdHlwZWRvbS9jb2xvci9DU1NDb2xvci5oCmluZGV4IDA2M2RjNDVlYzFkMWEzOTkwMzdh
NjQxN2YyOWFjOTJkNzk2NWY0MzguLjUzNDVmYjU3N2E2NjEwYmM4NTdkMDdkZjE3MmY3MjRhZDI3
MmIyNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL2NvbG9yL0NTU0Nv
bG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vY29sb3IvQ1NTQ29sb3IuaApA
QCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDU1NDb2xvciA6IHB1
YmxpYyBDU1NDb2xvclZhbHVlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKENTU0NvbG9y
KTsKIHB1YmxpYzoKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPiBzdGF0aWMgUmVmPENT
U0NvbG9yPiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NT
Q29sb3Ioc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7IH0KKyAgICBXVEZfQ1JFQVRFKENT
U0NvbG9yKTsKIAogICAgIHZvaWQgc2V0Q29sb3JTcGFjZShDU1NLZXl3b3JkaXNoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vY29sb3IvQ1NTSFNMLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9jb2xvci9DU1NIU0wuaAppbmRleCA2ZTQzYmU3MzQxYTkx
ZWFkYTQzODU5YWQ2YmU5NzhlYTRiNjY1YmYxLi41OGFhODVkY2VhOTI2MGRlN2NiZjZmNjY2NWYw
YWJkNmE4NWU4NjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9jb2xv
ci9DU1NIU0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9jb2xvci9DU1NIU0wu
aApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDU1NIU0wgOiBw
dWJsaWMgQ1NTQ29sb3JWYWx1ZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChDU1NIU0wp
OwogcHVibGljOgotICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+IHN0YXRpYyBSZWY8Q1NT
SFNMPiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTSFNM
KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOyB9CisgICAgV1RGX0NSRUFURShDU1NIU0wp
OwogCiAgICAgY29uc3QgQ1NTQ29sb3JBbmdsZSYgaCgpIGNvbnN0IHsgcmV0dXJuIG1faHVlOyB9
CiAgICAgdm9pZCBzZXRIKENTU0NvbG9yQW5nbGUgaHVlKSB7IG1faHVlID0gV1RGTW92ZShodWUp
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9jb2xvci9DU1NIV0Iu
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL2NvbG9yL0NTU0hXQi5oCmluZGV4IDUzMWZh
MWRmMDg4NDQ2MWU4NTk1MTA1ZGY0ZThlMjVlM2FkYjQzODIuLjRhYTJjMzI1MDBiZWZiY2ZiMzk2
YmZhNDg4Y2JiNjAwMzAzMWYyZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy90eXBl
ZG9tL2NvbG9yL0NTU0hXQi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL2NvbG9y
L0NTU0hXQi5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENT
U0hXQiA6IHB1YmxpYyBDU1NDb2xvclZhbHVlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVE
KENTU0hXQik7CiBwdWJsaWM6Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gc3RhdGlj
IFJlZjxDU1NIV0I+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBDU1NIV0Ioc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7IH0KKyAgICBXVEZfQ1JFQVRF
KENTU0hXQik7CiAKICAgICBjb25zdCBSZWY8Q1NTTnVtZXJpY1ZhbHVlPiYgaCgpIGNvbnN0IHsg
cmV0dXJuIG1faHVlOyB9CiAgICAgdm9pZCBzZXRIKFJlZjxDU1NOdW1lcmljVmFsdWU+IGh1ZSkg
eyBtX2h1ZSA9IFdURk1vdmUoaHVlKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L3R5cGVkb20vY29sb3IvQ1NTTENILmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9jb2xv
ci9DU1NMQ0guaAppbmRleCBkZTE5ZWRhNmMxYWVlNzNhMmM0YWQ3OTVkYTMxNDM5MTgwODE1YjJh
Li41MDViOTY1MGZjMzQ2ZjZiZjI1ZDA1ZTVjODFjYmQ2M2IyZTY0YWVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9jb2xvci9DU1NMQ0guaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvdHlwZWRvbS9jb2xvci9DU1NMQ0guaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBDU1NMQ0ggOiBwdWJsaWMgQ1NTQ29sb3JWYWx1ZSB7CiAgICAg
V1RGX01BS0VfSVNPX0FMTE9DQVRFRChDU1NMQ0gpOwogcHVibGljOgotICAgIHRlbXBsYXRlPHR5
cGVuYW1lLi4uIEFyZ3M+IHN0YXRpYyBSZWY8Q1NTTENIPiBjcmVhdGUoQXJncyYmLi4uIGFyZ3Mp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTTENIKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4u
LikpOyB9CisgICAgV1RGX0NSRUFURShDU1NMQ0gpOwogCiAgICAgY29uc3QgQ1NTQ29sb3JQZXJj
ZW50JiBsKCkgY29uc3QgeyByZXR1cm4gbV9saWdodG5lc3M7IH0KICAgICB2b2lkIHNldEwoQ1NT
Q29sb3JQZXJjZW50IGxpZ2h0bmVzcykgeyBtX2xpZ2h0bmVzcyA9IFdURk1vdmUobGlnaHRuZXNz
KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vY29sb3IvQ1NTTGFi
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9jb2xvci9DU1NMYWIuaAppbmRleCAxOTc4
ZjlkZDU3MzMxYzM4M2FhNTg0NzVhZjNjMjcxZjU3NDZmYzFiLi5iYjYyMmE0YTE5YzA3MGQ3ZDIw
ZTE3ZDcyNmQ4NzkyMzRmYjFiYmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlw
ZWRvbS9jb2xvci9DU1NMYWIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9jb2xv
ci9DU1NMYWIuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBD
U1NMYWIgOiBwdWJsaWMgQ1NTQ29sb3JWYWx1ZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRF
RChDU1NMYWIpOwogcHVibGljOgotICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+IHN0YXRp
YyBSZWY8Q1NTTGFiPiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpIHsgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQ1NTTGFiKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOyB9CisgICAgV1RGX0NSRUFU
RShDU1NMYWIpOwogCiAgICAgY29uc3QgQ1NTQ29sb3JQZXJjZW50JiBsKCkgY29uc3QgeyByZXR1
cm4gbV9saWdodG5lc3M7IH0KICAgICB2b2lkIHNldEwoQ1NTQ29sb3JQZXJjZW50IGxpZ2h0bmVz
cykgeyBtX2xpZ2h0bmVzcyA9IFdURk1vdmUobGlnaHRuZXNzKTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vY29sb3IvQ1NTT0tMQ0guaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy90eXBlZG9tL2NvbG9yL0NTU09LTENILmgKaW5kZXggMTkwODUzMTUwNmVmMjkxNGVhMDlh
YWM2NzYyMGQ5YjVlNjVhZDc5OC4uZGRiNmYxMThlNTU5NzNiMWI3OWQ4YWM5ODc5MTJkYjMwN2M5
ZGUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vY29sb3IvQ1NTT0tM
Q0guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9jb2xvci9DU1NPS0xDSC5oCkBA
IC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENTU09LTENIIDogcHVi
bGljIENTU0NvbG9yVmFsdWUgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoQ1NTT0tMQ0gp
OwogcHVibGljOgotICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+IHN0YXRpYyBSZWY8Q1NT
T0tMQ0g+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NP
S0xDSChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsgfQorICAgIFdURl9DUkVBVEUoQ1NT
T0tMQ0gpOwogCiAgICAgY29uc3QgQ1NTQ29sb3JQZXJjZW50JiBsKCkgY29uc3QgeyByZXR1cm4g
bV9saWdodG5lc3M7IH0KICAgICB2b2lkIHNldEwoQ1NTQ29sb3JQZXJjZW50IGxpZ2h0bmVzcykg
eyBtX2xpZ2h0bmVzcyA9IFdURk1vdmUobGlnaHRuZXNzKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL3R5cGVkb20vY29sb3IvQ1NTT0tMYWIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy90eXBlZG9tL2NvbG9yL0NTU09LTGFiLmgKaW5kZXggMWRhYTY0ZTdkYTdhMDk2NzhjZDdlNzgz
MjFjZjVmYmFhYWEzYTBiOS4uMTgzMWQzNzI1MTk5YWYxMWYyZWVlOTBhYzhjMDM5ODM4Y2E5NjAx
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vY29sb3IvQ1NTT0tMYWIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9jb2xvci9DU1NPS0xhYi5oCkBAIC0z
NCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENTU09LTGFiIDogcHVibGlj
IENTU0NvbG9yVmFsdWUgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoQ1NTT0tMYWIpOwog
cHVibGljOgotICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+IHN0YXRpYyBSZWY8Q1NTT0tM
YWI+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NPS0xh
YihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsgfQorICAgIFdURl9DUkVBVEUoQ1NTT0tM
YWIpOwogCiAgICAgY29uc3QgQ1NTQ29sb3JQZXJjZW50JiBsKCkgY29uc3QgeyByZXR1cm4gbV9s
aWdodG5lc3M7IH0KICAgICB2b2lkIHNldEwoQ1NTQ29sb3JQZXJjZW50IGxpZ2h0bmVzcykgeyBt
X2xpZ2h0bmVzcyA9IFdURk1vdmUobGlnaHRuZXNzKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL3R5cGVkb20vY29sb3IvQ1NTUkdCLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlw
ZWRvbS9jb2xvci9DU1NSR0IuaAppbmRleCAxZjE3ZGI2YTI2OWVlM2M3MDNjZGEzN2ZkN2IwMjAz
NDczMDE5ZTI3Li43MWQxZTIzZTM1NDNjY2NiZDY5NmUxYzY3MjZmMDZmNzcxZDQ2MjI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9jb2xvci9DU1NSR0IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9jb2xvci9DU1NSR0IuaApAQCAtMzYsNyArMzYsNyBA
QCB1c2luZyBDU1NDb2xvclJHQkNvbXAgPSBzdGQ6OnZhcmlhbnQ8ZG91YmxlLCBSZWZQdHI8Q1NT
TnVtZXJpY1ZhbHVlPiwgU3RyaW5nLCBSZQogY2xhc3MgQ1NTUkdCIDogcHVibGljIENTU0NvbG9y
VmFsdWUgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoQ1NTUkdCKTsKIHB1YmxpYzoKLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPiBzdGF0aWMgUmVmPENTU1JHQj4gY3JlYXRlKEFy
Z3MmJi4uLiBhcmdzKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENTU1JHQihzdGQ6OmZvcndhcmQ8
QXJncz4oYXJncykuLi4pKTsgfQorICAgIFdURl9DUkVBVEUoQ1NTUkdCKTsKIAogICAgIGNvbnN0
IENTU0NvbG9yUkdCQ29tcCYgcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVkOyB9CiAgICAgdm9pZCBz
ZXRSKENTU0NvbG9yUkdCQ29tcCByZWQpIHsgbV9yZWQgPSBXVEZNb3ZlKHJlZCk7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
CmluZGV4IGI3MmMwYjM3MzYyYjczOWRiZmEzZWQ5YTBjNGEwMWUzYjIxYjFlOTkuLjVjMDJiYTAz
ODc5NTNlNTZkZjVkYzNlNjkwN2UwYTEwMTg1MDc4NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMTE1LDcgKzEx
NSw4IEBAIGNsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MKICAgICAsIHB1YmxpYyBXZWJD
b3JlOjpOb3dQbGF5aW5nTWFuYWdlcjo6Q2xpZW50CiAgICAgLCBJUEM6OkNvbm5lY3Rpb246OkNs
aWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
PiBjcmVhdGUoR1BVUHJvY2VzcyYsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBJUEM6OkNv
bm5lY3Rpb246OklkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBHUFVQcm9jZXNzQ29ubmVjdGlv
blBhcmFtZXRlcnMmJik7CisgICAgV1RGX0NSRUFURShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KTsKKwogICAgIHZpcnR1YWwgfkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKTsKIAogICAgIHVz
aW5nIFdlYkNvcmU6Ok5vd1BsYXlpbmdNYW5hZ2VyOjpDbGllbnQ6OndlYWtQdHJGYWN0b3J5Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVSZW5kZXJQaXBlbGluZS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVSZW5kZXJQaXBlbGluZS5oCmluZGV4IDViNzBlMGJmZGZlMmY1MWMyMWU1MzI3
MmJkNzFiOWMzZDA3NjBmYjAuLmVlMzkxODE3NzhiNWYzZjA2ZTI4Y2Y2MmY5MjkyN2IyZTM0ZDZj
MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlUmVuZGVyUGlwZWxpbmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBpcGVsaW5lLmgKQEAgLTQ5LDEwICs0OSw3IEBAIGNs
YXNzIE9iamVjdEhlYXA7CiBjbGFzcyBSZW1vdGVSZW5kZXJQaXBlbGluZSBmaW5hbCA6IHB1Ymxp
YyBJUEM6OlN0cmVhbU1lc3NhZ2VSZWNlaXZlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVSZW5kZXJQaXBlbGluZT4gY3JlYXRl
KFBBTDo6V2ViR1BVOjpSZW5kZXJQaXBlbGluZSYgcmVuZGVyUGlwZWxpbmUsIFdlYkdQVTo6T2Jq
ZWN0SGVhcCYgb2JqZWN0SGVhcCwgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4mJiBz
dHJlYW1Db25uZWN0aW9uLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCi0gICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBl
bGluZSwgb2JqZWN0SGVhcCwgV1RGTW92ZShzdHJlYW1Db25uZWN0aW9uKSwgaWRlbnRpZmllcikp
OwotICAgIH0KKyAgICBXVEZfQ1JFQVRFKFJlbW90ZVJlbmRlclBpcGVsaW5lKTsKIAogICAgIHZp
cnR1YWwgflJlbW90ZVJlbmRlclBpcGVsaW5lKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmgKaW5kZXggM2Y4MWVmYjQz
NDU3MTVlODdlY2M1ZWEwNWEwODQ4MDg2NGMwODk1MS4uNWIyZTcyNzBiMGZhZDUzNmJmYWJiMWE1
N2VjMDYxZWVkNjM1ODBkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dl
YnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmgKQEAgLTU2LDcgKzU2LDggQEAgY2xhc3MgU2hh
cmVkUmluZ0J1ZmZlclN0b3JhZ2U7CiBjbGFzcyBSZW1vdGVNZWRpYVJlY29yZGVyIDogcHJpdmF0
ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVNZWRpYVJlY29yZGVyPiBj
cmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIE1lZGlhUmVjb3JkZXJJZGVudGlmaWVy
LCBib29sIHJlY29yZEF1ZGlvLCBib29sIHJlY29yZFZpZGVvLCBjb25zdCBXZWJDb3JlOjpNZWRp
YVJlY29yZGVyUHJpdmF0ZU9wdGlvbnMmKTsKKyAgICBXVEZfQ1JFQVRFKFJlbW90ZU1lZGlhUmVj
b3JkZXIpOworCiAgICAgflJlbW90ZU1lZGlhUmVjb3JkZXIoKTsKIAogICAgIFN0cmluZyBtaW1l
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fd3JpdGVyLT5taW1lVHlwZSgpOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtl
ckRvd25sb2FkVGFzay5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2suaAppbmRleCBiODlhYjNlYmQ3NjJmNjgxMmE1
ZTk3YmZmNjkwYmE5MGYwMjU3ZmNkLi4yMjQwZmI1MTRkYzY3MTJhOTM4NmM3ZWU5Y2FkZGYwNTUz
ZTRiZmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLmgKQEAg
LTUwLDcgKzUwLDggQEAgY2xhc3MgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOwogY2xh
c3MgU2VydmljZVdvcmtlckRvd25sb2FkVGFzayA6IHB1YmxpYyBOZXR3b3JrRGF0YVRhc2ssIHB1
YmxpYyBJUEM6OkNvbm5lY3Rpb246OlRocmVhZE1lc3NhZ2VSZWNlaXZlciB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTZXJ2aWNlV29ya2Vy
RG93bmxvYWRUYXNrPiBjcmVhdGUoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRh
VGFza0NsaWVudCYgY2xpZW50LCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVy
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIERvd25sb2FkSUQgZG93
bmxvYWRJRCkgeyByZXR1cm4gYWRvcHRSZWYoKiBuZXcgU2VydmljZVdvcmtlckRvd25sb2FkVGFz
ayhzZXNzaW9uLCBjbGllbnQsIGNvbm5lY3Rpb24sIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBz
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgZmV0Y2hJZGVudGlmaWVyLCByZXF1ZXN0LCBkb3du
bG9hZElEKSk7IH0KKyAgICBXVEZfQ1JFQVRFKFNlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2spOwor
CiAgICAgflNlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2soKTsKIAogICAgIFdlYkNvcmU6OkZldGNo
SWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2ZldGNoSWRlbnRp
ZmllcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrRGF0YVRhc2tDb2NvYS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCmluZGV4IDE3MTQyNGI4YTAyNzQwMjRmNmQ2NjczNTU1
YTIyYjdhMDZiYTE0OTcuLmI2YzY3ZWU4ZjAyY2JiZjkzMmVjZDVhNGM0MjQxYWUyMTE2MzRjNjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0Rh
dGFUYXNrQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtEYXRhVGFza0NvY29hLmgKQEAgLTQ5LDEwICs0OSw3IEBAIHN0cnVjdCBTZXNzaW9uV3Jh
cHBlcjsKIAogY2xhc3MgTmV0d29ya0RhdGFUYXNrQ29jb2EgZmluYWwgOiBwdWJsaWMgTmV0d29y
a0RhdGFUYXNrIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPE5ldHdvcmtEYXRhVGFzaz4gY3Jl
YXRlKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmIGNsaWVu
dCwgY29uc3QgTmV0d29ya0xvYWRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmV0d29ya0RhdGFUYXNrQ29jb2Eoc2Vzc2lvbiwgY2xp
ZW50LCBwYXJhbWV0ZXJzKSk7Ci0gICAgfQorICAgIFdURl9DUkVBVEUoTmV0d29ya0RhdGFUYXNr
Q29jb2EpOwogCiAgICAgfk5ldHdvcmtEYXRhVGFza0NvY29hKCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455800</attachid>
            <date>2022-03-25 14:49:05 -0700</date>
            <delta_ts>2022-04-14 07:22:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238392-20220325144904.patch</filename>
            <type>text/plain</type>
            <size>14366</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxODgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGE4YTJkMmU4OTRjMTRhNmUzMjc0Mjk1
MzRjYjNhYmI0ZTU2MDhjMDguLmIwNGFhNjBkOWM5ZDVhNDA1MGI3NWI0MjBmNzIyNGU3MGMzYTBh
OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDMtMjUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBJbnRyb2R1Y2UgV1RGX0NSRUFURSBt
YWNybworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4
MzkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyByZWR1Y2VzIGJvaWxlcnBsYXRlIGNvZGUgaW4gb3VyIG1hbnkgY3JlYXRlIGZ1bmN0aW9ucyB0
aGF0IGp1c3QgY2FsbCB0aGUgY29uc3RydWN0b3IuCisgICAgICAgIEl0IGNvdWxkIGJlIG11Y2gg
bW9yZSB3aWRlbHkgYWRvcHRlZCBidXQgSSd2ZSBqdXN0IGFkb3B0ZWQgaXQgaW4gYSBoYW5kZnVs
bCBvZiBjbGFzc2VzLgorCisgICAgICAgICogd3RmL0ZvcndhcmQuaDoKKwogMjAyMi0wMy0yNSAg
QW50b2luZSBRdWludCAgPGdyYW91dHNAd2Via2l0Lm9yZz4KIAogICAgICAgICBbd2ViLWFuaW1h
dGlvbnNdIGVuYWJsZSBzdXBwb3J0IGZvciBtdXRhYmxlIHRpbWVsaW5lcyBieSBkZWZhdWx0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggMzlmMzI2YzU2MGRjNzVkZDZlMzUwOWNiMzYzZDU4NGNhNzVkYWZkZC4uMTVi
ZDI5ZDk4Y2JiMjhlZWVhMzlkYTE1ZDhiMWEzNzAxZmYwMmJkMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDI3IEBACisyMDIyLTAzLTI1ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgSW50cm9kdWNlIFdURl9DUkVBVEUgbWFjcm8KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODM5MgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogY3NzL3R5cGVkb20vY29s
b3IvQ1NTQ29sb3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NvbG9yOjpjcmVhdGUpOiBEZWxl
dGVkLgorICAgICAgICAqIGNzcy90eXBlZG9tL2NvbG9yL0NTU0hTTC5oOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTSFNMOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAqIGNzcy90eXBlZG9tL2Nv
bG9yL0NTU0hXQi5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTSFdCOjpjcmVhdGUpOiBEZWxldGVk
LgorICAgICAgICAqIGNzcy90eXBlZG9tL2NvbG9yL0NTU0xDSC5oOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTTENIOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAqIGNzcy90eXBlZG9tL2NvbG9y
L0NTU0xhYi5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTGFiOjpjcmVhdGUpOiBEZWxldGVkLgor
ICAgICAgICAqIGNzcy90eXBlZG9tL2NvbG9yL0NTU09LTENILmg6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NPS0xDSDo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBjc3MvdHlwZWRvbS9jb2xv
ci9DU1NPS0xhYi5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTT0tMYWI6OmNyZWF0ZSk6IERlbGV0
ZWQuCisgICAgICAgICogY3NzL3R5cGVkb20vY29sb3IvQ1NTUkdCLmg6CisgICAgICAgIChXZWJD
b3JlOjpDU1NSR0I6OmNyZWF0ZSk6IERlbGV0ZWQuCisKIDIwMjItMDMtMjUgIEogUGFzY29lICA8
al9wYXNjb2VAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJBdXRobl0gTWFpbnRhaW4gbGFzdCBt
b2RpZmljYXRpb24gdGltZSBzZXBhcmF0ZSBmcm9tIGxhc3QgdXNlZCB0aW1lIGZvciBwbGF0Zm9y
bSBjcmVkZW50aWFscwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiYmM1ZjUyMmI1NzVjNjVmNGNmZDdjYzAyM2U0NjYz
MWM2Y2RhYjUzLi43MmI4ODExNzEwZTI0ZWRhMTZkMDJmZmZhMWVjYjA1NjVlNmMyOWRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIyLTAzLTI1ICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW50cm9kdWNlIFdURl9DUkVBVEUgbWFj
cm8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODM5
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogR1BVUHJvY2Vz
cy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGlwZWxpbmUuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2suaDoKKyAg
ICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckRvd25sb2FkVGFzazo6Y3JlYXRlKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5o
OgorCiAyMDIyLTAzLTI1ICBKIFBhc2NvZSAgPGpfcGFzY29lQGFwcGxlLmNvbT4KICAgICAgICAg
W1dlYkF1dGhuXSBNYWludGFpbiBsYXN0IG1vZGlmaWNhdGlvbiB0aW1lIHNlcGFyYXRlIGZyb20g
bGFzdCB1c2VkIHRpbWUgZm9yIHBsYXRmb3JtIGNyZWRlbnRpYWxzCiAgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgyOTMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL0ZvcndhcmQuaCBiL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaAppbmRleCAzY2U3
NjEyNDJjMzJlYzE2OTRjNjVhNzdlNzQwZTljNjY5M2MzYmI0Li4xMjA0MDRlMTcyYTAzNjAxMjUx
M2IyMzg1MTdiMTY1OTNjYjIxZmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Gb3J3YXJk
LmgKKysrIGIvU291cmNlL1dURi93dGYvRm9yd2FyZC5oCkBAIC0yMjgsMyArMjI4LDUgQEAgdGVt
cGxhdGU8Y2xhc3MgRT4gdXNpbmcgVW5leHBlY3RlZCA9IHN0ZDo6ZXhwZXJpbWVudGFsOjp1bmV4
cGVjdGVkPEU+OwogI2RlZmluZSBXVEZfTEFaWV9IQVNfUkVTVF84IFdURl9MQVpZX0VYUEFORAog
I2RlZmluZSBXVEZfTEFaWV9IQVNfUkVTVCguLi4pIFwKICAgICBXVEZfTEFaWV9KT0lOKFdURl9M
QVpZX0hBU19SRVNUXywgV1RGX0xBWllfTlVNX0FSR1MoX19WQV9BUkdTX18pKQorCisjZGVmaW5l
IFdURl9DUkVBVEUoY2xhc3NuYW1lKSB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPiBzdGF0aWMg
UmVmPGNsYXNzbmFtZT4gY3JlYXRlKEFyZ3MmJi4uLiBhcmdzKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IGNsYXNzbmFtZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vY29sb3IvQ1NTQ29sb3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy90eXBlZG9tL2NvbG9yL0NTU0NvbG9yLmgKaW5kZXggMDYzZGM0NWVjMWQxYTM5
OTAzN2E2NDE3ZjI5YWM5MmQ3OTY1ZjQzOC4uNTM0NWZiNTc3YTY2MTBiYzg1N2QwN2RmMTcyZjcy
NGFkMjcyYjI2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vY29sb3Iv
Q1NTQ29sb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9jb2xvci9DU1NDb2xv
ci5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENTU0NvbG9y
IDogcHVibGljIENTU0NvbG9yVmFsdWUgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoQ1NT
Q29sb3IpOwogcHVibGljOgotICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+IHN0YXRpYyBS
ZWY8Q1NTQ29sb3I+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBDU1NDb2xvcihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsgfQorICAgIFdURl9DUkVB
VEUoQ1NTQ29sb3IpOwogCiAgICAgdm9pZCBzZXRDb2xvclNwYWNlKENTU0tleXdvcmRpc2gpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9jb2xvci9DU1NIU0wuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL2NvbG9yL0NTU0hTTC5oCmluZGV4IDZlNDNiZTcz
NDFhOTFlYWRhNDM4NTlhZDZiZTk3OGVhNGI2NjViZjEuLjU4YWE4NWRjZWE5MjYwZGU3Y2JmNmY2
NjY1ZjBhYmQ2YTg1ZTg2NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9t
L2NvbG9yL0NTU0hTTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL2NvbG9yL0NT
U0hTTC5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENTU0hT
TCA6IHB1YmxpYyBDU1NDb2xvclZhbHVlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKENT
U0hTTCk7CiBwdWJsaWM6Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gc3RhdGljIFJl
ZjxDU1NIU0w+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBD
U1NIU0woc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7IH0KKyAgICBXVEZfQ1JFQVRFKENT
U0hTTCk7CiAKICAgICBjb25zdCBDU1NDb2xvckFuZ2xlJiBoKCkgY29uc3QgeyByZXR1cm4gbV9o
dWU7IH0KICAgICB2b2lkIHNldEgoQ1NTQ29sb3JBbmdsZSBodWUpIHsgbV9odWUgPSBXVEZNb3Zl
KGh1ZSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL2NvbG9yL0NT
U0hXQi5oIGIvU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vY29sb3IvQ1NTSFdCLmgKaW5kZXgg
NTMxZmExZGYwODg0NDYxZTg1OTUxMDVkZjRlOGUyNWUzYWRiNDM4Mi4uNGFhMmMzMjUwMGJlZmJj
ZmIzOTZiZmE0ODhjYmI2MDAzMDMxZjJlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L3R5cGVkb20vY29sb3IvQ1NTSFdCLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20v
Y29sb3IvQ1NTSFdCLmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgQ1NTSFdCIDogcHVibGljIENTU0NvbG9yVmFsdWUgewogICAgIFdURl9NQUtFX0lTT19BTExP
Q0FURUQoQ1NTSFdCKTsKIHB1YmxpYzoKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPiBz
dGF0aWMgUmVmPENTU0hXQj4gY3JlYXRlKEFyZ3MmJi4uLiBhcmdzKSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IENTU0hXQihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsgfQorICAgIFdURl9D
UkVBVEUoQ1NTSFdCKTsKIAogICAgIGNvbnN0IFJlZjxDU1NOdW1lcmljVmFsdWU+JiBoKCkgY29u
c3QgeyByZXR1cm4gbV9odWU7IH0KICAgICB2b2lkIHNldEgoUmVmPENTU051bWVyaWNWYWx1ZT4g
aHVlKSB7IG1faHVlID0gV1RGTW92ZShodWUpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvdHlwZWRvbS9jb2xvci9DU1NMQ0guaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9t
L2NvbG9yL0NTU0xDSC5oCmluZGV4IGRlMTllZGE2YzFhZWU3M2EyYzRhZDc5NWRhMzE0MzkxODA4
MTViMmEuLjUwNWI5NjUwZmMzNDZmNmJmMjVkMDVlNWM4MWNiZDYzYjJlNjRhZWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL2NvbG9yL0NTU0xDSC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy90eXBlZG9tL2NvbG9yL0NTU0xDSC5oCkBAIC0zNCw3ICszNCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENTU0xDSCA6IHB1YmxpYyBDU1NDb2xvclZhbHVlIHsK
ICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKENTU0xDSCk7CiBwdWJsaWM6Ci0gICAgdGVtcGxh
dGU8dHlwZW5hbWUuLi4gQXJncz4gc3RhdGljIFJlZjxDU1NMQ0g+IGNyZWF0ZShBcmdzJiYuLi4g
YXJncykgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NMQ0goc3RkOjpmb3J3YXJkPEFyZ3M+KGFy
Z3MpLi4uKSk7IH0KKyAgICBXVEZfQ1JFQVRFKENTU0xDSCk7CiAKICAgICBjb25zdCBDU1NDb2xv
clBlcmNlbnQmIGwoKSBjb25zdCB7IHJldHVybiBtX2xpZ2h0bmVzczsgfQogICAgIHZvaWQgc2V0
TChDU1NDb2xvclBlcmNlbnQgbGlnaHRuZXNzKSB7IG1fbGlnaHRuZXNzID0gV1RGTW92ZShsaWdo
dG5lc3MpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9jb2xvci9D
U1NMYWIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL2NvbG9yL0NTU0xhYi5oCmluZGV4
IDE5NzhmOWRkNTczMzFjMzgzYWE1ODQ3NWFmM2MyNzFmNTc0NmZjMWIuLmJiNjIyYTRhMTljMDcw
ZDdkMjBlMTdkNzI2ZDg3OTIzNGZiMWJiYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy90eXBlZG9tL2NvbG9yL0NTU0xhYi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9t
L2NvbG9yL0NTU0xhYi5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIENTU0xhYiA6IHB1YmxpYyBDU1NDb2xvclZhbHVlIHsKICAgICBXVEZfTUFLRV9JU09fQUxM
T0NBVEVEKENTU0xhYik7CiBwdWJsaWM6Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4g
c3RhdGljIFJlZjxDU1NMYWI+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBDU1NMYWIoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7IH0KKyAgICBXVEZf
Q1JFQVRFKENTU0xhYik7CiAKICAgICBjb25zdCBDU1NDb2xvclBlcmNlbnQmIGwoKSBjb25zdCB7
IHJldHVybiBtX2xpZ2h0bmVzczsgfQogICAgIHZvaWQgc2V0TChDU1NDb2xvclBlcmNlbnQgbGln
aHRuZXNzKSB7IG1fbGlnaHRuZXNzID0gV1RGTW92ZShsaWdodG5lc3MpOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9jb2xvci9DU1NPS0xDSC5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL3R5cGVkb20vY29sb3IvQ1NTT0tMQ0guaAppbmRleCAxOTA4NTMxNTA2ZWYyOTE0
ZWEwOWFhYzY3NjIwZDliNWU2NWFkNzk4Li5kZGI2ZjExOGU1NTk3M2IxYjc5ZDhhYzk4NzkxMmRi
MzA3YzlkZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9jb2xvci9D
U1NPS0xDSC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL2NvbG9yL0NTU09LTENI
LmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ1NTT0tMQ0gg
OiBwdWJsaWMgQ1NTQ29sb3JWYWx1ZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChDU1NP
S0xDSCk7CiBwdWJsaWM6Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gc3RhdGljIFJl
ZjxDU1NPS0xDSD4gY3JlYXRlKEFyZ3MmJi4uLiBhcmdzKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IENTU09LTENIKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOyB9CisgICAgV1RGX0NSRUFU
RShDU1NPS0xDSCk7CiAKICAgICBjb25zdCBDU1NDb2xvclBlcmNlbnQmIGwoKSBjb25zdCB7IHJl
dHVybiBtX2xpZ2h0bmVzczsgfQogICAgIHZvaWQgc2V0TChDU1NDb2xvclBlcmNlbnQgbGlnaHRu
ZXNzKSB7IG1fbGlnaHRuZXNzID0gV1RGTW92ZShsaWdodG5lc3MpOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9jb2xvci9DU1NPS0xhYi5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL3R5cGVkb20vY29sb3IvQ1NTT0tMYWIuaAppbmRleCAxZGFhNjRlN2RhN2EwOTY3OGNk
N2U3ODMyMWNmNWZiYWFhYTNhMGI5Li4xODMxZDM3MjUxOTlhZjExZjJlZWU5MGFjOGMwMzk4Mzhj
YTk2MDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9jb2xvci9DU1NP
S0xhYi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL2NvbG9yL0NTU09LTGFiLmgK
QEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ1NTT0tMYWIgOiBw
dWJsaWMgQ1NTQ29sb3JWYWx1ZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChDU1NPS0xh
Yik7CiBwdWJsaWM6Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gc3RhdGljIFJlZjxD
U1NPS0xhYj4gY3JlYXRlKEFyZ3MmJi4uLiBhcmdzKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENT
U09LTGFiKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOyB9CisgICAgV1RGX0NSRUFURShD
U1NPS0xhYik7CiAKICAgICBjb25zdCBDU1NDb2xvclBlcmNlbnQmIGwoKSBjb25zdCB7IHJldHVy
biBtX2xpZ2h0bmVzczsgfQogICAgIHZvaWQgc2V0TChDU1NDb2xvclBlcmNlbnQgbGlnaHRuZXNz
KSB7IG1fbGlnaHRuZXNzID0gV1RGTW92ZShsaWdodG5lc3MpOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9jb2xvci9DU1NSR0IuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy90eXBlZG9tL2NvbG9yL0NTU1JHQi5oCmluZGV4IDFmMTdkYjZhMjY5ZWUzYzcwM2NkYTM3ZmQ3
YjAyMDM0NzMwMTllMjcuLjcxZDFlMjNlMzU0M2NjY2JkNjk2ZTFjNjcyNmYwNmY3NzFkNDYyMjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL2NvbG9yL0NTU1JHQi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL2NvbG9yL0NTU1JHQi5oCkBAIC0zNiw3ICsz
Niw3IEBAIHVzaW5nIENTU0NvbG9yUkdCQ29tcCA9IHN0ZDo6dmFyaWFudDxkb3VibGUsIFJlZlB0
cjxDU1NOdW1lcmljVmFsdWU+LCBTdHJpbmcsIFJlCiBjbGFzcyBDU1NSR0IgOiBwdWJsaWMgQ1NT
Q29sb3JWYWx1ZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChDU1NSR0IpOwogcHVibGlj
OgotICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+IHN0YXRpYyBSZWY8Q1NTUkdCPiBjcmVh
dGUoQXJncyYmLi4uIGFyZ3MpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTUkdCKHN0ZDo6Zm9y
d2FyZDxBcmdzPihhcmdzKS4uLikpOyB9CisgICAgV1RGX0NSRUFURShDU1NSR0IpOwogCiAgICAg
Y29uc3QgQ1NTQ29sb3JSR0JDb21wJiByKCkgY29uc3QgeyByZXR1cm4gbV9yZWQ7IH0KICAgICB2
b2lkIHNldFIoQ1NTQ29sb3JSR0JDb21wIHJlZCkgeyBtX3JlZCA9IFdURk1vdmUocmVkKTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwCmluZGV4IGI0M2RiYmVmODQ2NDYyMzA3ZjgyNmRkMGFlMWQ4MmRhOTZkYjg3MTMu
LjllMWY2MmE3M2U4YzRmODUwNmEzNzIzNGI2Yzg1MzQ5YmY2MjU4ODUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAK
QEAgLTIyOSwxMSArMjI5LDYgQEAgcHJpdmF0ZToKIAogI2VuZGlmCiAKLVJlZjxHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzPiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUoR1BVUHJv
Y2VzcyYgZ3B1UHJvY2VzcywgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lk
ZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmll
ciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRl
cnMmJiBwYXJhbWV0ZXJzKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MoZ3B1UHJvY2Vzcywgd2ViUHJvY2Vzc0lkZW50aWZpZXIsIGNvbm5lY3Rp
b25JZGVudGlmaWVyLCBzZXNzaW9uSUQsIFdURk1vdmUocGFyYW1ldGVycykpKTsKLX0KLQogR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhHUFVQcm9j
ZXNzJiBncHVQcm9jZXNzLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRl
bnRpZmllciwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVy
LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIEdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVy
cyYmIHBhcmFtZXRlcnMpCiAgICAgOiBtX2Nvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uOjpjcmVh
dGVTZXJ2ZXJDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVyLCAqdGhpcykpCiAgICAgLCBt
X2dwdVByb2Nlc3MoZ3B1UHJvY2VzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IGI3MmMwYjM3MzYyYjczOWRiZmEz
ZWQ5YTBjNGEwMWUzYjIxYjFlOTkuLjVjMDJiYTAzODc5NTNlNTZkZjVkYzNlNjkwN2UwYTEwMTg1
MDc4NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaApAQCAtMTE1LDcgKzExNSw4IEBAIGNsYXNzIEdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MKICAgICAsIHB1YmxpYyBXZWJDb3JlOjpOb3dQbGF5aW5nTWFuYWdlcjo6Q2xp
ZW50CiAgICAgLCBJUEM6OkNvbm5lY3Rpb246OkNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZjxHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBjcmVhdGUoR1BVUHJvY2VzcyYsIFdlYkNv
cmU6OlByb2Nlc3NJZGVudGlmaWVyLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIsIFBBTDo6
U2Vzc2lvbklELCBHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMmJik7CisgICAgV1RGX0NS
RUFURShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKTsKKwogICAgIHZpcnR1YWwgfkdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MoKTsKIAogICAgIHVzaW5nIFdlYkNvcmU6Ok5vd1BsYXlpbmdNYW5h
Z2VyOjpDbGllbnQ6OndlYWtQdHJGYWN0b3J5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQaXBlbGluZS5oIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQaXBlbGluZS5o
CmluZGV4IDViNzBlMGJmZGZlMmY1MWMyMWU1MzI3MmJkNzFiOWMzZDA3NjBmYjAuLmVlMzkxODE3
NzhiNWYzZjA2ZTI4Y2Y2MmY5MjkyN2IyZTM0ZDZjMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGlwZWxpbmUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBp
cGVsaW5lLmgKQEAgLTQ5LDEwICs0OSw3IEBAIGNsYXNzIE9iamVjdEhlYXA7CiBjbGFzcyBSZW1v
dGVSZW5kZXJQaXBlbGluZSBmaW5hbCA6IHB1YmxpYyBJUEM6OlN0cmVhbU1lc3NhZ2VSZWNlaXZl
ciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxSZW1vdGVSZW5kZXJQaXBlbGluZT4gY3JlYXRlKFBBTDo6V2ViR1BVOjpSZW5kZXJQaXBlbGlu
ZSYgcmVuZGVyUGlwZWxpbmUsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgUmVmPElQ
Qzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4mJiBzdHJlYW1Db25uZWN0aW9uLCBXZWJHUFVJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBS
ZW1vdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZSwgb2JqZWN0SGVhcCwgV1RGTW92ZShz
dHJlYW1Db25uZWN0aW9uKSwgaWRlbnRpZmllcikpOwotICAgIH0KKyAgICBXVEZfQ1JFQVRFKFJl
bW90ZVJlbmRlclBpcGVsaW5lKTsKIAogICAgIHZpcnR1YWwgflJlbW90ZVJlbmRlclBpcGVsaW5l
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFzay5oCmluZGV4IGI4
OWFiM2ViZDc2MmY2ODEyYTVlOTdiZmY2OTBiYTkwZjAyNTdmY2QuLjIyNDBmYjUxNGRjNjcxMmE5
Mzg2YzdlZTljYWRkZjA1NTNlNGJmZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJE
b3dubG9hZFRhc2suaApAQCAtNTAsNyArNTAsOCBAQCBjbGFzcyBXZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb247CiBjbGFzcyBTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrIDogcHVibGljIE5l
dHdvcmtEYXRhVGFzaywgcHVibGljIElQQzo6Q29ubmVjdGlvbjo6VGhyZWFkTWVzc2FnZVJlY2Vp
dmVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPFNlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2s+IGNyZWF0ZShOZXR3b3JrU2Vzc2lvbiYgc2Vz
c2lvbiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50JiBjbGllbnQsIFdlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIg
c2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmll
ciBmZXRjaElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgRG93bmxvYWRJRCBkb3dubG9hZElEKSB7IHJldHVybiBhZG9wdFJlZigqIG5ldyBTZXJ2aWNl
V29ya2VyRG93bmxvYWRUYXNrKHNlc3Npb24sIGNsaWVudCwgY29ubmVjdGlvbiwgc2VydmljZVdv
cmtlcklkZW50aWZpZXIsIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBmZXRjaElkZW50aWZp
ZXIsIHJlcXVlc3QsIGRvd25sb2FkSUQpKTsgfQorICAgIFdURl9DUkVBVEUoU2VydmljZVdvcmtl
ckRvd25sb2FkVGFzayk7CisKICAgICB+U2VydmljZVdvcmtlckRvd25sb2FkVGFzaygpOwogCiAg
ICAgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0
dXJuIG1fZmV0Y2hJZGVudGlmaWVyOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgKaW5kZXggMTcxNDI0Yjhh
MDI3NDAyNGY2ZDY2NzM1NTVhMjJiN2EwNmJhMTQ5Ny4uYjZjNjdlZThmMDJjYmJmOTMyZWNkNWE0
YzQyNDFhZTIxMTYzNGM2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaApAQCAtNDksMTAgKzQ5LDcgQEAg
c3RydWN0IFNlc3Npb25XcmFwcGVyOwogCiBjbGFzcyBOZXR3b3JrRGF0YVRhc2tDb2NvYSBmaW5h
bCA6IHB1YmxpYyBOZXR3b3JrRGF0YVRhc2sgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8TmV0
d29ya0RhdGFUYXNrPiBjcmVhdGUoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRh
VGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBOZXR3b3JrTG9hZFBhcmFtZXRlcnMmIHBhcmFtZXRl
cnMpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3JrRGF0YVRhc2tD
b2NvYShzZXNzaW9uLCBjbGllbnQsIHBhcmFtZXRlcnMpKTsKLSAgICB9CisgICAgV1RGX0NSRUFU
RShOZXR3b3JrRGF0YVRhc2tDb2NvYSk7CiAKICAgICB+TmV0d29ya0RhdGFUYXNrQ29jb2EoKTsK
IAo=
</data>
<flag name="review"
          id="483883"
          type_id="1"
          status="-"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>