// ĠCopyright Ġ 2 0 2 0 ĠThe ĠCross - Media ĠMeasurement ĠAuthors Ċ // Ċ // ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ // Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ // ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ // Ċ // ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ // Ċ // ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ // Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ // ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ // ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ // Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ċ package Ġorg . wf an et . measurement . king dom . service . api . v 2 alpha Ċ Ċ import Ġkotlin . math . min Ċ import Ġkotlinx . coroutines . flow . toList Ċ import Ġorg . wf an et . measurement . api . Version Ċ import Ġorg . wf an et . measurement . api . v 2 . alpha . List Event Groups PageToken Ċ import Ġorg . wf an et . measurement . api . v 2 . alpha . List Event Groups PageToken Kt . previous Page End Ċ import Ġorg . wf an et . measurement . api . v 2 . alpha . copy Ċ import Ġorg . wf an et . measurement . api . v 2 . alpha . list Event Groups PageToken Ċ import Ġorg . wf an et . measurement . api . v 2 alpha . Create Event Group Request Ċ import Ġorg . wf an et . measurement . api . v 2 alpha . DataProvider Key Ċ import Ġorg . wf an et . measurement . api . v 2 alpha . Event Group Ċ import Ġorg . wf an et . measurement . api . v 2 alpha . Event Group Key Ċ import Ġorg . wf an et . measurement . api . v 2 alpha . Event Group Kt . event Template Ċ import Ġorg . wf an et . measurement . api . v 2 alpha . Event Groups Grpc Kt . Event Groups Coroutine Impl Base Ċ import Ġorg . wf an et . measurement . api . v 2 alpha . Get Event Group Request Ċ import Ġorg . wf an et . measurement . api . v 2 alpha . List Event Groups Request Ċ import Ġorg . wf an et . measurement . api . v 2 alpha . List Event Groups Response Ċ import Ġorg . wf an et . measurement . api . v 2 alpha . Measurement Consumer Certificate Key Ċ import Ġorg . wf an et . measurement . api . v 2 alpha . Measurement Consumer Key Ċ import Ġorg . wf an et . measurement . api . v 2 alpha . event Group Ċ import Ġorg . wf an et . measurement . api . v 2 alpha . list Event Groups Response Ċ import Ġorg . wf an et . measurement . api . v 2 alpha . signed Data Ċ import Ġorg . wf an et . measurement . common . base 6 4 Url Decode Ċ import Ġorg . wf an et . measurement . common . base 6 4 Url Encode Ċ import Ġorg . wf an et . measurement . common . grpc . grpc Require Ċ import Ġorg . wf an et . measurement . common . grpc . grpc Require NotNull Ċ import Ġorg . wf an et . measurement . common . identity . api Id To External Id Ċ import Ġorg . wf an et . measurement . common . identity . external Id To Api Id Ċ import Ġorg . wf an et . measurement . internal . king dom . Event Group Ġas ĠInternal Event Group Ċ import Ġorg . wf an et . measurement . internal . king dom . Event Group Kt . details Ċ import Ġorg . wf an et . measurement . internal . king dom . Event Group Kt . event Template Ġas Ġinternal Event Template Ċ import Ġorg . wf an et . measurement . internal . king dom . Event Groups Grpc Kt . Event Groups Coroutine Stub Ċ import Ġorg . wf an et . measurement . internal . king dom . Stream Event Groups Request Ċ import Ġorg . wf an et . measurement . internal . king dom . Stream Event Groups Request Kt . filter Ċ import Ġorg . wf an et . measurement . internal . king dom . event Group Ġas Ġinternal Event Group Ċ import Ġorg . wf an et . measurement . internal . king dom . getEvent Group Request Ċ import Ġorg . wf an et . measurement . internal . king dom . stream Event Groups Request Ċ Ċ private Ġconst Ġval ĠMIN _ PAGE _ SIZE Ġ= Ġ 1 Ċ private Ġconst Ġval ĠDEFAULT _ PAGE _ SIZE Ġ= Ġ 5 0 Ċ private Ġconst Ġval ĠMAX _ PAGE _ SIZE Ġ= Ġ 1 0 0 Ċ private Ġconst Ġval ĠW IL DC ARD Ġ= Ġ"-" Ċ private Ġval ĠAPI _ VERSION Ġ= ĠVersion . V 2 _ ALPHA Ċ Ċ class ĠEvent Groups Service ( private Ġval Ġinternal Event Groups Stub : ĠEvent Groups Coroutine Stub ) Ġ: ĊĠ ĠEvent Groups Coroutine Impl Base () Ġ{ ĊĊĠ Ġoverride Ġsuspend Ġfun Ġget Event Group ( request : ĠGet Event Group Request ): ĠEvent Group Ġ{ ĊĠĠĠ Ġval Ġkey Ġ= ĊĠĠĠĠĠ Ġgrpc Require NotNull ( Event Group Key . from Name ( request . name )) Ġ{ ĊĠĠĠĠĠĠĠ Ġ" Resource Ġname Ġis Ġeither Ġunspecified Ġor Ġinvalid " ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġget Request Ġ= Ġget Event Group Request Ġ{ ĊĠĠĠĠĠ Ġexternal DataProvider Id Ġ= Ġapi Id To External Id ( key . dataProvider Id ) ĊĠĠĠĠĠ Ġexternal Event GroupId Ġ= Ġapi Id To External Id ( key . event GroupId ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġinternal Event Groups Stub . getEvent Group ( getRequest ). to Event Group () ĊĠ Ġ} ĊĊĠ Ġoverride Ġsuspend Ġfun Ġcreate Event Group ( request : ĠCreate Event Group Request ): ĠEvent Group Ġ{ ĊĠĠĠ Ġgrpc Require ( ĊĠĠĠĠĠ Ġrequest . event Group . encrypted Metadata . isEmpty Ġ|| ĊĠĠĠĠĠĠĠ Ġrequest . event Group . has Measurement Consumer PublicKey () ĊĠĠĠ Ġ) Ġ{ Ġ" measurement _ consumer _ public _ key Ġmust Ġbe Ġspecified Ġif Ġencrypted _ metadata Ġis Ġspecified " Ġ} ĊĠĠĠ Ġgrpc Require ( ĊĠĠĠĠĠ Ġ! request . event Group . has Measurement Consumer PublicKey () Ġ|| ĊĠĠĠĠĠĠĠ Ġ! request . event Group . measurement Consumer Certificate . isBlank () ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠ Ġ" measurement _ consumer _ certificate Ġmust Ġbe Ġspecified Ġif Ġmeasurement _ consumer _ public _ key Ġis Ġ" Ġ+ ĊĠĠĠĠĠĠĠ Ġ" specified " ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġinternal Event Groups Stub ĊĠĠĠĠĠ Ġ. create Event Group ( request . event Group . to Internal ( request )) ĊĠĠĠĠĠ Ġ. to Event Group () ĊĠ Ġ} ĊĊĠ Ġoverride Ġsuspend Ġfun Ġlist Event Groups ( request : ĠList Event Groups Request ): ĠList Event Groups Response Ġ{ ĊĠĠĠ Ġval Ġlist Event Groups PageToken Ġ= Ġrequest . toList Event Group PageToken () ĊĊĠĠĠ Ġval Ġresults : ĠList < Internal Event Group > Ġ= ĊĠĠĠĠĠ Ġinternal Event Groups Stub ĊĠĠĠĠĠĠĠ Ġ. stream Event Groups ( list Event Groups PageToken . to Stream Event Groups Request ()) ĊĠĠĠĠĠĠĠ Ġ. toList () ĊĊĠĠĠ Ġif Ġ( results . isEmpty ()) Ġ{ ĊĠĠĠĠĠ Ġreturn ĠList Event Groups Response . getDefaultInstance () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġlist Event Groups Response Ġ{ ĊĠĠĠĠĠ Ġevent Groups Ġ+= ĊĠĠĠĠĠĠĠ Ġresults ĊĠĠĠĠĠĠĠĠĠ Ġ. sub List ( 0 , Ġmin ( results . size , Ġlist Event Groups PageToken . pageSize )) ĊĠĠĠĠĠĠĠĠĠ Ġ. map ( Internal Event Group :: to Event Group ) ĊĠĠĠĠĠ Ġif Ġ( results . size Ġ> Ġlist Event Groups PageToken . pageSize ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpage Token Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġlist Event Groups PageToken . copy Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlast Event Group Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprevious Page End Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexternal DataProvider Id Ġ= Ġresults [ results . last Index Ġ- Ġ 1 ]. external DataProvider Id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexternal Event GroupId Ġ= Ġresults [ results . last Index Ġ- Ġ 1 ]. external Event GroupId ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġnext PageToken Ġ= Ġpage Token . toByteArray (). base 6 4 Url Encode () ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ Ċ /** ĠConverts Ġan Ġinternal Ġ[ Internal Event Group ] Ġto Ġa Ġpublic Ġ[ Event Group ]. Ġ*/ Ċ private Ġfun ĠInternal Event Group . to Event Group (): ĠEvent Group Ġ{ ĊĠ Ġreturn Ġevent Group Ġ{ ĊĠĠĠ Ġname Ġ= ĊĠĠĠĠĠ ĠEvent Group Key ( ĊĠĠĠĠĠĠĠĠĠ Ġexternal Id To Api Id ( external DataProvider Id ), ĊĠĠĠĠĠĠĠĠĠ Ġexternal Id To Api Id ( external Event GroupId ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ. to Name () ĊĠĠĠ Ġmeasurement Consumer Ġ= ĊĠĠĠĠĠ ĠMeasurement Consumer Key ( external Id To Api Id ( external Measurement Consumer Id )). to Name () ĊĠĠĠ Ġevent Group Reference Id Ġ= Ġprovided Event GroupId ĊĠĠĠ Ġif Ġ( external Measurement Consumer Certificate Id Ġ!= Ġ 0 L ) Ġ{ ĊĠĠĠĠĠ Ġmeasurement Consumer Certificate Ġ= ĊĠĠĠĠĠĠĠ ĠMeasurement Consumer Certificate Key ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexternal Id To Api Id ( external Measurement Consumer Id ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexternal Id To Api Id ( external Measurement Consumer Certificate Id ) ĊĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠ Ġ. to Name () ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ(! details . measurement Consumer PublicKey . isEmpty ) Ġ{ ĊĠĠĠĠĠ Ġmeasurement Consumer PublicKey Ġ= ĊĠĠĠĠĠĠĠ Ġsigned Data Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġdata Ġ= Ġdetails . measurement Consumer PublicKey ĊĠĠĠĠĠĠĠĠĠ Ġsignature Ġ= Ġdetails . measurement Consumer PublicKey Signature ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġvid Model Lines Ġ+= Ġdetails . vid Model Lines List ĊĠĠĠ Ġevent Templates . addAll ( ĊĠĠĠĠĠ Ġdetails . event Templates List . map Ġ{ Ġevent Ġ-> Ġevent Template Ġ{ Ġtype Ġ= Ġevent . fully Qualified Type Ġ} Ġ} ĊĠĠĠ Ġ) ĊĠĠĠ Ġencrypted Metadata Ġ= Ġdetails . encrypted Metadata ĊĠ Ġ} Ċ } Ċ Ċ /** ĠConverts Ġa Ġpublic Ġ[ Event Group ] Ġto Ġan Ġinternal Ġ[ Internal Event Group ]. Ġ*/ Ċ private Ġfun ĠEvent Group . to Internal ( request : ĠCreate Event Group Request ): ĠInternal Event Group Ġ{ ĊĠ Ġval Ġparent Key Ġ= ĊĠĠĠ Ġgrpc Require NotNull ( DataProvider Key . from Name ( request . parent )) Ġ{ ĊĠĠĠĠĠ Ġ" Parent Ġis Ġeither Ġunspecified Ġor Ġinvalid " ĊĠĠĠ Ġ} ĊĠ Ġval Ġmeasurement Consumer Key Ġ= ĊĠĠĠ Ġgrpc Require NotNull ( Measurement Consumer Key . from Name ( request . event Group . measurement Consumer )) Ġ{ ĊĠĠĠĠĠ Ġ" Measurement Ġconsumer Ġis Ġeither Ġunspecified Ġor Ġinvalid " ĊĠĠĠ Ġ} ĊĠ Ġval Ġmeasurement Consumer Certificate Key Ġ= ĊĠĠĠ ĠMeasurement Consumer Certificate Key . from Name ( this . measurement Consumer Certificate ) ĊĊĠ Ġreturn Ġinternal Event Group Ġ{ ĊĠĠĠ Ġexternal DataProvider Id Ġ= Ġapi Id To External Id ( parent Key . dataProvider Id ) ĊĠĠĠ Ġexternal Measurement Consumer Id Ġ= Ġapi Id To External Id ( measurement Consumer Key . measurement Consumer Id ) ĊĠĠĠ Ġif Ġ( measurement Consumer Certificate Key Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġexternal Measurement Consumer Certificate Id Ġ= ĊĠĠĠĠĠĠĠ Ġapi Id To External Id ( measurement Consumer Certificate Key . certificate Id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprovided Event GroupId Ġ= Ġevent Group Reference Id ĊĠĠĠ Ġdetails Ġ= ĊĠĠĠĠĠ Ġdetails Ġ{ ĊĠĠĠĠĠĠĠ ĠapiVersion Ġ= ĠAPI _ VERSION . string ĊĠĠĠĠĠĠĠ Ġmeasurement Consumer PublicKey Ġ= Ġthis @ to Internal . measurement Consumer PublicKey . data ĊĠĠĠĠĠĠĠ Ġmeasurement Consumer PublicKey Signature Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġthis @ to Internal . measurement Consumer PublicKey . signature ĊĠĠĠĠĠĠĠ Ġvid Model Lines Ġ+= Ġthis @ to Internal . vid Model Lines List ĊĠĠĠĠĠĠĠ Ġevent Templates . addAll ( ĊĠĠĠĠĠĠĠĠĠ Ġthis @ to Internal . event Templates List . map Ġ{ Ġevent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Event Template Ġ{ Ġfully Qualified Type Ġ= Ġevent . type Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġencrypted Metadata Ġ= Ġthis @ to Internal . encrypted Metadata ĊĠĠĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ Ċ /** ĠConverts Ġa Ġpublic Ġ[ List Event Groups Request ] Ġto Ġan Ġinternal Ġ[ List Event Groups PageToken ]. Ġ*/ Ċ private Ġfun ĠList Event Groups Request . toList Event Group PageToken (): ĠList Event Groups PageToken Ġ{ ĊĠ Ġval Ġsource Ġ= Ġthis ĊĊĠ Ġgrpc Require ( source . pageSize Ġ>= Ġ 0 ) Ġ{ Ġ" Page Ġsize Ġcannot Ġbe Ġless Ġthan Ġ 0 " Ġ} ĊĊĠ Ġval Ġparent Key : ĠData Provider Key Ġ= ĊĠĠĠ Ġgrpc Require NotNull ( DataProvider Key . from Name ( source . parent )) Ġ{ ĊĠĠĠĠĠ Ġ" Parent Ġis Ġeither Ġunspecified Ġor Ġinvalid " ĊĠĠĠ Ġ} ĊĠ Ġ// ĠTODO ( world - fed eration - of - advert is ers / cross - media - measurement # 1 1 9 ): ĠMC Ġcaller Ġcan Ġonly Ġspecify ĊĠ Ġ// Ġtheir Ġown Ġid , Ġbut ĠE DP Ġcaller Ġcan Ġlist ĠEvent Groups Ġfor Ġmultiple ĠM Cs ĊĠ Ġgrpc Require ( ĊĠĠĠ Ġ( source . filter . measurement Consum ers Count Ġ> Ġ 0 Ġ&& Ġparent Key . dataProvider Id Ġ== ĠW IL DC ARD ) Ġ|| ĊĠĠĠĠĠ Ġparent Key . dataProvider Id Ġ!= ĠW IL DC ARD ĊĠ Ġ) Ġ{ Ġ" Either Ġparent Ġdata Ġprovider Ġor Ġmeasurement Ġconsumers Ġfilter Ġmust Ġbe Ġprovided " Ġ} ĊĊĠ Ġvar Ġexternal DataProvider Id Ġ= Ġ 0 L ĊĠ Ġif Ġ( parent Key . dataProvider Id Ġ!= ĠW IL DC ARD ) Ġ{ ĊĠĠĠ Ġexternal DataProvider Id Ġ= Ġapi Id To External Id ( parent Key . dataProvider Id ) ĊĠ Ġ} ĊĊĠ Ġval Ġexternal Measurement Consumer Ids List Ġ= ĊĠĠĠ Ġsource . filter . measurement Consum ers List . map Ġ{ Ġmeasurement Consumer Name Ġ-> ĊĠĠĠĠĠ Ġgrpc Require NotNull ( Measurement Consumer Key . from Name ( measurement Consumer Name )) Ġ{ ĊĠĠĠĠĠĠĠ Ġ" Measurement Ġconsumer Ġname Ġin Ġfilter Ġinvalid " ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ. let Ġ{ Ġkey Ġ-> Ġapi Id To External Id ( key . measurement Consumer Id ) Ġ} ĊĠĠĠ Ġ} ĊĊĠ Ġreturn Ġif Ġ( source . page Token . isNotBlank ()) Ġ{ ĊĠĠĠ ĠList Event Groups PageToken . parseFrom ( source . page Token . base 6 4 Url Decode ()). copy Ġ{ ĊĠĠĠĠĠ Ġgrpc Require ( this . external DataProvider Id Ġ== Ġexternal DataProvider Id ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ" Arguments Ġmust Ġbe Ġkept Ġthe Ġsame Ġwhen Ġusing Ġa Ġpage Ġtoken " ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġgrpc Require ( ĊĠĠĠĠĠĠĠ Ġexternal Measurement Consumer Ids List . contains All ( external Measurement Consumer Ids ) Ġ&& ĊĠĠĠĠĠĠĠĠĠ Ġexternal Measurement Consumer Ids . contains All ( external Measurement Consumer Ids List ) ĊĠĠĠĠĠ Ġ) Ġ{ Ġ" Arguments Ġmust Ġbe Ġkept Ġthe Ġsame Ġwhen Ġusing Ġa Ġpage Ġtoken " Ġ} ĊĊĠĠĠĠĠ Ġif Ġ( source . pageSize Ġ!= Ġ 0 Ġ&& ĊĠĠĠĠĠĠĠĠĠ Ġsource . pageSize Ġ>= ĠMIN _ PAGE _ SIZE Ġ&& ĊĠĠĠĠĠĠĠĠĠ Ġsource . pageSize Ġ<= ĠMAX _ PAGE _ SIZE ĊĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠpageSize Ġ= Ġsource . pageSize ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ġelse Ġ{ ĊĠĠĠ Ġlist Event Groups PageToken Ġ{ ĊĠĠĠĠĠ ĠpageSize Ġ= ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġsource . pageSize Ġ< ĠMIN _ PAGE _ SIZE Ġ-> ĠDEFAULT _ PAGE _ SIZE ĊĠĠĠĠĠĠĠĠĠ Ġsource . pageSize Ġ> ĠMAX _ PAGE _ SIZE Ġ-> ĠMAX _ PAGE _ SIZE ĊĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsource . pageSize ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġthis . external DataProvider Id Ġ= Ġexternal DataProvider Id ĊĠĠĠĠĠ Ġexternal Measurement Consumer Ids Ġ+= Ġexternal Measurement Consumer Ids List ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ Ċ /** ĠConverts Ġan Ġinternal Ġ[ List Event Groups PageToken ] Ġto Ġan Ġinternal Ġ[ Stream Event Groups Request ]. Ġ*/ Ċ private Ġfun ĠList Event Groups PageToken . to Stream Event Groups Request (): ĠStream Event Groups Request Ġ{ ĊĠ Ġval Ġsource Ġ= Ġthis ĊĠ Ġreturn Ġstream Event Groups Request Ġ{ ĊĠĠĠ Ġ// Ġget Ġ 1 Ġmore Ġthan Ġthe Ġactual Ġpage Ġsize Ġfor Ġdec iding Ġwhether Ġor Ġnot Ġto Ġset Ġpage Ġtoken ĊĠĠĠ Ġlimit Ġ= Ġsource . pageSize Ġ+ Ġ 1 ĊĠĠĠ Ġfilter Ġ= ĊĠĠĠĠĠ Ġfilter Ġ{ ĊĠĠĠĠĠĠĠ Ġexternal DataProvider Id Ġ= Ġsource . external DataProvider Id ĊĠĠĠĠĠĠĠ Ġexternal Measurement Consumer Ids Ġ+= Ġsource . external Measurement Consumer Ids List ĊĠĠĠĠĠĠĠ Ġexternal DataProvider Id After Ġ= Ġsource . last Event Group . external DataProvider Id ĊĠĠĠĠĠĠĠ Ġexternal Event GroupId After Ġ= Ġsource . last Event Group . external Event GroupId ĊĠĠĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ