Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rSgFh-00FE3E-Cm for pgsql-docs@arkaria.postgresql.org; Wed, 24 Jan 2024 16:37:26 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1rSgFg-006ON1-1h for pgsql-docs@arkaria.postgresql.org; Wed, 24 Jan 2024 16:37:24 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rSgFf-006OLM-Lj for pgsql-docs@lists.postgresql.org; Wed, 24 Jan 2024 16:37:23 +0000 Received: from mail-oo1-xc2d.google.com ([2607:f8b0:4864:20::c2d]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1rSgFc-0039k7-UR for pgsql-docs@lists.postgresql.org; Wed, 24 Jan 2024 16:37:22 +0000 Received: by mail-oo1-xc2d.google.com with SMTP id 006d021491bc7-5994e320086so3141446eaf.3 for ; Wed, 24 Jan 2024 08:37:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1706114240; x=1706719040; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=ldPZuF7J7UTdJky2k8CGU8m6XWf2DA5jqaeht3m31ro=; b=AZgTsdCOzo7krvSHCr129YQDQiviv6cdLgtfoubKjukmBXJuN524HXnPZa2rQ/sg3w Jt4Ml3Gl3REZVzLm6IsvQhqXvC5Aer8AQ6W7z2ZERaVIBjnXRqwmdvd82sEeHBUgT7t1 mfmx8EFUNgQoIpP/F2ao7MqDtWB7gNGXQioh6mIW+fVta7MpPPw7R/sjkJQ6gLamUSaG 6D4qE1UXOOf1pg+f3PR6i3+enBg9fOFGMNGsNg9EAu1inVs8kRy0AcakQAugkWLvSDjy NgtjrR5cPwar0YEJiLrg6Fm5noV9eCAiADpTu2oPHEzknLLQYuF3rsz8SvsGg3NPmBMI uvVw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1706114240; x=1706719040; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=ldPZuF7J7UTdJky2k8CGU8m6XWf2DA5jqaeht3m31ro=; b=qcir/YEKY39V8Q89WmiOz00Gfl25pj2V6GJY5GSdoDrakgSMg2ibCfNsrj5+KXr6IQ FkH9VnagPna7QU4Qw+6AcOuuvEmIpyJaBVCGbJ2/2f9RlA9yKyUnO9d3uGeU4AjGszEf Zyb0DGmMQH1vgMOiTrl+jKtdosIDDC4R7wA7UtHowWnGcWxTb7RwXdSS9HwXpl0W4WYP FeajiY0GR77qb0mDMgFDMJlSH2WWvgGHmdLz3Cr+XNZtjuMfZA2SRgDqSOgburHyyvDy tcs5fT2/gpA8W0GbLkTxVSfs7vS9oavXLpuMpbnoRsavYb04JQDOfenRhZsn3VFyIL9X idwQ== X-Gm-Message-State: AOJu0YzZ8EXsKT1BtC2npAX633KGUsRQ4CiZk9EWydDVlqmwXVieqFth j5402IYgesdYNL44DB/iaE9h0aG83nEm62U3y5VKANbsKD7Oys3qbAtMtlyDiRuVOmRx8saMGGu h22MF0HVItl884v70simJJBlDJcQ= X-Google-Smtp-Source: AGHT+IEiMFwef1MoNFqTPwIWPOgVbJdtbUeJNb/8c/5hWob3WGTYKkQb3wUNHOFrp97EkoNmsIEwBUBYoBlPOYYXpO0= X-Received: by 2002:a4a:dcc3:0:b0:599:5181:f049 with SMTP id h3-20020a4adcc3000000b005995181f049mr1348060oou.15.1706114240118; Wed, 24 Jan 2024 08:37:20 -0800 (PST) MIME-Version: 1.0 References: <2023185982.281851219.1646733038464.JavaMail.root@zimbra15-e2.priv.proxad.net> <1712096587.208766558.1706090901073.JavaMail.zimbra@free.fr> <1327973565.212682013.1706107220766.JavaMail.zimbra@free.fr> In-Reply-To: From: "David G. Johnston" Date: Wed, 24 Jan 2024 09:36:43 -0700 Message-ID: Subject: Re: SQL command : ALTER DATABASE OWNER TO To: Laurenz Albe Cc: gparc@free.fr, Daniel Gustafsson , pgsql-docs Content-Type: multipart/alternative; boundary="0000000000003a8316060fb3ad4a" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000003a8316060fb3ad4a Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Jan 24, 2024 at 9:13=E2=80=AFAM Laurenz Albe wrote: > On Wed, 2024-01-24 at 08:47 -0700, David G. Johnston wrote: > > I dislike this change, ownership of an object is completely independent > of > > the grant system of privileges. The granted privileges of the old row = do > > not transfer to the new owner when alter ... owner to is executed. > > CREATE TABLE mytab (); > > REVOKE ALL ON mytab FROM PUBLIC; > > \z mytab > Access privileges > Schema =E2=94=82 Name =E2=94=82 Type =E2=94=82 Access privileges = =E2=94=82 Column privileges =E2=94=82 > Policies > > =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90= =E2=95=AA=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=AA=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95= =AA=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90= =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95= =90=E2=95=90=E2=95=90=E2=95=AA=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90= =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=AA=E2=95=90=E2=95= =90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90 > public =E2=94=82 mytab =E2=94=82 table =E2=94=82 postgres=3DarwdDxt/post= gres =E2=94=82 =E2=94=82 > (1 row) > > ALTER TABLE mytab OWNER TO laurenz; > > \z mytab > Access privileges > Schema =E2=94=82 Name =E2=94=82 Type =E2=94=82 Access privileges = =E2=94=82 Column privileges =E2=94=82 > Policies > > =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90= =E2=95=AA=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=AA=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95= =AA=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90= =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95= =90=E2=95=AA=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90= =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=AA=E2=95=90=E2=95=90=E2=95=90=E2=95= =90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90 > public =E2=94=82 mytab =E2=94=82 table =E2=94=82 laurenz=3DarwdDxt/laure= nz =E2=94=82 =E2=94=82 > (1 row) > > > You need to actually revoke something to make the point stand out. postgres=3D# \z tt1 Access privileges Schema | Name | Type | Access privileges | Column privileges | Policies --------+------+-------+-----------------------+-------------------+-------= --- public | tt1 | table | davidj=3DarwdDxt/davidj | | (1 row) postgres=3D# revoke update on tt1 from davidj; REVOKE postgres=3D# \z tt1 Access privileges Schema | Name | Type | Access privileges | Column privileges | Policie= s --------+------+-------+----------------------+-------------------+--------= -- public | tt1 | table | davidj=3DardDxt/davidj | | (1 row) postgres=3D# alter table tt1 owner to testowner; ALTER TABLE postgres=3D# \z tt1 Access privileges Schema | Name | Type | Access privileges | Column privileges | Policies --------+------+-------+----------------------------+-------------------+--= -------- public | tt1 | table | testowner=3DardDxt/testowner | | (1 row) The new owner, testowner, is missing the same update privilege that davidj removed from himself. In short, setting owner does indeed cause explicit grants to appear in the system, grants that can be revoked. And so, yes, transferring ownership transfers the set of grants currently in effect for the existing owner. I can see making this detail more clear in the DDL chapter. It is unrelated to the confusion behind the topic of this thread though. David J. --0000000000003a8316060fb3ad4a Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: base64 PGRpdiBkaXI9Imx0ciI+PGRpdiBkaXI9Imx0ciI+PGRpdiBjbGFzcz0iZ21haWxfZGVmYXVsdCIg c3R5bGU9ImZvbnQtZmFtaWx5OmFyaWFsLGhlbHZldGljYSxzYW5zLXNlcmlmIj48c3BhbiBzdHls ZT0iZm9udC1mYW1pbHk6QXJpYWwsSGVsdmV0aWNhLHNhbnMtc2VyaWYiPk9uIFdlZCwgSmFuIDI0 LCAyMDI0IGF0IDk6MTPigK9BTSBMYXVyZW56IEFsYmUgJmx0OzxhIGhyZWY9Im1haWx0bzpsYXVy ZW56LmFsYmVAY3liZXJ0ZWMuYXQiPmxhdXJlbnouYWxiZUBjeWJlcnRlYy5hdDwvYT4mZ3Q7IHdy b3RlOjwvc3Bhbj48YnI+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0iZ21haWxfcXVvdGUiPjxibG9j a3F1b3RlIGNsYXNzPSJnbWFpbF9xdW90ZSIgc3R5bGU9Im1hcmdpbjowcHggMHB4IDBweCAwLjhl eDtib3JkZXItbGVmdDoxcHggc29saWQgcmdiKDIwNCwyMDQsMjA0KTtwYWRkaW5nLWxlZnQ6MWV4 Ij5PbiBXZWQsIDIwMjQtMDEtMjQgYXQgMDg6NDcgLTA3MDAsIERhdmlkIEcuIEpvaG5zdG9uIHdy b3RlOjxicj4NCiZndDsgSSBkaXNsaWtlIHRoaXMgY2hhbmdlLCBvd25lcnNoaXAgb2YgYW4gb2Jq ZWN0IGlzIGNvbXBsZXRlbHkgaW5kZXBlbmRlbnQgb2Y8YnI+DQomZ3Q7IHRoZSBncmFudCBzeXN0 ZW0gb2YgcHJpdmlsZWdlcy7CoCBUaGUgZ3JhbnRlZCBwcml2aWxlZ2VzIG9mIHRoZSBvbGQgcm93 IGRvPGJyPg0KJmd0OyBub3QgdHJhbnNmZXIgdG8gdGhlIG5ldyBvd25lciB3aGVuIGFsdGVyIC4u LiBvd25lcsKgdG8gaXMgZXhlY3V0ZWQuwqA8YnI+DQo8YnI+DQpDUkVBVEUgVEFCTEUgbXl0YWIg KCk7PGJyPg0KPGJyPg0KUkVWT0tFIEFMTCBPTiBteXRhYiBGUk9NIFBVQkxJQzs8YnI+DQo8YnI+ DQpceiBteXRhYjxicj4NCsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgQWNjZXNzIHByaXZpbGVnZXM8YnI+DQrCoFNjaGVtYSDilIIgTmFtZcKgIOKUgiBU eXBlwqAg4pSCwqAgwqAgwqBBY2Nlc3MgcHJpdmlsZWdlc8KgIMKgIMKg4pSCIENvbHVtbiBwcml2 aWxlZ2VzIOKUgiBQb2xpY2llcyA8YnI+DQrilZDilZDilZDilZDilZDilZDilZDilZDilarilZDi lZDilZDilZDilZDilZDilZDilarilZDilZDilZDilZDilZDilZDilZDilarilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilarilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilarilZDilZDilZDilZDilZDilZDilZDilZDilZDilZA8YnI+DQrCoHB1 YmxpYyDilIIgbXl0YWIg4pSCIHRhYmxlIOKUgiBwb3N0Z3Jlcz1hcndkRHh0L3Bvc3RncmVzIOKU gsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg4pSCIDxicj4NCigxIHJvdyk8YnI+DQo8YnI+ DQpBTFRFUiBUQUJMRSBteXRhYiBPV05FUiBUTyBsYXVyZW56Ozxicj4NCjxicj4NClx6IG15dGFi PGJyPg0KwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgQWNj ZXNzIHByaXZpbGVnZXM8YnI+DQrCoFNjaGVtYSDilIIgTmFtZcKgIOKUgiBUeXBlwqAg4pSCwqAg wqAgQWNjZXNzIHByaXZpbGVnZXPCoCDCoCDilIIgQ29sdW1uIHByaXZpbGVnZXMg4pSCIFBvbGlj aWVzIDxicj4NCuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVquKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVquKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVquKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVquKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVquKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkDxicj4NCsKgcHVibGljIOKUgiBteXRhYiDilIIgdGFi bGUg4pSCIGxhdXJlbno9YXJ3ZER4dC9sYXVyZW56IOKUgsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKg4pSCIDxicj4NCigxIHJvdyk8YnI+DQo8YnI+PGJyPjwvYmxvY2txdW90ZT48ZGl2Pjxk aXYgY2xhc3M9ImdtYWlsX2RlZmF1bHQiIHN0eWxlPSJmb250LWZhbWlseTphcmlhbCxoZWx2ZXRp Y2Esc2Fucy1zZXJpZiI+PGJyPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9ImdtYWlsX3F1 b3RlIj48ZGl2IGNsYXNzPSJnbWFpbF9kZWZhdWx0IiBzdHlsZT0iZm9udC1mYW1pbHk6YXJpYWws aGVsdmV0aWNhLHNhbnMtc2VyaWYiPllvdSBuZWVkIHRvIGFjdHVhbGx5IHJldm9rZSBzb21ldGhp bmcgdG8gbWFrZSB0aGUgcG9pbnQgc3RhbmQgb3V0LjwvZGl2PjxkaXYgY2xhc3M9ImdtYWlsX2Rl ZmF1bHQiIHN0eWxlPSJmb250LWZhbWlseTphcmlhbCxoZWx2ZXRpY2Esc2Fucy1zZXJpZiI+PGJy PjwvZGl2PjxkaXYgY2xhc3M9ImdtYWlsX2RlZmF1bHQiIHN0eWxlPSJmb250LWZhbWlseTphcmlh bCxoZWx2ZXRpY2Esc2Fucy1zZXJpZiI+cG9zdGdyZXM9IyBceiB0dDE8YnI+wqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgQWNjZXNzIHByaXZpbGVnZXM8YnI+wqBT Y2hlbWEgfCBOYW1lIHwgVHlwZSDCoHwgwqAgQWNjZXNzIHByaXZpbGVnZXMgwqAgfCBDb2x1bW4g cHJpdmlsZWdlcyB8IFBvbGljaWVzPGJyPi0tLS0tLS0tKy0tLS0tLSstLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLTxicj7CoHB1Ymxp YyB8IHR0MSDCoHwgdGFibGUgfCBkYXZpZGo9YXJ3ZER4dC9kYXZpZGogfCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCB8PGJyPigxIHJvdyk8YnI+cG9zdGdyZXM9IyByZXZva2UgdXBkYXRlIG9u IHR0MSBmcm9tIGRhdmlkajs8YnI+UkVWT0tFPGJyPnBvc3RncmVzPSMgXHogdHQxPGJyPsKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIEFjY2VzcyBwcml2aWxlZ2Vz PGJyPsKgU2NoZW1hIHwgTmFtZSB8IFR5cGUgwqB8IMKgQWNjZXNzIHByaXZpbGVnZXMgwqAgfCBD b2x1bW4gcHJpdmlsZWdlcyB8IFBvbGljaWVzPGJyPi0tLS0tLS0tKy0tLS0tLSstLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tPGJyPsKg cHVibGljIHwgdHQxIMKgfCB0YWJsZSB8IGRhdmlkaj1hcmREeHQvZGF2aWRqIHwgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgfDxicj4oMSByb3cpPGJyPjxicj5wb3N0Z3Jlcz0jIGFsdGVyIHRh YmxlIHR0MSBvd25lciB0byB0ZXN0b3duZXI7PGJyPkFMVEVSIFRBQkxFPGJyPnBvc3RncmVzPSMg XHogdHQxPGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgQWNjZXNzIHByaXZpbGVnZXM8YnI+wqBTY2hlbWEgfCBOYW1lIHwgVHlwZSDCoHwgwqAgwqAg QWNjZXNzIHByaXZpbGVnZXMgwqAgwqAgwqB8IENvbHVtbiBwcml2aWxlZ2VzIHwgUG9saWNpZXM8 YnI+LS0tLS0tLS0rLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS08YnI+wqBwdWJsaWMgfCB0dDEgwqB8IHRhYmxl IHwgdGVzdG93bmVyPWFyZER4dC90ZXN0b3duZXIgfCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCB8PGJyPigxIHJvdyk8YnI+PGJyPjwvZGl2PjxkaXYgY2xhc3M9ImdtYWlsX2RlZmF1bHQiIHN0 eWxlPSJmb250LWZhbWlseTphcmlhbCxoZWx2ZXRpY2Esc2Fucy1zZXJpZiI+VGhlIG5ldyBvd25l ciwgdGVzdG93bmVyLCBpcyBtaXNzaW5nIHRoZSBzYW1lIHVwZGF0ZSBwcml2aWxlZ2UgdGhhdCBk YXZpZGogcmVtb3ZlZCBmcm9tIGhpbXNlbGYuwqAgSW4gc2hvcnQsIHNldHRpbmcgb3duZXIgZG9l cyBpbmRlZWQgY2F1c2UgZXhwbGljaXQgZ3JhbnRzIHRvIGFwcGVhciBpbiB0aGUgc3lzdGVtLCBn cmFudHMgdGhhdCBjYW4gYmUgcmV2b2tlZC7CoCBBbmQgc28sIHllcywgdHJhbnNmZXJyaW5nIG93 bmVyc2hpcCB0cmFuc2ZlcnMgdGhlIHNldCBvZiBncmFudHMgY3VycmVudGx5IGluIGVmZmVjdCBm b3IgdGhlIGV4aXN0aW5nIG93bmVyLjwvZGl2PjxkaXYgY2xhc3M9ImdtYWlsX2RlZmF1bHQiIHN0 eWxlPSJmb250LWZhbWlseTphcmlhbCxoZWx2ZXRpY2Esc2Fucy1zZXJpZiI+PGJyPjwvZGl2Pjxk aXYgY2xhc3M9ImdtYWlsX2RlZmF1bHQiIHN0eWxlPSJmb250LWZhbWlseTphcmlhbCxoZWx2ZXRp Y2Esc2Fucy1zZXJpZiI+SSBjYW4gc2VlIG1ha2luZyB0aGlzIGRldGFpbCBtb3JlIGNsZWFyIGlu IHRoZSBEREwgY2hhcHRlci7CoCBJdCBpcyB1bnJlbGF0ZWQgdG8gdGhlIGNvbmZ1c2lvbiBiZWhp bmQgdGhlIHRvcGljIG9mIHRoaXMgdGhyZWFkIHRob3VnaC48L2Rpdj48ZGl2IGNsYXNzPSJnbWFp bF9kZWZhdWx0IiBzdHlsZT0iZm9udC1mYW1pbHk6YXJpYWwsaGVsdmV0aWNhLHNhbnMtc2VyaWYi Pjxicj48L2Rpdj48ZGl2IGNsYXNzPSJnbWFpbF9kZWZhdWx0IiBzdHlsZT0iZm9udC1mYW1pbHk6 YXJpYWwsaGVsdmV0aWNhLHNhbnMtc2VyaWYiPkRhdmlkIEouPC9kaXY+PGRpdiBjbGFzcz0iZ21h aWxfZGVmYXVsdCIgc3R5bGU9ImZvbnQtZmFtaWx5OmFyaWFsLGhlbHZldGljYSxzYW5zLXNlcmlm Ij48YnI+PC9kaXY+PC9kaXY+PC9kaXY+DQo= --0000000000003a8316060fb3ad4a--