diff options
author | Wim <wim@42.be> | 2022-01-31 00:27:37 +0100 |
---|---|---|
committer | Wim <wim@42.be> | 2022-03-20 14:57:48 +0100 |
commit | e3cafeaf9292f67459ff1d186f68283bfaedf2ae (patch) | |
tree | b69c39620aa91dba695b3b935c6651c0fb37ce75 /vendor/github.com/Rhymen/go-whatsapp | |
parent | e7b193788a56ee7cdb02a87a9db0ad6724ef66d5 (diff) | |
download | matterbridge-msglm-e3cafeaf9292f67459ff1d186f68283bfaedf2ae.tar.gz matterbridge-msglm-e3cafeaf9292f67459ff1d186f68283bfaedf2ae.tar.bz2 matterbridge-msglm-e3cafeaf9292f67459ff1d186f68283bfaedf2ae.zip |
Add dependencies/vendor (whatsapp)
Diffstat (limited to 'vendor/github.com/Rhymen/go-whatsapp')
25 files changed, 0 insertions, 18798 deletions
diff --git a/vendor/github.com/Rhymen/go-whatsapp/.gitignore b/vendor/github.com/Rhymen/go-whatsapp/.gitignore deleted file mode 100644 index b553f0fd..00000000 --- a/vendor/github.com/Rhymen/go-whatsapp/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -.idea/ -docs/ -build/ diff --git a/vendor/github.com/Rhymen/go-whatsapp/LICENSE b/vendor/github.com/Rhymen/go-whatsapp/LICENSE deleted file mode 100644 index b442934b..00000000 --- a/vendor/github.com/Rhymen/go-whatsapp/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2018 - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/vendor/github.com/Rhymen/go-whatsapp/README.md b/vendor/github.com/Rhymen/go-whatsapp/README.md deleted file mode 100644 index ea66f5bb..00000000 --- a/vendor/github.com/Rhymen/go-whatsapp/README.md +++ /dev/null @@ -1,139 +0,0 @@ -# go-whatsapp -Package rhymen/go-whatsapp implements the WhatsApp Web API to provide a clean interface for developers. Big thanks to all contributors of the [sigalor/whatsapp-web-reveng](https://github.com/sigalor/whatsapp-web-reveng) project. The official WhatsApp Business API was released in August 2018. You can check it out [here](https://www.whatsapp.com/business/api). - -## Installation -```sh -go get github.com/Rhymen/go-whatsapp -``` - -## Usage -### Creating a connection -```go -import ( - whatsapp "github.com/Rhymen/go-whatsapp" -) - -wac, err := whatsapp.NewConn(20 * time.Second) -``` -The duration passed to the NewConn function is used to timeout login requests. If you have a bad internet connection use a higher timeout value. This function only creates a websocket connection, it does not handle authentication. - -### Login -```go -qrChan := make(chan string) -go func() { - fmt.Printf("qr code: %v\n", <-qrChan) - //show qr code or save it somewhere to scan -}() -sess, err := wac.Login(qrChan) -``` -The authentication process requires you to scan the qr code, that is send through the channel, with the device you are using whatsapp on. The session struct that is returned can be saved and used to restore the login without scanning the qr code again. The qr code has a ttl of 20 seconds and the login function throws a timeout err if the time has passed or any other request fails. - -### Restore -```go -newSess, err := wac.RestoreWithSession(sess) -``` -The restore function needs a valid session and returns the new session that was created. - -### Add message handlers -```go -type myHandler struct{} - -func (myHandler) HandleError(err error) { - fmt.Fprintf(os.Stderr, "%v", err) -} - -func (myHandler) HandleTextMessage(message whatsapp.TextMessage) { - fmt.Println(message) -} - -func (myHandler) HandleImageMessage(message whatsapp.ImageMessage) { - fmt.Println(message) -} - -func (myHandler) HandleDocumentMessage(message whatsapp.DocumentMessage) { - fmt.Println(message) -} - -func (myHandler) HandleVideoMessage(message whatsapp.VideoMessage) { - fmt.Println(message) -} - -func (myHandler) HandleAudioMessage(message whatsapp.AudioMessage){ - fmt.Println(message) -} - -func (myHandler) HandleJsonMessage(message string) { - fmt.Println(message) -} - -func (myHandler) HandleContactMessage(message whatsapp.ContactMessage) { - fmt.Println(message) -} - -func (myHandler) HandleBatteryMessage(message whatsapp.BatteryMessage) { - fmt.Println(message) -} - -func (myHandler) HandleNewContact(contact whatsapp.Contact) { - fmt.Println(contact) -} - -wac.AddHandler(myHandler{}) -``` -The message handlers are all optional, you don't need to implement anything but the error handler to implement the interface. The ImageMessage, VideoMessage, AudioMessage and DocumentMessage provide a Download function to get the media data. - -### Sending text messages -```go -text := whatsapp.TextMessage{ - Info: whatsapp.MessageInfo{ - RemoteJid: "0123456789@s.whatsapp.net", - }, - Text: "Hello Whatsapp", -} - -err := wac.Send(text) -``` - -### Sending Contact Messages -```go -contactMessage := whatsapp.ContactMessage{ - Info: whatsapp.MessageInfo{ - RemoteJid: "0123456789@s.whatsapp.net", - }, - DisplayName: "Luke Skylwallker", - Vcard: "BEGIN:VCARD\nVERSION:3.0\nN:Skyllwalker;Luke;;\nFN:Luke Skywallker\nitem1.TEL;waid=0123456789:+1 23 456789789\nitem1.X-ABLabel:Mobile\nEND:VCARD", - } - -id, error := client.WaConn.Send(contactMessage) -``` - - -The message will be send over the websocket. The attributes seen above are the required ones. All other relevant attributes (id, timestamp, fromMe, status) are set if they are missing in the struct. For the time being we only support text messages, but other types are planned for the near future. - -## Legal -This code is in no way affiliated with, authorized, maintained, sponsored or endorsed by WhatsApp or any of its -affiliates or subsidiaries. This is an independent and unofficial software. Use at your own risk. - -## License - -The MIT License (MIT) - -Copyright (c) 2018 - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/vendor/github.com/Rhymen/go-whatsapp/binary/decoder.go b/vendor/github.com/Rhymen/go-whatsapp/binary/decoder.go deleted file mode 100644 index 95da606c..00000000 --- a/vendor/github.com/Rhymen/go-whatsapp/binary/decoder.go +++ /dev/null @@ -1,388 +0,0 @@ -package binary - -import ( - "fmt" - "github.com/Rhymen/go-whatsapp/binary/token" - "io" - "strconv" -) - -type binaryDecoder struct { - data []byte - index int -} - -func NewDecoder(data []byte) *binaryDecoder { - return &binaryDecoder{data, 0} -} - -func (r *binaryDecoder) checkEOS(length int) error { - if r.index+length > len(r.data) { - return io.EOF - } - - return nil -} - -func (r *binaryDecoder) readByte() (byte, error) { - if err := r.checkEOS(1); err != nil { - return 0, err - } - - b := r.data[r.index] - r.index++ - - return b, nil -} - -func (r *binaryDecoder) readIntN(n int, littleEndian bool) (int, error) { - if err := r.checkEOS(n); err != nil { - return 0, err - } - - var ret int - - for i := 0; i < n; i++ { - var curShift int - if littleEndian { - curShift = i - } else { - curShift = n - i - 1 - } - ret |= int(r.data[r.index+i]) << uint(curShift*8) - } - - r.index += n - return ret, nil -} - -func (r *binaryDecoder) readInt8(littleEndian bool) (int, error) { - return r.readIntN(1, littleEndian) -} - -func (r *binaryDecoder) readInt16(littleEndian bool) (int, error) { - return r.readIntN(2, littleEndian) -} - -func (r *binaryDecoder) readInt20() (int, error) { - if err := r.checkEOS(3); err != nil { - return 0, err - } - - ret := ((int(r.data[r.index]) & 15) << 16) + (int(r.data[r.index+1]) << 8) + int(r.data[r.index+2]) - r.index += 3 - return ret, nil -} - -func (r *binaryDecoder) readInt32(littleEndian bool) (int, error) { - return r.readIntN(4, littleEndian) -} - -func (r *binaryDecoder) readInt64(littleEndian bool) (int, error) { - return r.readIntN(8, littleEndian) -} - -func (r *binaryDecoder) readPacked8(tag int) (string, error) { - startByte, err := r.readByte() - if err != nil { - return "", err - } - - ret := "" - - for i := 0; i < int(startByte&127); i++ { - currByte, err := r.readByte() - if err != nil { - return "", err - } - - lower, err := unpackByte(tag, currByte&0xF0>>4) - if err != nil { - return "", err - } - - upper, err := unpackByte(tag, currByte&0x0F) - if err != nil { - return "", err - } - - ret += lower + upper - } - - if startByte>>7 != 0 { - ret = ret[:len(ret)-1] - } - return ret, nil -} - -func unpackByte(tag int, value byte) (string, error) { - switch tag { - case token.NIBBLE_8: - return unpackNibble(value) - case token.HEX_8: - return unpackHex(value) - default: - return "", fmt.Errorf("unpackByte with unknown tag %d", tag) - } -} - -func unpackNibble(value byte) (string, error) { - switch { - case value < 0 || value > 15: - return "", fmt.Errorf("unpackNibble with value %d", value) - case value == 10: - return "-", nil - case value == 11: - return ".", nil - case value == 15: - return "\x00", nil - default: - return strconv.Itoa(int(value)), nil - } -} - -func unpackHex(value byte) (string, error) { - switch { - case value < 0 || value > 15: - return "", fmt.Errorf("unpackHex with value %d", value) - case value < 10: - return strconv.Itoa(int(value)), nil - default: - return string('A' + value - 10), nil - } -} - -func (r *binaryDecoder) readListSize(tag int) (int, error) { - switch tag { - case token.LIST_EMPTY: - return 0, nil - case token.LIST_8: - return r.readInt8(false) - case token.LIST_16: - return r.readInt16(false) - default: - return 0, fmt.Errorf("readListSize with unknown tag %d at position %d", tag, r.index) - } -} - -func (r *binaryDecoder) readString(tag int) (string, error) { - switch { - case tag >= 3 && tag <= len(token.SingleByteTokens): - tok, err := token.GetSingleToken(tag) - if err != nil { - return "", err - } - - if tok == "s.whatsapp.net" { - tok = "c.us" - } - - return tok, nil - case tag == token.DICTIONARY_0 || tag == token.DICTIONARY_1 || tag == token.DICTIONARY_2 || tag == token.DICTIONARY_3: - i, err := r.readInt8(false) - if err != nil { - return "", err - } - - return token.GetDoubleToken(tag-token.DICTIONARY_0, i) - case tag == token.LIST_EMPTY: - return "", nil - case tag == token.BINARY_8: - length, err := r.readInt8(false) - if err != nil { - return "", err - } - - return r.readStringFromChars(length) - case tag == token.BINARY_20: - length, err := r.readInt20() - if err != nil { - return "", err - } - - return r.readStringFromChars(length) - case tag == token.BINARY_32: - length, err := r.readInt32(false) - if err != nil { - return "", err - } - - return r.readStringFromChars(length) - case tag == token.JID_PAIR: - b, err := r.readByte() - if err != nil { - return "", err - } - i, err := r.readString(int(b)) - if err != nil { - return "", err - } - - b, err = r.readByte() - if err != nil { - return "", err - } - j, err := r.readString(int(b)) - if err != nil { - return "", err - } - - if i == "" || j == "" { - return "", fmt.Errorf("invalid jid pair: %s - %s", i, j) - } - - return i + "@" + j, nil - case tag == token.NIBBLE_8 || tag == token.HEX_8: - return r.readPacked8(tag) - default: - return "", fmt.Errorf("invalid string with tag %d", tag) - } -} - -func (r *binaryDecoder) readStringFromChars(length int) (string, error) { - if err := r.checkEOS(length); err != nil { - return "", err - } - - ret := r.data[r.index : r.index+length] - r.index += length - - return string(ret), nil -} - -func (r *binaryDecoder) readAttributes(n int) (map[string]string, error) { - if n == 0 { - return nil, nil - } - - ret := make(map[string]string) - for i := 0; i < n; i++ { - idx, err := r.readInt8(false) - if err != nil { - return nil, err - } - - index, err := r.readString(idx) - if err != nil { - return nil, err - } - - idx, err = r.readInt8(false) - if err != nil { - return nil, err - } - - ret[index], err = r.readString(idx) - if err != nil { - return nil, err - } - } - - return ret, nil -} - -func (r *binaryDecoder) readList(tag int) ([]Node, error) { - size, err := r.readListSize(tag) - if err != nil { - return nil, err - } - - ret := make([]Node, size) - for i := 0; i < size; i++ { - n, err := r.ReadNode() - - if err != nil { - return nil, err - } - - ret[i] = *n - } - - return ret, nil -} - -func (r *binaryDecoder) ReadNode() (*Node, error) { - ret := &Node{} - - size, err := r.readInt8(false) - if err != nil { - return nil, err - } - listSize, err := r.readListSize(size) - if err != nil { - return nil, err - } - - descrTag, err := r.readInt8(false) - if descrTag == token.STREAM_END { - return nil, fmt.Errorf("unexpected stream end") - } - ret.Description, err = r.readString(descrTag) - if err != nil { - return nil, err - } - if listSize == 0 || ret.Description == "" { - return nil, fmt.Errorf("invalid Node") - } - - ret.Attributes, err = r.readAttributes((listSize - 1) >> 1) - if err != nil { - return nil, err - } - - if listSize%2 == 1 { - return ret, nil - } - - tag, err := r.readInt8(false) - if err != nil { - return nil, err - } - - switch tag { - case token.LIST_EMPTY, token.LIST_8, token.LIST_16: - ret.Content, err = r.readList(tag) - case token.BINARY_8: - size, err = r.readInt8(false) - if err != nil { - return nil, err - } - - ret.Content, err = r.readBytes(size) - case token.BINARY_20: - size, err = r.readInt20() - if err != nil { - return nil, err - } - - ret.Content, err = r.readBytes(size) - case token.BINARY_32: - size, err = r.readInt32(false) - if err != nil { - return nil, err - } - - ret.Content, err = r.readBytes(size) - default: - ret.Content, err = r.readString(tag) - } - - if err != nil { - return nil, err - } - return ret, nil -} - -func (r *binaryDecoder) readBytes(n int) ([]byte, error) { - ret := make([]byte, n) - var err error - - for i := range ret { - ret[i], err = r.readByte() - if err != nil { - return nil, err - } - } - - return ret, nil -} diff --git a/vendor/github.com/Rhymen/go-whatsapp/binary/encoder.go b/vendor/github.com/Rhymen/go-whatsapp/binary/encoder.go deleted file mode 100644 index 59003e7a..00000000 --- a/vendor/github.com/Rhymen/go-whatsapp/binary/encoder.go +++ /dev/null @@ -1,351 +0,0 @@ -package binary - -import ( - "fmt" - "github.com/Rhymen/go-whatsapp/binary/token" - "math" - "strconv" - "strings" -) - -type binaryEncoder struct { - data []byte -} - -func NewEncoder() *binaryEncoder { - return &binaryEncoder{make([]byte, 0)} -} - -func (w *binaryEncoder) GetData() []byte { - return w.data -} - -func (w *binaryEncoder) pushByte(b byte) { - w.data = append(w.data, b) -} - -func (w *binaryEncoder) pushBytes(bytes []byte) { - w.data = append(w.data, bytes...) -} - -func (w *binaryEncoder) pushIntN(value, n int, littleEndian bool) { - for i := 0; i < n; i++ { - var curShift int - if littleEndian { - curShift = i - } else { - curShift = n - i - 1 - } - w.pushByte(byte((value >> uint(curShift*8)) & 0xFF)) - } -} - -func (w *binaryEncoder) pushInt20(value int) { - w.pushBytes([]byte{byte((value >> 16) & 0x0F), byte((value >> 8) & 0xFF), byte(value & 0xFF)}) -} - -func (w *binaryEncoder) pushInt8(value int) { - w.pushIntN(value, 1, false) -} - -func (w *binaryEncoder) pushInt16(value int) { - w.pushIntN(value, 2, false) -} - -func (w *binaryEncoder) pushInt32(value int) { - w.pushIntN(value, 4, false) -} - -func (w *binaryEncoder) pushInt64(value int) { - w.pushIntN(value, 8, false) -} - -func (w *binaryEncoder) pushString(value string) { - w.pushBytes([]byte(value)) -} - -func (w *binaryEncoder) writeByteLength(length int) error { - if length > math.MaxInt32 { - return fmt.Errorf("length is too large: %d", length) - } else if length >= (1 << 20) { - w.pushByte(token.BINARY_32) - w.pushInt32(length) - } else if length >= 256 { - w.pushByte(token.BINARY_20) - w.pushInt20(length) - } else { - w.pushByte(token.BINARY_8) - w.pushInt8(length) - } - - return nil -} - -func (w *binaryEncoder) WriteNode(n Node) error { - numAttributes := 0 - if n.Attributes != nil { - numAttributes = len(n.Attributes) - } - - hasContent := 0 - if n.Content != nil { - hasContent = 1 - } - - w.writeListStart(2*numAttributes + 1 + hasContent) - if err := w.writeString(n.Description, false); err != nil { - return err - } - - if err := w.writeAttributes(n.Attributes); err != nil { - return err - } - - if err := w.writeChildren(n.Content); err != nil { - return err - } - - return nil -} - -func (w *binaryEncoder) writeString(tok string, i bool) error { - if !i && tok == "c.us" { - if err := w.writeToken(token.IndexOfSingleToken("s.whatsapp.net")); err != nil { - return err - } - return nil - } - - tokenIndex := token.IndexOfSingleToken(tok) - if tokenIndex == -1 { - jidSepIndex := strings.Index(tok, "@") - if jidSepIndex < 1 { - w.writeStringRaw(tok) - } else { - w.writeJid(tok[:jidSepIndex], tok[jidSepIndex+1:]) - } - } else { - if tokenIndex < token.SINGLE_BYTE_MAX { - if err := w.writeToken(tokenIndex); err != nil { - return err - } - } else { - singleByteOverflow := tokenIndex - token.SINGLE_BYTE_MAX - dictionaryIndex := singleByteOverflow >> 8 - if dictionaryIndex < 0 || dictionaryIndex > 3 { - return fmt.Errorf("double byte dictionary token out of range: %v", tok) - } - if err := w.writeToken(token.DICTIONARY_0 + dictionaryIndex); err != nil { - return err - } - if err := w.writeToken(singleByteOverflow % 256); err != nil { - return err - } - } - } - - return nil -} - -func (w *binaryEncoder) writeStringRaw(value string) error { - if err := w.writeByteLength(len(value)); err != nil { - return err - } - - w.pushString(value) - - return nil -} - -func (w *binaryEncoder) writeJid(jidLeft, jidRight string) error { - w.pushByte(token.JID_PAIR) - - if jidLeft != "" { - if err := w.writePackedBytes(jidLeft); err != nil { - return err - } - } else { - if err := w.writeToken(token.LIST_EMPTY); err != nil { - return err - } - } - - if err := w.writeString(jidRight, false); err != nil { - return err - } - - return nil -} - -func (w *binaryEncoder) writeToken(tok int) error { - if tok < len(token.SingleByteTokens) { - w.pushByte(byte(tok)) - } else if tok <= 500 { - return fmt.Errorf("invalid token: %d", tok) - } - - return nil -} - -func (w *binaryEncoder) writeAttributes(attributes map[string]string) error { - if attributes == nil { - return nil - } - - for key, val := range attributes { - if val == "" { - continue - } - - if err := w.writeString(key, false); err != nil { - return err - } - - if err := w.writeString(val, false); err != nil { - return err - } - } - - return nil -} - -func (w *binaryEncoder) writeChildren(children interface{}) error { - if children == nil { - return nil - } - - switch childs := children.(type) { - case string: - if err := w.writeString(childs, true); err != nil { - return err - } - case []byte: - if err := w.writeByteLength(len(childs)); err != nil { - return err - } - - w.pushBytes(childs) - case []Node: - w.writeListStart(len(childs)) - for _, n := range childs { - if err := w.WriteNode(n); err != nil { - return err - } - } - default: - return fmt.Errorf("cannot write child of type: %T", children) - } - - return nil -} - -func (w *binaryEncoder) writeListStart(listSize int) { - if listSize == 0 { - w.pushByte(byte(token.LIST_EMPTY)) - } else if listSize < 256 { - w.pushByte(byte(token.LIST_8)) - w.pushInt8(listSize) - } else { - w.pushByte(byte(token.LIST_16)) - w.pushInt16(listSize) - } -} - -func (w *binaryEncoder) writePackedBytes(value string) error { - if err := w.writePackedBytesImpl(value, token.NIBBLE_8); err != nil { - if err := w.writePackedBytesImpl(value, token.HEX_8); err != nil { - return err - } - } - - return nil -} - -func (w *binaryEncoder) writePackedBytesImpl(value string, dataType int) error { - numBytes := len(value) - if numBytes > token.PACKED_MAX { - return fmt.Errorf("too many bytes to pack: %d", numBytes) - } - - w.pushByte(byte(dataType)) - - x := 0 - if numBytes%2 != 0 { - x = 128 - } - w.pushByte(byte(x | int(math.Ceil(float64(numBytes)/2.0)))) - for i, l := 0, numBytes/2; i < l; i++ { - b, err := w.packBytePair(dataType, value[2*i:2*i+1], value[2*i+1:2*i+2]) - if err != nil { - return err - } - - w.pushByte(byte(b)) - } - - if (numBytes % 2) != 0 { - b, err := w.packBytePair(dataType, value[numBytes-1:], "\x00") - if err != nil { - return err - } - - w.pushByte(byte(b)) - } - - return nil -} - -func (w *binaryEncoder) packBytePair(packType int, part1, part2 string) (int, error) { - if packType == token.NIBBLE_8 { - n1, err := packNibble(part1) - if err != nil { - return 0, err - } - - n2, err := packNibble(part2) - if err != nil { - return 0, err - } - - return (n1 << 4) | n2, nil - } else if packType == token.HEX_8 { - n1, err := packHex(part1) - if err != nil { - return 0, err - } - - n2, err := packHex(part2) - if err != nil { - return 0, err - } - - return (n1 << 4) | n2, nil - } else { - return 0, fmt.Errorf("invalid pack type (%d) for byte pair: %s / %s", packType, part1, part2) - } -} - -func packNibble(value string) (int, error) { - if value >= "0" && value <= "9" { - return strconv.Atoi(value) - } else if value == "-" { - return 10, nil - } else if value == "." { - return 11, nil - } else if value == "\x00" { - return 15, nil - } - - return 0, fmt.Errorf("invalid string to pack as nibble: %v", value) -} - -func packHex(value string) (int, error) { - if (value >= "0" && value <= "9") || (value >= "A" && value <= "F") || (value >= "a" && value <= "f") { - d, err := strconv.ParseInt(value, 16, 0) - return int(d), err - } else if value == "\x00" { - return 15, nil - } - - return 0, fmt.Errorf("invalid string to pack as hex: %v", value) -} diff --git a/vendor/github.com/Rhymen/go-whatsapp/binary/node.go b/vendor/github.com/Rhymen/go-whatsapp/binary/node.go deleted file mode 100644 index 66b28d88..00000000 --- a/vendor/github.com/Rhymen/go-whatsapp/binary/node.go +++ /dev/null @@ -1,106 +0,0 @@ -package binary - -import ( - "fmt" - pb "github.com/Rhymen/go-whatsapp/binary/proto" - "github.com/golang/protobuf/proto" -) - -type Node struct { - Description string - Attributes map[string]string - Content interface{} -} - -func Marshal(n Node) ([]byte, error) { - if n.Attributes != nil && n.Content != nil { - a, err := marshalMessageArray(n.Content.([]interface{})) - if err != nil { - return nil, err - } - n.Content = a - } - - w := NewEncoder() - if err := w.WriteNode(n); err != nil { - return nil, err - } - - return w.GetData(), nil -} - -func marshalMessageArray(messages []interface{}) ([]Node, error) { - ret := make([]Node, len(messages)) - - for i, m := range messages { - if wmi, ok := m.(*pb.WebMessageInfo); ok { - b, err := marshalWebMessageInfo(wmi) - if err != nil { - return nil, nil - } - ret[i] = Node{"message", nil, b} - } else { - ret[i], ok = m.(Node) - if !ok { - return nil, fmt.Errorf("invalid Node") - } - } - } - - return ret, nil -} - -func marshalWebMessageInfo(p *pb.WebMessageInfo) ([]byte, error) { - b, err := proto.Marshal(p) - if err != nil { - return nil, err - } - return b, nil -} - -func Unmarshal(data []byte) (*Node, error) { - r := NewDecoder(data) - n, err := r.ReadNode() - if err != nil { - return nil, err - } - - if n != nil && n.Attributes != nil && n.Content != nil { - nContent, ok := n.Content.([]Node) - if ok { - n.Content, err = unmarshalMessageArray(nContent) - if err != nil { - return nil, err - } - } - } - - return n, nil -} - -func unmarshalMessageArray(messages []Node) ([]interface{}, error) { - ret := make([]interface{}, len(messages)) - - for i, msg := range messages { - if msg.Description == "message" { - info, err := unmarshalWebMessageInfo(msg.Content.([]byte)) - if err != nil { - return nil, err - } - ret[i] = info - } else { - ret[i] = msg - } - } - - return ret, nil -} - -func unmarshalWebMessageInfo(msg []byte) (*pb.WebMessageInfo, error) { - message := &pb.WebMessageInfo{} - err := proto.Unmarshal(msg, message) - if err != nil { - return nil, err - } - return message, nil -} diff --git a/vendor/github.com/Rhymen/go-whatsapp/binary/proto/def.pb.go b/vendor/github.com/Rhymen/go-whatsapp/binary/proto/def.pb.go deleted file mode 100644 index 2e473b73..00000000 --- a/vendor/github.com/Rhymen/go-whatsapp/binary/proto/def.pb.go +++ /dev/null @@ -1,12807 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.25.0-devel -// protoc v3.12.3 -// source: def.proto - -package proto - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -type AdReplyInfo_AdReplyInfoMediaType int32 - -const ( - AdReplyInfo_NONE AdReplyInfo_AdReplyInfoMediaType = 0 - AdReplyInfo_IMAGE AdReplyInfo_AdReplyInfoMediaType = 1 - AdReplyInfo_VIDEO AdReplyInfo_AdReplyInfoMediaType = 2 -) - -// Enum value maps for AdReplyInfo_AdReplyInfoMediaType. -var ( - AdReplyInfo_AdReplyInfoMediaType_name = map[int32]string{ - 0: "NONE", - 1: "IMAGE", - 2: "VIDEO", - } - AdReplyInfo_AdReplyInfoMediaType_value = map[string]int32{ - "NONE": 0, - "IMAGE": 1, - "VIDEO": 2, - } -) - -func (x AdReplyInfo_AdReplyInfoMediaType) Enum() *AdReplyInfo_AdReplyInfoMediaType { - p := new(AdReplyInfo_AdReplyInfoMediaType) - *p = x - return p -} - -func (x AdReplyInfo_AdReplyInfoMediaType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (AdReplyInfo_AdReplyInfoMediaType) Descriptor() protoreflect.EnumDescriptor { - return file_def_proto_enumTypes[0].Descriptor() -} - -func (AdReplyInfo_AdReplyInfoMediaType) Type() protoreflect.EnumType { - return &file_def_proto_enumTypes[0] -} - -func (x AdReplyInfo_AdReplyInfoMediaType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Do not use. -func (x *AdReplyInfo_AdReplyInfoMediaType) UnmarshalJSON(b []byte) error { - num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) - if err != nil { - return err - } - *x = AdReplyInfo_AdReplyInfoMediaType(num) - return nil -} - -// Deprecated: Use AdReplyInfo_AdReplyInfoMediaType.Descriptor instead. -func (AdReplyInfo_AdReplyInfoMediaType) EnumDescriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{14, 0} -} - -type ExternalAdReplyInfo_ExternalAdReplyInfoMediaType int32 - -const ( - ExternalAdReplyInfo_NONE ExternalAdReplyInfo_ExternalAdReplyInfoMediaType = 0 - ExternalAdReplyInfo_IMAGE ExternalAdReplyInfo_ExternalAdReplyInfoMediaType = 1 - ExternalAdReplyInfo_VIDEO ExternalAdReplyInfo_ExternalAdReplyInfoMediaType = 2 -) - -// Enum value maps for ExternalAdReplyInfo_ExternalAdReplyInfoMediaType. -var ( - ExternalAdReplyInfo_ExternalAdReplyInfoMediaType_name = map[int32]string{ - 0: "NONE", - 1: "IMAGE", - 2: "VIDEO", - } - ExternalAdReplyInfo_ExternalAdReplyInfoMediaType_value = map[string]int32{ - "NONE": 0, - "IMAGE": 1, - "VIDEO": 2, - } -) - -func (x ExternalAdReplyInfo_ExternalAdReplyInfoMediaType) Enum() *ExternalAdReplyInfo_ExternalAdReplyInfoMediaType { - p := new(ExternalAdReplyInfo_ExternalAdReplyInfoMediaType) - *p = x - return p -} - -func (x ExternalAdReplyInfo_ExternalAdReplyInfoMediaType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (ExternalAdReplyInfo_ExternalAdReplyInfoMediaType) Descriptor() protoreflect.EnumDescriptor { - return file_def_proto_enumTypes[1].Descriptor() -} - -func (ExternalAdReplyInfo_ExternalAdReplyInfoMediaType) Type() protoreflect.EnumType { - return &file_def_proto_enumTypes[1] -} - -func (x ExternalAdReplyInfo_ExternalAdReplyInfoMediaType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Do not use. -func (x *ExternalAdReplyInfo_ExternalAdReplyInfoMediaType) UnmarshalJSON(b []byte) error { - num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) - if err != nil { - return err - } - *x = ExternalAdReplyInfo_ExternalAdReplyInfoMediaType(num) - return nil -} - -// Deprecated: Use ExternalAdReplyInfo_ExternalAdReplyInfoMediaType.Descriptor instead. -func (ExternalAdReplyInfo_ExternalAdReplyInfoMediaType) EnumDescriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{15, 0} -} - -type InvoiceMessage_InvoiceMessageAttachmentType int32 - -const ( - InvoiceMessage_IMAGE InvoiceMessage_InvoiceMessageAttachmentType = 0 - InvoiceMessage_PDF InvoiceMessage_InvoiceMessageAttachmentType = 1 -) - -// Enum value maps for InvoiceMessage_InvoiceMessageAttachmentType. -var ( - InvoiceMessage_InvoiceMessageAttachmentType_name = map[int32]string{ - 0: "IMAGE", - 1: "PDF", - } - InvoiceMessage_InvoiceMessageAttachmentType_value = map[string]int32{ - "IMAGE": 0, - "PDF": 1, - } -) - -func (x InvoiceMessage_InvoiceMessageAttachmentType) Enum() *InvoiceMessage_InvoiceMessageAttachmentType { - p := new(InvoiceMessage_InvoiceMessageAttachmentType) - *p = x - return p -} - -func (x InvoiceMessage_InvoiceMessageAttachmentType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (InvoiceMessage_InvoiceMessageAttachmentType) Descriptor() protoreflect.EnumDescriptor { - return file_def_proto_enumTypes[2].Descriptor() -} - -func (InvoiceMessage_InvoiceMessageAttachmentType) Type() protoreflect.EnumType { - return &file_def_proto_enumTypes[2] -} - -func (x InvoiceMessage_InvoiceMessageAttachmentType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Do not use. -func (x *InvoiceMessage_InvoiceMessageAttachmentType) UnmarshalJSON(b []byte) error { - num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) - if err != nil { - return err - } - *x = InvoiceMessage_InvoiceMessageAttachmentType(num) - return nil -} - -// Deprecated: Use InvoiceMessage_InvoiceMessageAttachmentType.Descriptor instead. -func (InvoiceMessage_InvoiceMessageAttachmentType) EnumDescriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{19, 0} -} - -type ExtendedTextMessage_ExtendedTextMessageFontType int32 - -const ( - ExtendedTextMessage_SANS_SERIF ExtendedTextMessage_ExtendedTextMessageFontType = 0 - ExtendedTextMessage_SERIF ExtendedTextMessage_ExtendedTextMessageFontType = 1 - ExtendedTextMessage_NORICAN_REGULAR ExtendedTextMessage_ExtendedTextMessageFontType = 2 - ExtendedTextMessage_BRYNDAN_WRITE ExtendedTextMessage_ExtendedTextMessageFontType = 3 - ExtendedTextMessage_BEBASNEUE_REGULAR ExtendedTextMessage_ExtendedTextMessageFontType = 4 - ExtendedTextMessage_OSWALD_HEAVY ExtendedTextMessage_ExtendedTextMessageFontType = 5 -) - -// Enum value maps for ExtendedTextMessage_ExtendedTextMessageFontType. -var ( - ExtendedTextMessage_ExtendedTextMessageFontType_name = map[int32]string{ - 0: "SANS_SERIF", - 1: "SERIF", - 2: "NORICAN_REGULAR", - 3: "BRYNDAN_WRITE", - 4: "BEBASNEUE_REGULAR", - 5: "OSWALD_HEAVY", - } - ExtendedTextMessage_ExtendedTextMessageFontType_value = map[string]int32{ - "SANS_SERIF": 0, - "SERIF": 1, - "NORICAN_REGULAR": 2, - "BRYNDAN_WRITE": 3, - "BEBASNEUE_REGULAR": 4, - "OSWALD_HEAVY": 5, - } -) - -func (x ExtendedTextMessage_ExtendedTextMessageFontType) Enum() *ExtendedTextMessage_ExtendedTextMessageFontType { - p := new(ExtendedTextMessage_ExtendedTextMessageFontType) - *p = x - return p -} - -func (x ExtendedTextMessage_ExtendedTextMessageFontType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (ExtendedTextMessage_ExtendedTextMessageFontType) Descriptor() protoreflect.EnumDescriptor { - return file_def_proto_enumTypes[3].Descriptor() -} - -func (ExtendedTextMessage_ExtendedTextMessageFontType) Type() protoreflect.EnumType { - return &file_def_proto_enumTypes[3] -} - -func (x ExtendedTextMessage_ExtendedTextMessageFontType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Do not use. -func (x *ExtendedTextMessage_ExtendedTextMessageFontType) UnmarshalJSON(b []byte) error { - num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) - if err != nil { - return err - } - *x = ExtendedTextMessage_ExtendedTextMessageFontType(num) - return nil -} - -// Deprecated: Use ExtendedTextMessage_ExtendedTextMessageFontType.Descriptor instead. -func (ExtendedTextMessage_ExtendedTextMessageFontType) EnumDescriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{22, 0} -} - -type ExtendedTextMessage_ExtendedTextMessagePreviewType int32 - -const ( - ExtendedTextMessage_NONE ExtendedTextMessage_ExtendedTextMessagePreviewType = 0 - ExtendedTextMessage_VIDEO ExtendedTextMessage_ExtendedTextMessagePreviewType = 1 -) - -// Enum value maps for ExtendedTextMessage_ExtendedTextMessagePreviewType. -var ( - ExtendedTextMessage_ExtendedTextMessagePreviewType_name = map[int32]string{ - 0: "NONE", - 1: "VIDEO", - } - ExtendedTextMessage_ExtendedTextMessagePreviewType_value = map[string]int32{ - "NONE": 0, - "VIDEO": 1, - } -) - -func (x ExtendedTextMessage_ExtendedTextMessagePreviewType) Enum() *ExtendedTextMessage_ExtendedTextMessagePreviewType { - p := new(ExtendedTextMessage_ExtendedTextMessagePreviewType) - *p = x - return p -} - -func (x ExtendedTextMessage_ExtendedTextMessagePreviewType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (ExtendedTextMessage_ExtendedTextMessagePreviewType) Descriptor() protoreflect.EnumDescriptor { - return file_def_proto_enumTypes[4].Descriptor() -} - -func (ExtendedTextMessage_ExtendedTextMessagePreviewType) Type() protoreflect.EnumType { - return &file_def_proto_enumTypes[4] -} - -func (x ExtendedTextMessage_ExtendedTextMessagePreviewType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Do not use. -func (x *ExtendedTextMessage_ExtendedTextMessagePreviewType) UnmarshalJSON(b []byte) error { - num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) - if err != nil { - return err - } - *x = ExtendedTextMessage_ExtendedTextMessagePreviewType(num) - return nil -} - -// Deprecated: Use ExtendedTextMessage_ExtendedTextMessagePreviewType.Descriptor instead. -func (ExtendedTextMessage_ExtendedTextMessagePreviewType) EnumDescriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{22, 1} -} - -type VideoMessage_VideoMessageAttribution int32 - -const ( - VideoMessage_NONE VideoMessage_VideoMessageAttribution = 0 - VideoMessage_GIPHY VideoMessage_VideoMessageAttribution = 1 - VideoMessage_TENOR VideoMessage_VideoMessageAttribution = 2 -) - -// Enum value maps for VideoMessage_VideoMessageAttribution. -var ( - VideoMessage_VideoMessageAttribution_name = map[int32]string{ - 0: "NONE", - 1: "GIPHY", - 2: "TENOR", - } - VideoMessage_VideoMessageAttribution_value = map[string]int32{ - "NONE": 0, - "GIPHY": 1, - "TENOR": 2, - } -) - -func (x VideoMessage_VideoMessageAttribution) Enum() *VideoMessage_VideoMessageAttribution { - p := new(VideoMessage_VideoMessageAttribution) - *p = x - return p -} - -func (x VideoMessage_VideoMessageAttribution) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (VideoMessage_VideoMessageAttribution) Descriptor() protoreflect.EnumDescriptor { - return file_def_proto_enumTypes[5].Descriptor() -} - -func (VideoMessage_VideoMessageAttribution) Type() protoreflect.EnumType { - return &file_def_proto_enumTypes[5] -} - -func (x VideoMessage_VideoMessageAttribution) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Do not use. -func (x *VideoMessage_VideoMessageAttribution) UnmarshalJSON(b []byte) error { - num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) - if err != nil { - return err - } - *x = VideoMessage_VideoMessageAttribution(num) - return nil -} - -// Deprecated: Use VideoMessage_VideoMessageAttribution.Descriptor instead. -func (VideoMessage_VideoMessageAttribution) EnumDescriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{25, 0} -} - -type ProtocolMessage_ProtocolMessageType int32 - -const ( - ProtocolMessage_REVOKE ProtocolMessage_ProtocolMessageType = 0 - ProtocolMessage_EPHEMERAL_SETTING ProtocolMessage_ProtocolMessageType = 3 - ProtocolMessage_EPHEMERAL_SYNC_RESPONSE ProtocolMessage_ProtocolMessageType = 4 - ProtocolMessage_HISTORY_SYNC_NOTIFICATION ProtocolMessage_ProtocolMessageType = 5 - ProtocolMessage_APP_STATE_SYNC_KEY_SHARE ProtocolMessage_ProtocolMessageType = 6 - ProtocolMessage_APP_STATE_SYNC_KEY_REQUEST ProtocolMessage_ProtocolMessageType = 7 - ProtocolMessage_MSG_FANOUT_BACKFILL_REQUEST ProtocolMessage_ProtocolMessageType = 8 - ProtocolMessage_INITIAL_SECURITY_NOTIFICATION_SETTING_SYNC ProtocolMessage_ProtocolMessageType = 9 - ProtocolMessage_APP_STATE_FATAL_EXCEPTION_NOTIFICATION ProtocolMessage_ProtocolMessageType = 10 -) - -// Enum value maps for ProtocolMessage_ProtocolMessageType. -var ( - ProtocolMessage_ProtocolMessageType_name = map[int32]string{ - 0: "REVOKE", - 3: "EPHEMERAL_SETTING", - 4: "EPHEMERAL_SYNC_RESPONSE", - 5: "HISTORY_SYNC_NOTIFICATION", - 6: "APP_STATE_SYNC_KEY_SHARE", - 7: "APP_STATE_SYNC_KEY_REQUEST", - 8: "MSG_FANOUT_BACKFILL_REQUEST", - 9: "INITIAL_SECURITY_NOTIFICATION_SETTING_SYNC", - 10: "APP_STATE_FATAL_EXCEPTION_NOTIFICATION", - } - ProtocolMessage_ProtocolMessageType_value = map[string]int32{ - "REVOKE": 0, - "EPHEMERAL_SETTING": 3, - "EPHEMERAL_SYNC_RESPONSE": 4, - "HISTORY_SYNC_NOTIFICATION": 5, - "APP_STATE_SYNC_KEY_SHARE": 6, - "APP_STATE_SYNC_KEY_REQUEST": 7, - "MSG_FANOUT_BACKFILL_REQUEST": 8, - "INITIAL_SECURITY_NOTIFICATION_SETTING_SYNC": 9, - "APP_STATE_FATAL_EXCEPTION_NOTIFICATION": 10, - } -) - -func (x ProtocolMessage_ProtocolMessageType) Enum() *ProtocolMessage_ProtocolMessageType { - p := new(ProtocolMessage_ProtocolMessageType) - *p = x - return p -} - -func (x ProtocolMessage_ProtocolMessageType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (ProtocolMessage_ProtocolMessageType) Descriptor() protoreflect.EnumDescriptor { - return file_def_proto_enumTypes[6].Descriptor() -} - -func (ProtocolMessage_ProtocolMessageType) Type() protoreflect.EnumType { - return &file_def_proto_enumTypes[6] -} - -func (x ProtocolMessage_ProtocolMessageType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Do not use. -func (x *ProtocolMessage_ProtocolMessageType) UnmarshalJSON(b []byte) error { - num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) - if err != nil { - return err - } - *x = ProtocolMessage_ProtocolMessageType(num) - return nil -} - -// Deprecated: Use ProtocolMessage_ProtocolMessageType.Descriptor instead. -func (ProtocolMessage_ProtocolMessageType) EnumDescriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{28, 0} -} - -type HistorySyncNotification_HistorySyncNotificationHistorySyncType int32 - -const ( - HistorySyncNotification_INITIAL_BOOTSTRAP HistorySyncNotification_HistorySyncNotificationHistorySyncType = 0 - HistorySyncNotification_INITIAL_STATUS_V3 HistorySyncNotification_HistorySyncNotificationHistorySyncType = 1 - HistorySyncNotification_FULL HistorySyncNotification_HistorySyncNotificationHistorySyncType = 2 - HistorySyncNotification_RECENT HistorySyncNotification_HistorySyncNotificationHistorySyncType = 3 - HistorySyncNotification_PUSH_NAME HistorySyncNotification_HistorySyncNotificationHistorySyncType = 4 -) - -// Enum value maps for HistorySyncNotification_HistorySyncNotificationHistorySyncType. -var ( - HistorySyncNotification_HistorySyncNotificationHistorySyncType_name = map[int32]string{ - 0: "INITIAL_BOOTSTRAP", - 1: "INITIAL_STATUS_V3", - 2: "FULL", - 3: "RECENT", - 4: "PUSH_NAME", - } - HistorySyncNotification_HistorySyncNotificationHistorySyncType_value = map[string]int32{ - "INITIAL_BOOTSTRAP": 0, - "INITIAL_STATUS_V3": 1, - "FULL": 2, - "RECENT": 3, - "PUSH_NAME": 4, - } -) - -func (x HistorySyncNotification_HistorySyncNotificationHistorySyncType) Enum() *HistorySyncNotification_HistorySyncNotificationHistorySyncType { - p := new(HistorySyncNotification_HistorySyncNotificationHistorySyncType) - *p = x - return p -} - -func (x HistorySyncNotification_HistorySyncNotificationHistorySyncType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (HistorySyncNotification_HistorySyncNotificationHistorySyncType) Descriptor() protoreflect.EnumDescriptor { - return file_def_proto_enumTypes[7].Descriptor() -} - -func (HistorySyncNotification_HistorySyncNotificationHistorySyncType) Type() protoreflect.EnumType { - return &file_def_proto_enumTypes[7] -} - -func (x HistorySyncNotification_HistorySyncNotificationHistorySyncType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Do not use. -func (x *HistorySyncNotification_HistorySyncNotificationHistorySyncType) UnmarshalJSON(b []byte) error { - num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) - if err != nil { - return err - } - *x = HistorySyncNotification_HistorySyncNotificationHistorySyncType(num) - return nil -} - -// Deprecated: Use HistorySyncNotification_HistorySyncNotificationHistorySyncType.Descriptor instead. -func (HistorySyncNotification_HistorySyncNotificationHistorySyncType) EnumDescriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{29, 0} -} - -type HSMDateTimeComponent_HSMDateTimeComponentDayOfWeekType int32 - -const ( - HSMDateTimeComponent_MONDAY HSMDateTimeComponent_HSMDateTimeComponentDayOfWeekType = 1 - HSMDateTimeComponent_TUESDAY HSMDateTimeComponent_HSMDateTimeComponentDayOfWeekType = 2 - HSMDateTimeComponent_WEDNESDAY HSMDateTimeComponent_HSMDateTimeComponentDayOfWeekType = 3 - HSMDateTimeComponent_THURSDAY HSMDateTimeComponent_HSMDateTimeComponentDayOfWeekType = 4 - HSMDateTimeComponent_FRIDAY HSMDateTimeComponent_HSMDateTimeComponentDayOfWeekType = 5 - HSMDateTimeComponent_SATURDAY HSMDateTimeComponent_HSMDateTimeComponentDayOfWeekType = 6 - HSMDateTimeComponent_SUNDAY HSMDateTimeComponent_HSMDateTimeComponentDayOfWeekType = 7 -) - -// Enum value maps for HSMDateTimeComponent_HSMDateTimeComponentDayOfWeekType. -var ( - HSMDateTimeComponent_HSMDateTimeComponentDayOfWeekType_name = map[int32]string{ - 1: "MONDAY", - 2: "TUESDAY", - 3: "WEDNESDAY", - 4: "THURSDAY", - 5: "FRIDAY", - 6: "SATURDAY", - 7: "SUNDAY", - } - HSMDateTimeComponent_HSMDateTimeComponentDayOfWeekType_value = map[string]int32{ - "MONDAY": 1, - "TUESDAY": 2, - "WEDNESDAY": 3, - "THURSDAY": 4, - "FRIDAY": 5, - "SATURDAY": 6, - "SUNDAY": 7, - } -) - -func (x HSMDateTimeComponent_HSMDateTimeComponentDayOfWeekType) Enum() *HSMDateTimeComponent_HSMDateTimeComponentDayOfWeekType { - p := new(HSMDateTimeComponent_HSMDateTimeComponentDayOfWeekType) - *p = x - return p -} - -func (x HSMDateTimeComponent_HSMDateTimeComponentDayOfWeekType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (HSMDateTimeComponent_HSMDateTimeComponentDayOfWeekType) Descriptor() protoreflect.EnumDescriptor { - return file_def_proto_enumTypes[8].Descriptor() -} - -func (HSMDateTimeComponent_HSMDateTimeComponentDayOfWeekType) Type() protoreflect.EnumType { - return &file_def_proto_enumTypes[8] -} - -func (x HSMDateTimeComponent_HSMDateTimeComponentDayOfWeekType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Do not use. -func (x *HSMDateTimeComponent_HSMDateTimeComponentDayOfWeekType) UnmarshalJSON(b []byte) error { - num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) - if err != nil { - return err - } - *x = HSMDateTimeComponent_HSMDateTimeComponentDayOfWeekType(num) - return nil -} - -// Deprecated: Use HSMDateTimeComponent_HSMDateTimeComponentDayOfWeekType.Descriptor instead. -func (HSMDateTimeComponent_HSMDateTimeComponentDayOfWeekType) EnumDescriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{40, 0} -} - -type HSMDateTimeComponent_HSMDateTimeComponentCalendarType int32 - -const ( - HSMDateTimeComponent_GREGORIAN HSMDateTimeComponent_HSMDateTimeComponentCalendarType = 1 - HSMDateTimeComponent_SOLAR_HIJRI HSMDateTimeComponent_HSMDateTimeComponentCalendarType = 2 -) - -// Enum value maps for HSMDateTimeComponent_HSMDateTimeComponentCalendarType. -var ( - HSMDateTimeComponent_HSMDateTimeComponentCalendarType_name = map[int32]string{ - 1: "GREGORIAN", - 2: "SOLAR_HIJRI", - } - HSMDateTimeComponent_HSMDateTimeComponentCalendarType_value = map[string]int32{ - "GREGORIAN": 1, - "SOLAR_HIJRI": 2, - } -) - -func (x HSMDateTimeComponent_HSMDateTimeComponentCalendarType) Enum() *HSMDateTimeComponent_HSMDateTimeComponentCalendarType { - p := new(HSMDateTimeComponent_HSMDateTimeComponentCalendarType) - *p = x - return p -} - -func (x HSMDateTimeComponent_HSMDateTimeComponentCalendarType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (HSMDateTimeComponent_HSMDateTimeComponentCalendarType) Descriptor() protoreflect.EnumDescriptor { - return file_def_proto_enumTypes[9].Descriptor() -} - -func (HSMDateTimeComponent_HSMDateTimeComponentCalendarType) Type() protoreflect.EnumType { - return &file_def_proto_enumTypes[9] -} - -func (x HSMDateTimeComponent_HSMDateTimeComponentCalendarType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Do not use. -func (x *HSMDateTimeComponent_HSMDateTimeComponentCalendarType) UnmarshalJSON(b []byte) error { - num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) - if err != nil { - return err - } - *x = HSMDateTimeComponent_HSMDateTimeComponentCalendarType(num) - return nil -} - -// Deprecated: Use HSMDateTimeComponent_HSMDateTimeComponentCalendarType.Descriptor instead. -func (HSMDateTimeComponent_HSMDateTimeComponentCalendarType) EnumDescriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{40, 1} -} - -type OrderMessage_OrderMessageOrderStatus int32 - -const ( - OrderMessage_INQUIRY OrderMessage_OrderMessageOrderStatus = 1 -) - -// Enum value maps for OrderMessage_OrderMessageOrderStatus. -var ( - OrderMessage_OrderMessageOrderStatus_name = map[int32]string{ - 1: "INQUIRY", - } - OrderMessage_OrderMessageOrderStatus_value = map[string]int32{ - "INQUIRY": 1, - } -) - -func (x OrderMessage_OrderMessageOrderStatus) Enum() *OrderMessage_OrderMessageOrderStatus { - p := new(OrderMessage_OrderMessageOrderStatus) - *p = x - return p -} - -func (x OrderMessage_OrderMessageOrderStatus) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (OrderMessage_OrderMessageOrderStatus) Descriptor() protoreflect.EnumDescriptor { - return file_def_proto_enumTypes[10].Descriptor() -} - -func (OrderMessage_OrderMessageOrderStatus) Type() protoreflect.EnumType { - return &file_def_proto_enumTypes[10] -} - -func (x OrderMessage_OrderMessageOrderStatus) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Do not use. -func (x *OrderMessage_OrderMessageOrderStatus) UnmarshalJSON(b []byte) error { - num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) - if err != nil { - return err - } - *x = OrderMessage_OrderMessageOrderStatus(num) - return nil -} - -// Deprecated: Use OrderMessage_OrderMessageOrderStatus.Descriptor instead. -func (OrderMessage_OrderMessageOrderStatus) EnumDescriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{58, 0} -} - -type OrderMessage_OrderMessageOrderSurface int32 - -const ( - OrderMessage_CATALOG OrderMessage_OrderMessageOrderSurface = 1 -) - -// Enum value maps for OrderMessage_OrderMessageOrderSurface. -var ( - OrderMessage_OrderMessageOrderSurface_name = map[int32]string{ - 1: "CATALOG", - } - OrderMessage_OrderMessageOrderSurface_value = map[string]int32{ - "CATALOG": 1, - } -) - -func (x OrderMessage_OrderMessageOrderSurface) Enum() *OrderMessage_OrderMessageOrderSurface { - p := new(OrderMessage_OrderMessageOrderSurface) - *p = x - return p -} - -func (x OrderMessage_OrderMessageOrderSurface) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (OrderMessage_OrderMessageOrderSurface) Descriptor() protoreflect.EnumDescriptor { - return file_def_proto_enumTypes[11].Descriptor() -} - -func (OrderMessage_OrderMessageOrderSurface) Type() protoreflect.EnumType { - return &file_def_proto_enumTypes[11] -} - -func (x OrderMessage_OrderMessageOrderSurface) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Do not use. -func (x *OrderMessage_OrderMessageOrderSurface) UnmarshalJSON(b []byte) error { - num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) - if err != nil { - return err - } - *x = OrderMessage_OrderMessageOrderSurface(num) - return nil -} - -// Deprecated: Use OrderMessage_OrderMessageOrderSurface.Descriptor instead. -func (OrderMessage_OrderMessageOrderSurface) EnumDescriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{58, 1} -} - -type ListMessage_ListMessageListType int32 - -const ( - ListMessage_UNKNOWN ListMessage_ListMessageListType = 0 - ListMessage_SINGLE_SELECT ListMessage_ListMessageListType = 1 -) - -// Enum value maps for ListMessage_ListMessageListType. -var ( - ListMessage_ListMessageListType_name = map[int32]string{ - 0: "UNKNOWN", - 1: "SINGLE_SELECT", - } - ListMessage_ListMessageListType_value = map[string]int32{ - "UNKNOWN": 0, - "SINGLE_SELECT": 1, - } -) - -func (x ListMessage_ListMessageListType) Enum() *ListMessage_ListMessageListType { - p := new(ListMessage_ListMessageListType) - *p = x - return p -} - -func (x ListMessage_ListMessageListType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (ListMessage_ListMessageListType) Descriptor() protoreflect.EnumDescriptor { - return file_def_proto_enumTypes[12].Descriptor() -} - -func (ListMessage_ListMessageListType) Type() protoreflect.EnumType { - return &file_def_proto_enumTypes[12] -} - -func (x ListMessage_ListMessageListType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Do not use. -func (x *ListMessage_ListMessageListType) UnmarshalJSON(b []byte) error { - num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) - if err != nil { - return err - } - *x = ListMessage_ListMessageListType(num) - return nil -} - -// Deprecated: Use ListMessage_ListMessageListType.Descriptor instead. -func (ListMessage_ListMessageListType) EnumDescriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{61, 0} -} - -type ListResponseMessage_ListResponseMessageListType int32 - -const ( - ListResponseMessage_UNKNOWN ListResponseMessage_ListResponseMessageListType = 0 - ListResponseMessage_SINGLE_SELECT ListResponseMessage_ListResponseMessageListType = 1 -) - -// Enum value maps for ListResponseMessage_ListResponseMessageListType. -var ( - ListResponseMessage_ListResponseMessageListType_name = map[int32]string{ - 0: "UNKNOWN", - 1: "SINGLE_SELECT", - } - ListResponseMessage_ListResponseMessageListType_value = map[string]int32{ - "UNKNOWN": 0, - "SINGLE_SELECT": 1, - } -) - -func (x ListResponseMessage_ListResponseMessageListType) Enum() *ListResponseMessage_ListResponseMessageListType { - p := new(ListResponseMessage_ListResponseMessageListType) - *p = x - return p -} - -func (x ListResponseMessage_ListResponseMessageListType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (ListResponseMessage_ListResponseMessageListType) Descriptor() protoreflect.EnumDescriptor { - return file_def_proto_enumTypes[13].Descriptor() -} - -func (ListResponseMessage_ListResponseMessageListType) Type() protoreflect.EnumType { - return &file_def_proto_enumTypes[13] -} - -func (x ListResponseMessage_ListResponseMessageListType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Do not use. -func (x *ListResponseMessage_ListResponseMessageListType) UnmarshalJSON(b []byte) error { - num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) - if err != nil { - return err - } - *x = ListResponseMessage_ListResponseMessageListType(num) - return nil -} - -// Deprecated: Use ListResponseMessage_ListResponseMessageListType.Descriptor instead. -func (ListResponseMessage_ListResponseMessageListType) EnumDescriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{63, 0} -} - -type Button_ButtonType int32 - -const ( - Button_UNKNOWN Button_ButtonType = 0 - Button_RESPONSE Button_ButtonType = 1 -) - -// Enum value maps for Button_ButtonType. -var ( - Button_ButtonType_name = map[int32]string{ - 0: "UNKNOWN", - 1: "RESPONSE", - } - Button_ButtonType_value = map[string]int32{ - "UNKNOWN": 0, - "RESPONSE": 1, - } -) - -func (x Button_ButtonType) Enum() *Button_ButtonType { - p := new(Button_ButtonType) - *p = x - return p -} - -func (x Button_ButtonType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (Button_ButtonType) Descriptor() protoreflect.EnumDescriptor { - return file_def_proto_enumTypes[14].Descriptor() -} - -func (Button_ButtonType) Type() protoreflect.EnumType { - return &file_def_proto_enumTypes[14] -} - -func (x Button_ButtonType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Do not use. -func (x *Button_ButtonType) UnmarshalJSON(b []byte) error { - num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) - if err != nil { - return err - } - *x = Button_ButtonType(num) - return nil -} - -// Deprecated: Use Button_ButtonType.Descriptor instead. -func (Button_ButtonType) EnumDescriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{69, 0} -} - -type ButtonsMessage_ButtonsMessageHeaderType int32 - -const ( - ButtonsMessage_UNKNOWN ButtonsMessage_ButtonsMessageHeaderType = 0 - ButtonsMessage_EMPTY ButtonsMessage_ButtonsMessageHeaderType = 1 - ButtonsMessage_TEXT ButtonsMessage_ButtonsMessageHeaderType = 2 - ButtonsMessage_DOCUMENT ButtonsMessage_ButtonsMessageHeaderType = 3 - ButtonsMessage_IMAGE ButtonsMessage_ButtonsMessageHeaderType = 4 - ButtonsMessage_VIDEO ButtonsMessage_ButtonsMessageHeaderType = 5 - ButtonsMessage_LOCATION ButtonsMessage_ButtonsMessageHeaderType = 6 -) - -// Enum value maps for ButtonsMessage_ButtonsMessageHeaderType. -var ( - ButtonsMessage_ButtonsMessageHeaderType_name = map[int32]string{ - 0: "UNKNOWN", - 1: "EMPTY", - 2: "TEXT", - 3: "DOCUMENT", - 4: "IMAGE", - 5: "VIDEO", - 6: "LOCATION", - } - ButtonsMessage_ButtonsMessageHeaderType_value = map[string]int32{ - "UNKNOWN": 0, - "EMPTY": 1, - "TEXT": 2, - "DOCUMENT": 3, - "IMAGE": 4, - "VIDEO": 5, - "LOCATION": 6, - } -) - -func (x ButtonsMessage_ButtonsMessageHeaderType) Enum() *ButtonsMessage_ButtonsMessageHeaderType { - p := new(ButtonsMessage_ButtonsMessageHeaderType) - *p = x - return p -} - -func (x ButtonsMessage_ButtonsMessageHeaderType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (ButtonsMessage_ButtonsMessageHeaderType) Descriptor() protoreflect.EnumDescriptor { - return file_def_proto_enumTypes[15].Descriptor() -} - -func (ButtonsMessage_ButtonsMessageHeaderType) Type() protoreflect.EnumType { - return &file_def_proto_enumTypes[15] -} - -func (x ButtonsMessage_ButtonsMessageHeaderType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Do not use. -func (x *ButtonsMessage_ButtonsMessageHeaderType) UnmarshalJSON(b []byte) error { - num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) - if err != nil { - return err - } - *x = ButtonsMessage_ButtonsMessageHeaderType(num) - return nil -} - -// Deprecated: Use ButtonsMessage_ButtonsMessageHeaderType.Descriptor instead. -func (ButtonsMessage_ButtonsMessageHeaderType) EnumDescriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{70, 0} -} - -type ButtonsResponseMessage_ButtonsResponseMessageType int32 - -const ( - ButtonsResponseMessage_UNKNOWN ButtonsResponseMessage_ButtonsResponseMessageType = 0 - ButtonsResponseMessage_DISPLAY_TEXT ButtonsResponseMessage_ButtonsResponseMessageType = 1 -) - -// Enum value maps for ButtonsResponseMessage_ButtonsResponseMessageType. -var ( - ButtonsResponseMessage_ButtonsResponseMessageType_name = map[int32]string{ - 0: "UNKNOWN", - 1: "DISPLAY_TEXT", - } - ButtonsResponseMessage_ButtonsResponseMessageType_value = map[string]int32{ - "UNKNOWN": 0, - "DISPLAY_TEXT": 1, - } -) - -func (x ButtonsResponseMessage_ButtonsResponseMessageType) Enum() *ButtonsResponseMessage_ButtonsResponseMessageType { - p := new(ButtonsResponseMessage_ButtonsResponseMessageType) - *p = x - return p -} - -func (x ButtonsResponseMessage_ButtonsResponseMessageType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (ButtonsResponseMessage_ButtonsResponseMessageType) Descriptor() protoreflect.EnumDescriptor { - return file_def_proto_enumTypes[16].Descriptor() -} - -func (ButtonsResponseMessage_ButtonsResponseMessageType) Type() protoreflect.EnumType { - return &file_def_proto_enumTypes[16] -} - -func (x ButtonsResponseMessage_ButtonsResponseMessageType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Do not use. -func (x *ButtonsResponseMessage_ButtonsResponseMessageType) UnmarshalJSON(b []byte) error { - num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) - if err != nil { - return err - } - *x = ButtonsResponseMessage_ButtonsResponseMessageType(num) - return nil -} - -// Deprecated: Use ButtonsResponseMessage_ButtonsResponseMessageType.Descriptor instead. -func (ButtonsResponseMessage_ButtonsResponseMessageType) EnumDescriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{71, 0} -} - -type WebFeatures_WebFeaturesFlag int32 - -const ( - WebFeatures_NOT_STARTED WebFeatures_WebFeaturesFlag = 0 - WebFeatures_FORCE_UPGRADE WebFeatures_WebFeaturesFlag = 1 - WebFeatures_DEVELOPMENT WebFeatures_WebFeaturesFlag = 2 - WebFeatures_PRODUCTION WebFeatures_WebFeaturesFlag = 3 -) - -// Enum value maps for WebFeatures_WebFeaturesFlag. -var ( - WebFeatures_WebFeaturesFlag_name = map[int32]string{ - 0: "NOT_STARTED", - 1: "FORCE_UPGRADE", - 2: "DEVELOPMENT", - 3: "PRODUCTION", - } - WebFeatures_WebFeaturesFlag_value = map[string]int32{ - "NOT_STARTED": 0, - "FORCE_UPGRADE": 1, - "DEVELOPMENT": 2, - "PRODUCTION": 3, - } -) - -func (x WebFeatures_WebFeaturesFlag) Enum() *WebFeatures_WebFeaturesFlag { - p := new(WebFeatures_WebFeaturesFlag) - *p = x - return p -} - -func (x WebFeatures_WebFeaturesFlag) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (WebFeatures_WebFeaturesFlag) Descriptor() protoreflect.EnumDescriptor { - return file_def_proto_enumTypes[17].Descriptor() -} - -func (WebFeatures_WebFeaturesFlag) Type() protoreflect.EnumType { - return &file_def_proto_enumTypes[17] -} - -func (x WebFeatures_WebFeaturesFlag) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Do not use. -func (x *WebFeatures_WebFeaturesFlag) UnmarshalJSON(b []byte) error { - num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) - if err != nil { - return err - } - *x = WebFeatures_WebFeaturesFlag(num) - return nil -} - -// Deprecated: Use WebFeatures_WebFeaturesFlag.Descriptor instead. -func (WebFeatures_WebFeaturesFlag) EnumDescriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{74, 0} -} - -type PaymentInfo_PaymentInfoCurrency int32 - -const ( - PaymentInfo_UNKNOWN_CURRENCY PaymentInfo_PaymentInfoCurrency = 0 - PaymentInfo_INR PaymentInfo_PaymentInfoCurrency = 1 -) - -// Enum value maps for PaymentInfo_PaymentInfoCurrency. -var ( - PaymentInfo_PaymentInfoCurrency_name = map[int32]string{ - 0: "UNKNOWN_CURRENCY", - 1: "INR", - } - PaymentInfo_PaymentInfoCurrency_value = map[string]int32{ - "UNKNOWN_CURRENCY": 0, - "INR": 1, - } -) - -func (x PaymentInfo_PaymentInfoCurrency) Enum() *PaymentInfo_PaymentInfoCurrency { - p := new(PaymentInfo_PaymentInfoCurrency) - *p = x - return p -} - -func (x PaymentInfo_PaymentInfoCurrency) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (PaymentInfo_PaymentInfoCurrency) Descriptor() protoreflect.EnumDescriptor { - return file_def_proto_enumTypes[18].Descriptor() -} - -func (PaymentInfo_PaymentInfoCurrency) Type() protoreflect.EnumType { - return &file_def_proto_enumTypes[18] -} - -func (x PaymentInfo_PaymentInfoCurrency) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Do not use. -func (x *PaymentInfo_PaymentInfoCurrency) UnmarshalJSON(b []byte) error { - num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) - if err != nil { - return err - } - *x = PaymentInfo_PaymentInfoCurrency(num) - return nil -} - -// Deprecated: Use PaymentInfo_PaymentInfoCurrency.Descriptor instead. -func (PaymentInfo_PaymentInfoCurrency) EnumDescriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{77, 0} -} - -type PaymentInfo_PaymentInfoStatus int32 - -const ( - PaymentInfo_UNKNOWN_STATUS PaymentInfo_PaymentInfoStatus = 0 - PaymentInfo_PROCESSING PaymentInfo_PaymentInfoStatus = 1 - PaymentInfo_SENT PaymentInfo_PaymentInfoStatus = 2 - PaymentInfo_NEED_TO_ACCEPT PaymentInfo_PaymentInfoStatus = 3 - PaymentInfo_COMPLETE PaymentInfo_PaymentInfoStatus = 4 - PaymentInfo_COULD_NOT_COMPLETE PaymentInfo_PaymentInfoStatus = 5 - PaymentInfo_REFUNDED PaymentInfo_PaymentInfoStatus = 6 - PaymentInfo_EXPIRED PaymentInfo_PaymentInfoStatus = 7 - PaymentInfo_REJECTED PaymentInfo_PaymentInfoStatus = 8 - PaymentInfo_CANCELLED PaymentInfo_PaymentInfoStatus = 9 - PaymentInfo_WAITING_FOR_PAYER PaymentInfo_PaymentInfoStatus = 10 - PaymentInfo_WAITING PaymentInfo_PaymentInfoStatus = 11 -) - -// Enum value maps for PaymentInfo_PaymentInfoStatus. -var ( - PaymentInfo_PaymentInfoStatus_name = map[int32]string{ - 0: "UNKNOWN_STATUS", - 1: "PROCESSING", - 2: "SENT", - 3: "NEED_TO_ACCEPT", - 4: "COMPLETE", - 5: "COULD_NOT_COMPLETE", - 6: "REFUNDED", - 7: "EXPIRED", - 8: "REJECTED", - 9: "CANCELLED", - 10: "WAITING_FOR_PAYER", - 11: "WAITING", - } - PaymentInfo_PaymentInfoStatus_value = map[string]int32{ - "UNKNOWN_STATUS": 0, - "PROCESSING": 1, - "SENT": 2, - "NEED_TO_ACCEPT": 3, - "COMPLETE": 4, - "COULD_NOT_COMPLETE": 5, - "REFUNDED": 6, - "EXPIRED": 7, - "REJECTED": 8, - "CANCELLED": 9, - "WAITING_FOR_PAYER": 10, - "WAITING": 11, - } -) - -func (x PaymentInfo_PaymentInfoStatus) Enum() *PaymentInfo_PaymentInfoStatus { - p := new(PaymentInfo_PaymentInfoStatus) - *p = x - return p -} - -func (x PaymentInfo_PaymentInfoStatus) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (PaymentInfo_PaymentInfoStatus) Descriptor() protoreflect.EnumDescriptor { - return file_def_proto_enumTypes[19].Descriptor() -} - -func (PaymentInfo_PaymentInfoStatus) Type() protoreflect.EnumType { - return &file_def_proto_enumTypes[19] -} - -func (x PaymentInfo_PaymentInfoStatus) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Do not use. -func (x *PaymentInfo_PaymentInfoStatus) UnmarshalJSON(b []byte) error { - num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) - if err != nil { - return err - } - *x = PaymentInfo_PaymentInfoStatus(num) - return nil -} - -// Deprecated: Use PaymentInfo_PaymentInfoStatus.Descriptor instead. -func (PaymentInfo_PaymentInfoStatus) EnumDescriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{77, 1} -} - -type PaymentInfo_PaymentInfoTxnStatus int32 - -const ( - PaymentInfo_UNKNOWN PaymentInfo_PaymentInfoTxnStatus = 0 - PaymentInfo_PENDING_SETUP PaymentInfo_PaymentInfoTxnStatus = 1 - PaymentInfo_PENDING_RECEIVER_SETUP PaymentInfo_PaymentInfoTxnStatus = 2 - PaymentInfo_INIT PaymentInfo_PaymentInfoTxnStatus = 3 - PaymentInfo_SUCCESS PaymentInfo_PaymentInfoTxnStatus = 4 - PaymentInfo_COMPLETED PaymentInfo_PaymentInfoTxnStatus = 5 - PaymentInfo_FAILED PaymentInfo_PaymentInfoTxnStatus = 6 - PaymentInfo_FAILED_RISK PaymentInfo_PaymentInfoTxnStatus = 7 - PaymentInfo_FAILED_PROCESSING PaymentInfo_PaymentInfoTxnStatus = 8 - PaymentInfo_FAILED_RECEIVER_PROCESSING PaymentInfo_PaymentInfoTxnStatus = 9 - PaymentInfo_FAILED_DA PaymentInfo_PaymentInfoTxnStatus = 10 - PaymentInfo_FAILED_DA_FINAL PaymentInfo_PaymentInfoTxnStatus = 11 - PaymentInfo_REFUNDED_TXN PaymentInfo_PaymentInfoTxnStatus = 12 - PaymentInfo_REFUND_FAILED PaymentInfo_PaymentInfoTxnStatus = 13 - PaymentInfo_REFUND_FAILED_PROCESSING PaymentInfo_PaymentInfoTxnStatus = 14 - PaymentInfo_REFUND_FAILED_DA PaymentInfo_PaymentInfoTxnStatus = 15 - PaymentInfo_EXPIRED_TXN PaymentInfo_PaymentInfoTxnStatus = 16 - PaymentInfo_AUTH_CANCELED PaymentInfo_PaymentInfoTxnStatus = 17 - PaymentInfo_AUTH_CANCEL_FAILED_PROCESSING PaymentInfo_PaymentInfoTxnStatus = 18 - PaymentInfo_AUTH_CANCEL_FAILED PaymentInfo_PaymentInfoTxnStatus = 19 - PaymentInfo_COLLECT_INIT PaymentInfo_PaymentInfoTxnStatus = 20 - PaymentInfo_COLLECT_SUCCESS PaymentInfo_PaymentInfoTxnStatus = 21 - PaymentInfo_COLLECT_FAILED PaymentInfo_PaymentInfoTxnStatus = 22 - PaymentInfo_COLLECT_FAILED_RISK PaymentInfo_PaymentInfoTxnStatus = 23 - PaymentInfo_COLLECT_REJECTED PaymentInfo_PaymentInfoTxnStatus = 24 - PaymentInfo_COLLECT_EXPIRED PaymentInfo_PaymentInfoTxnStatus = 25 - PaymentInfo_COLLECT_CANCELED PaymentInfo_PaymentInfoTxnStatus = 26 - PaymentInfo_COLLECT_CANCELLING PaymentInfo_PaymentInfoTxnStatus = 27 -) - -// Enum value maps for PaymentInfo_PaymentInfoTxnStatus. -var ( - PaymentInfo_PaymentInfoTxnStatus_name = map[int32]string{ - 0: "UNKNOWN", - 1: "PENDING_SETUP", - 2: "PENDING_RECEIVER_SETUP", - 3: "INIT", - 4: "SUCCESS", - 5: "COMPLETED", - 6: "FAILED", - 7: "FAILED_RISK", - 8: "FAILED_PROCESSING", - 9: "FAILED_RECEIVER_PROCESSING", - 10: "FAILED_DA", - 11: "FAILED_DA_FINAL", - 12: "REFUNDED_TXN", - 13: "REFUND_FAILED", - 14: "REFUND_FAILED_PROCESSING", - 15: "REFUND_FAILED_DA", - 16: "EXPIRED_TXN", - 17: "AUTH_CANCELED", - 18: "AUTH_CANCEL_FAILED_PROCESSING", - 19: "AUTH_CANCEL_FAILED", - 20: "COLLECT_INIT", - 21: "COLLECT_SUCCESS", - 22: "COLLECT_FAILED", - 23: "COLLECT_FAILED_RISK", - 24: "COLLECT_REJECTED", - 25: "COLLECT_EXPIRED", - 26: "COLLECT_CANCELED", - 27: "COLLECT_CANCELLING", - } - PaymentInfo_PaymentInfoTxnStatus_value = map[string]int32{ - "UNKNOWN": 0, - "PENDING_SETUP": 1, - "PENDING_RECEIVER_SETUP": 2, - "INIT": 3, - "SUCCESS": 4, - "COMPLETED": 5, - "FAILED": 6, - "FAILED_RISK": 7, - "FAILED_PROCESSING": 8, - "FAILED_RECEIVER_PROCESSING": 9, - "FAILED_DA": 10, - "FAILED_DA_FINAL": 11, - "REFUNDED_TXN": 12, - "REFUND_FAILED": 13, - "REFUND_FAILED_PROCESSING": 14, - "REFUND_FAILED_DA": 15, - "EXPIRED_TXN": 16, - "AUTH_CANCELED": 17, - "AUTH_CANCEL_FAILED_PROCESSING": 18, - "AUTH_CANCEL_FAILED": 19, - "COLLECT_INIT": 20, - "COLLECT_SUCCESS": 21, - "COLLECT_FAILED": 22, - "COLLECT_FAILED_RISK": 23, - "COLLECT_REJECTED": 24, - "COLLECT_EXPIRED": 25, - "COLLECT_CANCELED": 26, - "COLLECT_CANCELLING": 27, - } -) - -func (x PaymentInfo_PaymentInfoTxnStatus) Enum() *PaymentInfo_PaymentInfoTxnStatus { - p := new(PaymentInfo_PaymentInfoTxnStatus) - *p = x - return p -} - -func (x PaymentInfo_PaymentInfoTxnStatus) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (PaymentInfo_PaymentInfoTxnStatus) Descriptor() protoreflect.EnumDescriptor { - return file_def_proto_enumTypes[20].Descriptor() -} - -func (PaymentInfo_PaymentInfoTxnStatus) Type() protoreflect.EnumType { - return &file_def_proto_enumTypes[20] -} - -func (x PaymentInfo_PaymentInfoTxnStatus) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Do not use. -func (x *PaymentInfo_PaymentInfoTxnStatus) UnmarshalJSON(b []byte) error { - num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) - if err != nil { - return err - } - *x = PaymentInfo_PaymentInfoTxnStatus(num) - return nil -} - -// Deprecated: Use PaymentInfo_PaymentInfoTxnStatus.Descriptor instead. -func (PaymentInfo_PaymentInfoTxnStatus) EnumDescriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{77, 2} -} - -type WebMessageInfo_WebMessageInfoStatus int32 - -const ( - WebMessageInfo_ERROR WebMessageInfo_WebMessageInfoStatus = 0 - WebMessageInfo_PENDING WebMessageInfo_WebMessageInfoStatus = 1 - WebMessageInfo_SERVER_ACK WebMessageInfo_WebMessageInfoStatus = 2 - WebMessageInfo_DELIVERY_ACK WebMessageInfo_WebMessageInfoStatus = 3 - WebMessageInfo_READ WebMessageInfo_WebMessageInfoStatus = 4 - WebMessageInfo_PLAYED WebMessageInfo_WebMessageInfoStatus = 5 -) - -// Enum value maps for WebMessageInfo_WebMessageInfoStatus. -var ( - WebMessageInfo_WebMessageInfoStatus_name = map[int32]string{ - 0: "ERROR", - 1: "PENDING", - 2: "SERVER_ACK", - 3: "DELIVERY_ACK", - 4: "READ", - 5: "PLAYED", - } - WebMessageInfo_WebMessageInfoStatus_value = map[string]int32{ - "ERROR": 0, - "PENDING": 1, - "SERVER_ACK": 2, - "DELIVERY_ACK": 3, - "READ": 4, - "PLAYED": 5, - } -) - -func (x WebMessageInfo_WebMessageInfoStatus) Enum() *WebMessageInfo_WebMessageInfoStatus { - p := new(WebMessageInfo_WebMessageInfoStatus) - *p = x - return p -} - -func (x WebMessageInfo_WebMessageInfoStatus) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (WebMessageInfo_WebMessageInfoStatus) Descriptor() protoreflect.EnumDescriptor { - return file_def_proto_enumTypes[21].Descriptor() -} - -func (WebMessageInfo_WebMessageInfoStatus) Type() protoreflect.EnumType { - return &file_def_proto_enumTypes[21] -} - -func (x WebMessageInfo_WebMessageInfoStatus) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Do not use. -func (x *WebMessageInfo_WebMessageInfoStatus) UnmarshalJSON(b []byte) error { - num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) - if err != nil { - return err - } - *x = WebMessageInfo_WebMessageInfoStatus(num) - return nil -} - -// Deprecated: Use WebMessageInfo_WebMessageInfoStatus.Descriptor instead. -func (WebMessageInfo_WebMessageInfoStatus) EnumDescriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{78, 0} -} - -type WebMessageInfo_WebMessageInfoStubType int32 - -const ( - WebMessageInfo_UNKNOWN WebMessageInfo_WebMessageInfoStubType = 0 - WebMessageInfo_REVOKE WebMessageInfo_WebMessageInfoStubType = 1 - WebMessageInfo_CIPHERTEXT WebMessageInfo_WebMessageInfoStubType = 2 - WebMessageInfo_FUTUREPROOF WebMessageInfo_WebMessageInfoStubType = 3 - WebMessageInfo_NON_VERIFIED_TRANSITION WebMessageInfo_WebMessageInfoStubType = 4 - WebMessageInfo_UNVERIFIED_TRANSITION WebMessageInfo_WebMessageInfoStubType = 5 - WebMessageInfo_VERIFIED_TRANSITION WebMessageInfo_WebMessageInfoStubType = 6 - WebMessageInfo_VERIFIED_LOW_UNKNOWN WebMessageInfo_WebMessageInfoStubType = 7 - WebMessageInfo_VERIFIED_HIGH WebMessageInfo_WebMessageInfoStubType = 8 - WebMessageInfo_VERIFIED_INITIAL_UNKNOWN WebMessageInfo_WebMessageInfoStubType = 9 - WebMessageInfo_VERIFIED_INITIAL_LOW WebMessageInfo_WebMessageInfoStubType = 10 - WebMessageInfo_VERIFIED_INITIAL_HIGH WebMessageInfo_WebMessageInfoStubType = 11 - WebMessageInfo_VERIFIED_TRANSITION_ANY_TO_NONE WebMessageInfo_WebMessageInfoStubType = 12 - WebMessageInfo_VERIFIED_TRANSITION_ANY_TO_HIGH WebMessageInfo_WebMessageInfoStubType = 13 - WebMessageInfo_VERIFIED_TRANSITION_HIGH_TO_LOW WebMessageInfo_WebMessageInfoStubType = 14 - WebMessageInfo_VERIFIED_TRANSITION_HIGH_TO_UNKNOWN WebMessageInfo_WebMessageInfoStubType = 15 - WebMessageInfo_VERIFIED_TRANSITION_UNKNOWN_TO_LOW WebMessageInfo_WebMessageInfoStubType = 16 - WebMessageInfo_VERIFIED_TRANSITION_LOW_TO_UNKNOWN WebMessageInfo_WebMessageInfoStubType = 17 - WebMessageInfo_VERIFIED_TRANSITION_NONE_TO_LOW WebMessageInfo_WebMessageInfoStubType = 18 - WebMessageInfo_VERIFIED_TRANSITION_NONE_TO_UNKNOWN WebMessageInfo_WebMessageInfoStubType = 19 - WebMessageInfo_GROUP_CREATE WebMessageInfo_WebMessageInfoStubType = 20 - WebMessageInfo_GROUP_CHANGE_SUBJECT WebMessageInfo_WebMessageInfoStubType = 21 - WebMessageInfo_GROUP_CHANGE_ICON WebMessageInfo_WebMessageInfoStubType = 22 - WebMessageInfo_GROUP_CHANGE_INVITE_LINK WebMessageInfo_WebMessageInfoStubType = 23 - WebMessageInfo_GROUP_CHANGE_DESCRIPTION WebMessageInfo_WebMessageInfoStubType = 24 - WebMessageInfo_GROUP_CHANGE_RESTRICT WebMessageInfo_WebMessageInfoStubType = 25 - WebMessageInfo_GROUP_CHANGE_ANNOUNCE WebMessageInfo_WebMessageInfoStubType = 26 - WebMessageInfo_GROUP_PARTICIPANT_ADD WebMessageInfo_WebMessageInfoStubType = 27 - WebMessageInfo_GROUP_PARTICIPANT_REMOVE WebMessageInfo_WebMessageInfoStubType = 28 - WebMessageInfo_GROUP_PARTICIPANT_PROMOTE WebMessageInfo_WebMessageInfoStubType = 29 - WebMessageInfo_GROUP_PARTICIPANT_DEMOTE WebMessageInfo_WebMessageInfoStubType = 30 - WebMessageInfo_GROUP_PARTICIPANT_INVITE WebMessageInfo_WebMessageInfoStubType = 31 - WebMessageInfo_GROUP_PARTICIPANT_LEAVE WebMessageInfo_WebMessageInfoStubType = 32 - WebMessageInfo_GROUP_PARTICIPANT_CHANGE_NUMBER WebMessageInfo_WebMessageInfoStubType = 33 - WebMessageInfo_BROADCAST_CREATE WebMessageInfo_WebMessageInfoStubType = 34 - WebMessageInfo_BROADCAST_ADD WebMessageInfo_WebMessageInfoStubType = 35 - WebMessageInfo_BROADCAST_REMOVE WebMessageInfo_WebMessageInfoStubType = 36 - WebMessageInfo_GENERIC_NOTIFICATION WebMessageInfo_WebMessageInfoStubType = 37 - WebMessageInfo_E2E_IDENTITY_CHANGED WebMessageInfo_WebMessageInfoStubType = 38 - WebMessageInfo_E2E_ENCRYPTED WebMessageInfo_WebMessageInfoStubType = 39 - WebMessageInfo_CALL_MISSED_VOICE WebMessageInfo_WebMessageInfoStubType = 40 - WebMessageInfo_CALL_MISSED_VIDEO WebMessageInfo_WebMessageInfoStubType = 41 - WebMessageInfo_INDIVIDUAL_CHANGE_NUMBER WebMessageInfo_WebMessageInfoStubType = 42 - WebMessageInfo_GROUP_DELETE WebMessageInfo_WebMessageInfoStubType = 43 - WebMessageInfo_GROUP_ANNOUNCE_MODE_MESSAGE_BOUNCE WebMessageInfo_WebMessageInfoStubType = 44 - WebMessageInfo_CALL_MISSED_GROUP_VOICE WebMessageInfo_WebMessageInfoStubType = 45 - WebMessageInfo_CALL_MISSED_GROUP_VIDEO WebMessageInfo_WebMessageInfoStubType = 46 - WebMessageInfo_PAYMENT_CIPHERTEXT WebMessageInfo_WebMessageInfoStubType = 47 - WebMessageInfo_PAYMENT_FUTUREPROOF WebMessageInfo_WebMessageInfoStubType = 48 - WebMessageInfo_PAYMENT_TRANSACTION_STATUS_UPDATE_FAILED WebMessageInfo_WebMessageInfoStubType = 49 - WebMessageInfo_PAYMENT_TRANSACTION_STATUS_UPDATE_REFUNDED WebMessageInfo_WebMessageInfoStubType = 50 - WebMessageInfo_PAYMENT_TRANSACTION_STATUS_UPDATE_REFUND_FAILED WebMessageInfo_WebMessageInfoStubType = 51 - WebMessageInfo_PAYMENT_TRANSACTION_STATUS_RECEIVER_PENDING_SETUP WebMessageInfo_WebMessageInfoStubType = 52 - WebMessageInfo_PAYMENT_TRANSACTION_STATUS_RECEIVER_SUCCESS_AFTER_HICCUP WebMessageInfo_WebMessageInfoStubType = 53 - WebMessageInfo_PAYMENT_ACTION_ACCOUNT_SETUP_REMINDER WebMessageInfo_WebMessageInfoStubType = 54 - WebMessageInfo_PAYMENT_ACTION_SEND_PAYMENT_REMINDER WebMessageInfo_WebMessageInfoStubType = 55 - WebMessageInfo_PAYMENT_ACTION_SEND_PAYMENT_INVITATION WebMessageInfo_WebMessageInfoStubType = 56 - WebMessageInfo_PAYMENT_ACTION_REQUEST_DECLINED WebMessageInfo_WebMessageInfoStubType = 57 - WebMessageInfo_PAYMENT_ACTION_REQUEST_EXPIRED WebMessageInfo_WebMessageInfoStubType = 58 - WebMessageInfo_PAYMENT_ACTION_REQUEST_CANCELLED WebMessageInfo_WebMessageInfoStubType = 59 - WebMessageInfo_BIZ_VERIFIED_TRANSITION_TOP_TO_BOTTOM WebMessageInfo_WebMessageInfoStubType = 60 - WebMessageInfo_BIZ_VERIFIED_TRANSITION_BOTTOM_TO_TOP WebMessageInfo_WebMessageInfoStubType = 61 - WebMessageInfo_BIZ_INTRO_TOP WebMessageInfo_WebMessageInfoStubType = 62 - WebMessageInfo_BIZ_INTRO_BOTTOM WebMessageInfo_WebMessageInfoStubType = 63 - WebMessageInfo_BIZ_NAME_CHANGE WebMessageInfo_WebMessageInfoStubType = 64 - WebMessageInfo_BIZ_MOVE_TO_CONSUMER_APP WebMessageInfo_WebMessageInfoStubType = 65 - WebMessageInfo_BIZ_TWO_TIER_MIGRATION_TOP WebMessageInfo_WebMessageInfoStubType = 66 - WebMessageInfo_BIZ_TWO_TIER_MIGRATION_BOTTOM WebMessageInfo_WebMessageInfoStubType = 67 - WebMessageInfo_OVERSIZED WebMessageInfo_WebMessageInfoStubType = 68 - WebMessageInfo_GROUP_CHANGE_NO_FREQUENTLY_FORWARDED WebMessageInfo_WebMessageInfoStubType = 69 - WebMessageInfo_GROUP_V4_ADD_INVITE_SENT WebMessageInfo_WebMessageInfoStubType = 70 - WebMessageInfo_GROUP_PARTICIPANT_ADD_REQUEST_JOIN WebMessageInfo_WebMessageInfoStubType = 71 - WebMessageInfo_CHANGE_EPHEMERAL_SETTING WebMessageInfo_WebMessageInfoStubType = 72 - WebMessageInfo_E2E_DEVICE_CHANGED WebMessageInfo_WebMessageInfoStubType = 73 - WebMessageInfo_VIEWED_ONCE WebMessageInfo_WebMessageInfoStubType = 74 - WebMessageInfo_E2E_ENCRYPTED_NOW WebMessageInfo_WebMessageInfoStubType = 75 - WebMessageInfo_BLUE_MSG_BSP_FB_TO_BSP_PREMISE WebMessageInfo_WebMessageInfoStubType = 76 - WebMessageInfo_BLUE_MSG_BSP_FB_TO_SELF_FB WebMessageInfo_WebMessageInfoStubType = 77 - WebMessageInfo_BLUE_MSG_BSP_FB_TO_SELF_PREMISE WebMessageInfo_WebMessageInfoStubType = 78 - WebMessageInfo_BLUE_MSG_BSP_FB_UNVERIFIED WebMessageInfo_WebMessageInfoStubType = 79 - WebMessageInfo_BLUE_MSG_BSP_FB_UNVERIFIED_TO_SELF_PREMISE_VERIFIED WebMessageInfo_WebMessageInfoStubType = 80 - WebMessageInfo_BLUE_MSG_BSP_FB_VERIFIED WebMessageInfo_WebMessageInfoStubType = 81 - WebMessageInfo_BLUE_MSG_BSP_FB_VERIFIED_TO_SELF_PREMISE_UNVERIFIED WebMessageInfo_WebMessageInfoStubType = 82 - WebMessageInfo_BLUE_MSG_BSP_PREMISE_TO_SELF_PREMISE WebMessageInfo_WebMessageInfoStubType = 83 - WebMessageInfo_BLUE_MSG_BSP_PREMISE_UNVERIFIED WebMessageInfo_WebMessageInfoStubType = 84 - WebMessageInfo_BLUE_MSG_BSP_PREMISE_UNVERIFIED_TO_SELF_PREMISE_VERIFIED WebMessageInfo_WebMessageInfoStubType = 85 - WebMessageInfo_BLUE_MSG_BSP_PREMISE_VERIFIED WebMessageInfo_WebMessageInfoStubType = 86 - WebMessageInfo_BLUE_MSG_BSP_PREMISE_VERIFIED_TO_SELF_PREMISE_UNVERIFIED WebMessageInfo_WebMessageInfoStubType = 87 - WebMessageInfo_BLUE_MSG_CONSUMER_TO_BSP_FB_UNVERIFIED WebMessageInfo_WebMessageInfoStubType = 88 - WebMessageInfo_BLUE_MSG_CONSUMER_TO_BSP_PREMISE_UNVERIFIED WebMessageInfo_WebMessageInfoStubType = 89 - WebMessageInfo_BLUE_MSG_CONSUMER_TO_SELF_FB_UNVERIFIED WebMessageInfo_WebMessageInfoStubType = 90 - WebMessageInfo_BLUE_MSG_CONSUMER_TO_SELF_PREMISE_UNVERIFIED WebMessageInfo_WebMessageInfoStubType = 91 - WebMessageInfo_BLUE_MSG_SELF_FB_TO_BSP_PREMISE WebMessageInfo_WebMessageInfoStubType = 92 - WebMessageInfo_BLUE_MSG_SELF_FB_TO_SELF_PREMISE WebMessageInfo_WebMessageInfoStubType = 93 - WebMessageInfo_BLUE_MSG_SELF_FB_UNVERIFIED WebMessageInfo_WebMessageInfoStubType = 94 - WebMessageInfo_BLUE_MSG_SELF_FB_UNVERIFIED_TO_SELF_PREMISE_VERIFIED WebMessageInfo_WebMessageInfoStubType = 95 - WebMessageInfo_BLUE_MSG_SELF_FB_VERIFIED WebMessageInfo_WebMessageInfoStubType = 96 - WebMessageInfo_BLUE_MSG_SELF_FB_VERIFIED_TO_SELF_PREMISE_UNVERIFIED WebMessageInfo_WebMessageInfoStubType = 97 - WebMessageInfo_BLUE_MSG_SELF_PREMISE_TO_BSP_PREMISE WebMessageInfo_WebMessageInfoStubType = 98 - WebMessageInfo_BLUE_MSG_SELF_PREMISE_UNVERIFIED WebMessageInfo_WebMessageInfoStubType = 99 - WebMessageInfo_BLUE_MSG_SELF_PREMISE_VERIFIED WebMessageInfo_WebMessageInfoStubType = 100 - WebMessageInfo_BLUE_MSG_TO_BSP_FB WebMessageInfo_WebMessageInfoStubType = 101 - WebMessageInfo_BLUE_MSG_TO_CONSUMER WebMessageInfo_WebMessageInfoStubType = 102 - WebMessageInfo_BLUE_MSG_TO_SELF_FB WebMessageInfo_WebMessageInfoStubType = 103 - WebMessageInfo_BLUE_MSG_UNVERIFIED_TO_BSP_FB_VERIFIED WebMessageInfo_WebMessageInfoStubType = 104 - WebMessageInfo_BLUE_MSG_UNVERIFIED_TO_BSP_PREMISE_VERIFIED WebMessageInfo_WebMessageInfoStubType = 105 - WebMessageInfo_BLUE_MSG_UNVERIFIED_TO_SELF_FB_VERIFIED WebMessageInfo_WebMessageInfoStubType = 106 - WebMessageInfo_BLUE_MSG_UNVERIFIED_TO_VERIFIED WebMessageInfo_WebMessageInfoStubType = 107 - WebMessageInfo_BLUE_MSG_VERIFIED_TO_BSP_FB_UNVERIFIED WebMessageInfo_WebMessageInfoStubType = 108 - WebMessageInfo_BLUE_MSG_VERIFIED_TO_BSP_PREMISE_UNVERIFIED WebMessageInfo_WebMessageInfoStubType = 109 - WebMessageInfo_BLUE_MSG_VERIFIED_TO_SELF_FB_UNVERIFIED WebMessageInfo_WebMessageInfoStubType = 110 - WebMessageInfo_BLUE_MSG_VERIFIED_TO_UNVERIFIED WebMessageInfo_WebMessageInfoStubType = 111 - WebMessageInfo_BLUE_MSG_BSP_FB_UNVERIFIED_TO_BSP_PREMISE_VERIFIED WebMessageInfo_WebMessageInfoStubType = 112 - WebMessageInfo_BLUE_MSG_BSP_FB_UNVERIFIED_TO_SELF_FB_VERIFIED WebMessageInfo_WebMessageInfoStubType = 113 - WebMessageInfo_BLUE_MSG_BSP_FB_VERIFIED_TO_BSP_PREMISE_UNVERIFIED WebMessageInfo_WebMessageInfoStubType = 114 - WebMessageInfo_BLUE_MSG_BSP_FB_VERIFIED_TO_SELF_FB_UNVERIFIED WebMessageInfo_WebMessageInfoStubType = 115 - WebMessageInfo_BLUE_MSG_SELF_FB_UNVERIFIED_TO_BSP_PREMISE_VERIFIED WebMessageInfo_WebMessageInfoStubType = 116 - WebMessageInfo_BLUE_MSG_SELF_FB_VERIFIED_TO_BSP_PREMISE_UNVERIFIED WebMessageInfo_WebMessageInfoStubType = 117 - WebMessageInfo_E2E_IDENTITY_UNAVAILABLE WebMessageInfo_WebMessageInfoStubType = 118 -) - -// Enum value maps for WebMessageInfo_WebMessageInfoStubType. -var ( - WebMessageInfo_WebMessageInfoStubType_name = map[int32]string{ - 0: "UNKNOWN", - 1: "REVOKE", - 2: "CIPHERTEXT", - 3: "FUTUREPROOF", - 4: "NON_VERIFIED_TRANSITION", - 5: "UNVERIFIED_TRANSITION", - 6: "VERIFIED_TRANSITION", - 7: "VERIFIED_LOW_UNKNOWN", - 8: "VERIFIED_HIGH", - 9: "VERIFIED_INITIAL_UNKNOWN", - 10: "VERIFIED_INITIAL_LOW", - 11: "VERIFIED_INITIAL_HIGH", - 12: "VERIFIED_TRANSITION_ANY_TO_NONE", - 13: "VERIFIED_TRANSITION_ANY_TO_HIGH", - 14: "VERIFIED_TRANSITION_HIGH_TO_LOW", - 15: "VERIFIED_TRANSITION_HIGH_TO_UNKNOWN", - 16: "VERIFIED_TRANSITION_UNKNOWN_TO_LOW", - 17: "VERIFIED_TRANSITION_LOW_TO_UNKNOWN", - 18: "VERIFIED_TRANSITION_NONE_TO_LOW", - 19: "VERIFIED_TRANSITION_NONE_TO_UNKNOWN", - 20: "GROUP_CREATE", - 21: "GROUP_CHANGE_SUBJECT", - 22: "GROUP_CHANGE_ICON", - 23: "GROUP_CHANGE_INVITE_LINK", - 24: "GROUP_CHANGE_DESCRIPTION", - 25: "GROUP_CHANGE_RESTRICT", - 26: "GROUP_CHANGE_ANNOUNCE", - 27: "GROUP_PARTICIPANT_ADD", - 28: "GROUP_PARTICIPANT_REMOVE", - 29: "GROUP_PARTICIPANT_PROMOTE", - 30: "GROUP_PARTICIPANT_DEMOTE", - 31: "GROUP_PARTICIPANT_INVITE", - 32: "GROUP_PARTICIPANT_LEAVE", - 33: "GROUP_PARTICIPANT_CHANGE_NUMBER", - 34: "BROADCAST_CREATE", - 35: "BROADCAST_ADD", - 36: "BROADCAST_REMOVE", - 37: "GENERIC_NOTIFICATION", - 38: "E2E_IDENTITY_CHANGED", - 39: "E2E_ENCRYPTED", - 40: "CALL_MISSED_VOICE", - 41: "CALL_MISSED_VIDEO", - 42: "INDIVIDUAL_CHANGE_NUMBER", - 43: "GROUP_DELETE", - 44: "GROUP_ANNOUNCE_MODE_MESSAGE_BOUNCE", - 45: "CALL_MISSED_GROUP_VOICE", - 46: "CALL_MISSED_GROUP_VIDEO", - 47: "PAYMENT_CIPHERTEXT", - 48: "PAYMENT_FUTUREPROOF", - 49: "PAYMENT_TRANSACTION_STATUS_UPDATE_FAILED", - 50: "PAYMENT_TRANSACTION_STATUS_UPDATE_REFUNDED", - 51: "PAYMENT_TRANSACTION_STATUS_UPDATE_REFUND_FAILED", - 52: "PAYMENT_TRANSACTION_STATUS_RECEIVER_PENDING_SETUP", - 53: "PAYMENT_TRANSACTION_STATUS_RECEIVER_SUCCESS_AFTER_HICCUP", - 54: "PAYMENT_ACTION_ACCOUNT_SETUP_REMINDER", - 55: "PAYMENT_ACTION_SEND_PAYMENT_REMINDER", - 56: "PAYMENT_ACTION_SEND_PAYMENT_INVITATION", - 57: "PAYMENT_ACTION_REQUEST_DECLINED", - 58: "PAYMENT_ACTION_REQUEST_EXPIRED", - 59: "PAYMENT_ACTION_REQUEST_CANCELLED", - 60: "BIZ_VERIFIED_TRANSITION_TOP_TO_BOTTOM", - 61: "BIZ_VERIFIED_TRANSITION_BOTTOM_TO_TOP", - 62: "BIZ_INTRO_TOP", - 63: "BIZ_INTRO_BOTTOM", - 64: "BIZ_NAME_CHANGE", - 65: "BIZ_MOVE_TO_CONSUMER_APP", - 66: "BIZ_TWO_TIER_MIGRATION_TOP", - 67: "BIZ_TWO_TIER_MIGRATION_BOTTOM", - 68: "OVERSIZED", - 69: "GROUP_CHANGE_NO_FREQUENTLY_FORWARDED", - 70: "GROUP_V4_ADD_INVITE_SENT", - 71: "GROUP_PARTICIPANT_ADD_REQUEST_JOIN", - 72: "CHANGE_EPHEMERAL_SETTING", - 73: "E2E_DEVICE_CHANGED", - 74: "VIEWED_ONCE", - 75: "E2E_ENCRYPTED_NOW", - 76: "BLUE_MSG_BSP_FB_TO_BSP_PREMISE", - 77: "BLUE_MSG_BSP_FB_TO_SELF_FB", - 78: "BLUE_MSG_BSP_FB_TO_SELF_PREMISE", - 79: "BLUE_MSG_BSP_FB_UNVERIFIED", - 80: "BLUE_MSG_BSP_FB_UNVERIFIED_TO_SELF_PREMISE_VERIFIED", - 81: "BLUE_MSG_BSP_FB_VERIFIED", - 82: "BLUE_MSG_BSP_FB_VERIFIED_TO_SELF_PREMISE_UNVERIFIED", - 83: "BLUE_MSG_BSP_PREMISE_TO_SELF_PREMISE", - 84: "BLUE_MSG_BSP_PREMISE_UNVERIFIED", - 85: "BLUE_MSG_BSP_PREMISE_UNVERIFIED_TO_SELF_PREMISE_VERIFIED", - 86: "BLUE_MSG_BSP_PREMISE_VERIFIED", - 87: "BLUE_MSG_BSP_PREMISE_VERIFIED_TO_SELF_PREMISE_UNVERIFIED", - 88: "BLUE_MSG_CONSUMER_TO_BSP_FB_UNVERIFIED", - 89: "BLUE_MSG_CONSUMER_TO_BSP_PREMISE_UNVERIFIED", - 90: "BLUE_MSG_CONSUMER_TO_SELF_FB_UNVERIFIED", - 91: "BLUE_MSG_CONSUMER_TO_SELF_PREMISE_UNVERIFIED", - 92: "BLUE_MSG_SELF_FB_TO_BSP_PREMISE", - 93: "BLUE_MSG_SELF_FB_TO_SELF_PREMISE", - 94: "BLUE_MSG_SELF_FB_UNVERIFIED", - 95: "BLUE_MSG_SELF_FB_UNVERIFIED_TO_SELF_PREMISE_VERIFIED", - 96: "BLUE_MSG_SELF_FB_VERIFIED", - 97: "BLUE_MSG_SELF_FB_VERIFIED_TO_SELF_PREMISE_UNVERIFIED", - 98: "BLUE_MSG_SELF_PREMISE_TO_BSP_PREMISE", - 99: "BLUE_MSG_SELF_PREMISE_UNVERIFIED", - 100: "BLUE_MSG_SELF_PREMISE_VERIFIED", - 101: "BLUE_MSG_TO_BSP_FB", - 102: "BLUE_MSG_TO_CONSUMER", - 103: "BLUE_MSG_TO_SELF_FB", - 104: "BLUE_MSG_UNVERIFIED_TO_BSP_FB_VERIFIED", - 105: "BLUE_MSG_UNVERIFIED_TO_BSP_PREMISE_VERIFIED", - 106: "BLUE_MSG_UNVERIFIED_TO_SELF_FB_VERIFIED", - 107: "BLUE_MSG_UNVERIFIED_TO_VERIFIED", - 108: "BLUE_MSG_VERIFIED_TO_BSP_FB_UNVERIFIED", - 109: "BLUE_MSG_VERIFIED_TO_BSP_PREMISE_UNVERIFIED", - 110: "BLUE_MSG_VERIFIED_TO_SELF_FB_UNVERIFIED", - 111: "BLUE_MSG_VERIFIED_TO_UNVERIFIED", - 112: "BLUE_MSG_BSP_FB_UNVERIFIED_TO_BSP_PREMISE_VERIFIED", - 113: "BLUE_MSG_BSP_FB_UNVERIFIED_TO_SELF_FB_VERIFIED", - 114: "BLUE_MSG_BSP_FB_VERIFIED_TO_BSP_PREMISE_UNVERIFIED", - 115: "BLUE_MSG_BSP_FB_VERIFIED_TO_SELF_FB_UNVERIFIED", - 116: "BLUE_MSG_SELF_FB_UNVERIFIED_TO_BSP_PREMISE_VERIFIED", - 117: "BLUE_MSG_SELF_FB_VERIFIED_TO_BSP_PREMISE_UNVERIFIED", - 118: "E2E_IDENTITY_UNAVAILABLE", - } - WebMessageInfo_WebMessageInfoStubType_value = map[string]int32{ - "UNKNOWN": 0, - "REVOKE": 1, - "CIPHERTEXT": 2, - "FUTUREPROOF": 3, - "NON_VERIFIED_TRANSITION": 4, - "UNVERIFIED_TRANSITION": 5, - "VERIFIED_TRANSITION": 6, - "VERIFIED_LOW_UNKNOWN": 7, - "VERIFIED_HIGH": 8, - "VERIFIED_INITIAL_UNKNOWN": 9, - "VERIFIED_INITIAL_LOW": 10, - "VERIFIED_INITIAL_HIGH": 11, - "VERIFIED_TRANSITION_ANY_TO_NONE": 12, - "VERIFIED_TRANSITION_ANY_TO_HIGH": 13, - "VERIFIED_TRANSITION_HIGH_TO_LOW": 14, - "VERIFIED_TRANSITION_HIGH_TO_UNKNOWN": 15, - "VERIFIED_TRANSITION_UNKNOWN_TO_LOW": 16, - "VERIFIED_TRANSITION_LOW_TO_UNKNOWN": 17, - "VERIFIED_TRANSITION_NONE_TO_LOW": 18, - "VERIFIED_TRANSITION_NONE_TO_UNKNOWN": 19, - "GROUP_CREATE": 20, - "GROUP_CHANGE_SUBJECT": 21, - "GROUP_CHANGE_ICON": 22, - "GROUP_CHANGE_INVITE_LINK": 23, - "GROUP_CHANGE_DESCRIPTION": 24, - "GROUP_CHANGE_RESTRICT": 25, - "GROUP_CHANGE_ANNOUNCE": 26, - "GROUP_PARTICIPANT_ADD": 27, - "GROUP_PARTICIPANT_REMOVE": 28, - "GROUP_PARTICIPANT_PROMOTE": 29, - "GROUP_PARTICIPANT_DEMOTE": 30, - "GROUP_PARTICIPANT_INVITE": 31, - "GROUP_PARTICIPANT_LEAVE": 32, - "GROUP_PARTICIPANT_CHANGE_NUMBER": 33, - "BROADCAST_CREATE": 34, - "BROADCAST_ADD": 35, - "BROADCAST_REMOVE": 36, - "GENERIC_NOTIFICATION": 37, - "E2E_IDENTITY_CHANGED": 38, - "E2E_ENCRYPTED": 39, - "CALL_MISSED_VOICE": 40, - "CALL_MISSED_VIDEO": 41, - "INDIVIDUAL_CHANGE_NUMBER": 42, - "GROUP_DELETE": 43, - "GROUP_ANNOUNCE_MODE_MESSAGE_BOUNCE": 44, - "CALL_MISSED_GROUP_VOICE": 45, - "CALL_MISSED_GROUP_VIDEO": 46, - "PAYMENT_CIPHERTEXT": 47, - "PAYMENT_FUTUREPROOF": 48, - "PAYMENT_TRANSACTION_STATUS_UPDATE_FAILED": 49, - "PAYMENT_TRANSACTION_STATUS_UPDATE_REFUNDED": 50, - "PAYMENT_TRANSACTION_STATUS_UPDATE_REFUND_FAILED": 51, - "PAYMENT_TRANSACTION_STATUS_RECEIVER_PENDING_SETUP": 52, - "PAYMENT_TRANSACTION_STATUS_RECEIVER_SUCCESS_AFTER_HICCUP": 53, - "PAYMENT_ACTION_ACCOUNT_SETUP_REMINDER": 54, - "PAYMENT_ACTION_SEND_PAYMENT_REMINDER": 55, - "PAYMENT_ACTION_SEND_PAYMENT_INVITATION": 56, - "PAYMENT_ACTION_REQUEST_DECLINED": 57, - "PAYMENT_ACTION_REQUEST_EXPIRED": 58, - "PAYMENT_ACTION_REQUEST_CANCELLED": 59, - "BIZ_VERIFIED_TRANSITION_TOP_TO_BOTTOM": 60, - "BIZ_VERIFIED_TRANSITION_BOTTOM_TO_TOP": 61, - "BIZ_INTRO_TOP": 62, - "BIZ_INTRO_BOTTOM": 63, - "BIZ_NAME_CHANGE": 64, - "BIZ_MOVE_TO_CONSUMER_APP": 65, - "BIZ_TWO_TIER_MIGRATION_TOP": 66, - "BIZ_TWO_TIER_MIGRATION_BOTTOM": 67, - "OVERSIZED": 68, - "GROUP_CHANGE_NO_FREQUENTLY_FORWARDED": 69, - "GROUP_V4_ADD_INVITE_SENT": 70, - "GROUP_PARTICIPANT_ADD_REQUEST_JOIN": 71, - "CHANGE_EPHEMERAL_SETTING": 72, - "E2E_DEVICE_CHANGED": 73, - "VIEWED_ONCE": 74, - "E2E_ENCRYPTED_NOW": 75, - "BLUE_MSG_BSP_FB_TO_BSP_PREMISE": 76, - "BLUE_MSG_BSP_FB_TO_SELF_FB": 77, - "BLUE_MSG_BSP_FB_TO_SELF_PREMISE": 78, - "BLUE_MSG_BSP_FB_UNVERIFIED": 79, - "BLUE_MSG_BSP_FB_UNVERIFIED_TO_SELF_PREMISE_VERIFIED": 80, - "BLUE_MSG_BSP_FB_VERIFIED": 81, - "BLUE_MSG_BSP_FB_VERIFIED_TO_SELF_PREMISE_UNVERIFIED": 82, - "BLUE_MSG_BSP_PREMISE_TO_SELF_PREMISE": 83, - "BLUE_MSG_BSP_PREMISE_UNVERIFIED": 84, - "BLUE_MSG_BSP_PREMISE_UNVERIFIED_TO_SELF_PREMISE_VERIFIED": 85, - "BLUE_MSG_BSP_PREMISE_VERIFIED": 86, - "BLUE_MSG_BSP_PREMISE_VERIFIED_TO_SELF_PREMISE_UNVERIFIED": 87, - "BLUE_MSG_CONSUMER_TO_BSP_FB_UNVERIFIED": 88, - "BLUE_MSG_CONSUMER_TO_BSP_PREMISE_UNVERIFIED": 89, - "BLUE_MSG_CONSUMER_TO_SELF_FB_UNVERIFIED": 90, - "BLUE_MSG_CONSUMER_TO_SELF_PREMISE_UNVERIFIED": 91, - "BLUE_MSG_SELF_FB_TO_BSP_PREMISE": 92, - "BLUE_MSG_SELF_FB_TO_SELF_PREMISE": 93, - "BLUE_MSG_SELF_FB_UNVERIFIED": 94, - "BLUE_MSG_SELF_FB_UNVERIFIED_TO_SELF_PREMISE_VERIFIED": 95, - "BLUE_MSG_SELF_FB_VERIFIED": 96, - "BLUE_MSG_SELF_FB_VERIFIED_TO_SELF_PREMISE_UNVERIFIED": 97, - "BLUE_MSG_SELF_PREMISE_TO_BSP_PREMISE": 98, - "BLUE_MSG_SELF_PREMISE_UNVERIFIED": 99, - "BLUE_MSG_SELF_PREMISE_VERIFIED": 100, - "BLUE_MSG_TO_BSP_FB": 101, - "BLUE_MSG_TO_CONSUMER": 102, - "BLUE_MSG_TO_SELF_FB": 103, - "BLUE_MSG_UNVERIFIED_TO_BSP_FB_VERIFIED": 104, - "BLUE_MSG_UNVERIFIED_TO_BSP_PREMISE_VERIFIED": 105, - "BLUE_MSG_UNVERIFIED_TO_SELF_FB_VERIFIED": 106, - "BLUE_MSG_UNVERIFIED_TO_VERIFIED": 107, - "BLUE_MSG_VERIFIED_TO_BSP_FB_UNVERIFIED": 108, - "BLUE_MSG_VERIFIED_TO_BSP_PREMISE_UNVERIFIED": 109, - "BLUE_MSG_VERIFIED_TO_SELF_FB_UNVERIFIED": 110, - "BLUE_MSG_VERIFIED_TO_UNVERIFIED": 111, - "BLUE_MSG_BSP_FB_UNVERIFIED_TO_BSP_PREMISE_VERIFIED": 112, - "BLUE_MSG_BSP_FB_UNVERIFIED_TO_SELF_FB_VERIFIED": 113, - "BLUE_MSG_BSP_FB_VERIFIED_TO_BSP_PREMISE_UNVERIFIED": 114, - "BLUE_MSG_BSP_FB_VERIFIED_TO_SELF_FB_UNVERIFIED": 115, - "BLUE_MSG_SELF_FB_UNVERIFIED_TO_BSP_PREMISE_VERIFIED": 116, - "BLUE_MSG_SELF_FB_VERIFIED_TO_BSP_PREMISE_UNVERIFIED": 117, - "E2E_IDENTITY_UNAVAILABLE": 118, - } -) - -func (x WebMessageInfo_WebMessageInfoStubType) Enum() *WebMessageInfo_WebMessageInfoStubType { - p := new(WebMessageInfo_WebMessageInfoStubType) - *p = x - return p -} - -func (x WebMessageInfo_WebMessageInfoStubType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (WebMessageInfo_WebMessageInfoStubType) Descriptor() protoreflect.EnumDescriptor { - return file_def_proto_enumTypes[22].Descriptor() -} - -func (WebMessageInfo_WebMessageInfoStubType) Type() protoreflect.EnumType { - return &file_def_proto_enumTypes[22] -} - -func (x WebMessageInfo_WebMessageInfoStubType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Do not use. -func (x *WebMessageInfo_WebMessageInfoStubType) UnmarshalJSON(b []byte) error { - num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) - if err != nil { - return err - } - *x = WebMessageInfo_WebMessageInfoStubType(num) - return nil -} - -// Deprecated: Use WebMessageInfo_WebMessageInfoStubType.Descriptor instead. -func (WebMessageInfo_WebMessageInfoStubType) EnumDescriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{78, 1} -} - -type WebMessageInfo_WebMessageInfoBizPrivacyStatus int32 - -const ( - WebMessageInfo_E2EE WebMessageInfo_WebMessageInfoBizPrivacyStatus = 0 - WebMessageInfo_FB WebMessageInfo_WebMessageInfoBizPrivacyStatus = 2 - WebMessageInfo_BSP WebMessageInfo_WebMessageInfoBizPrivacyStatus = 1 - WebMessageInfo_BSP_AND_FB WebMessageInfo_WebMessageInfoBizPrivacyStatus = 3 -) - -// Enum value maps for WebMessageInfo_WebMessageInfoBizPrivacyStatus. -var ( - WebMessageInfo_WebMessageInfoBizPrivacyStatus_name = map[int32]string{ - 0: "E2EE", - 2: "FB", - 1: "BSP", - 3: "BSP_AND_FB", - } - WebMessageInfo_WebMessageInfoBizPrivacyStatus_value = map[string]int32{ - "E2EE": 0, - "FB": 2, - "BSP": 1, - "BSP_AND_FB": 3, - } -) - -func (x WebMessageInfo_WebMessageInfoBizPrivacyStatus) Enum() *WebMessageInfo_WebMessageInfoBizPrivacyStatus { - p := new(WebMessageInfo_WebMessageInfoBizPrivacyStatus) - *p = x - return p -} - -func (x WebMessageInfo_WebMessageInfoBizPrivacyStatus) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (WebMessageInfo_WebMessageInfoBizPrivacyStatus) Descriptor() protoreflect.EnumDescriptor { - return file_def_proto_enumTypes[23].Descriptor() -} - -func (WebMessageInfo_WebMessageInfoBizPrivacyStatus) Type() protoreflect.EnumType { - return &file_def_proto_enumTypes[23] -} - -func (x WebMessageInfo_WebMessageInfoBizPrivacyStatus) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Do not use. -func (x *WebMessageInfo_WebMessageInfoBizPrivacyStatus) UnmarshalJSON(b []byte) error { - num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) - if err != nil { - return err - } - *x = WebMessageInfo_WebMessageInfoBizPrivacyStatus(num) - return nil -} - -// Deprecated: Use WebMessageInfo_WebMessageInfoBizPrivacyStatus.Descriptor instead. -func (WebMessageInfo_WebMessageInfoBizPrivacyStatus) EnumDescriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{78, 2} -} - -type PaymentMoney struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Value *int64 `protobuf:"varint,1,opt,name=value" json:"value,omitempty"` - Offset *uint32 `protobuf:"varint,2,opt,name=offset" json:"offset,omitempty"` - CurrencyCode *string `protobuf:"bytes,3,opt,name=currencyCode" json:"currencyCode,omitempty"` -} - -func (x *PaymentMoney) Reset() { - *x = PaymentMoney{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *PaymentMoney) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PaymentMoney) ProtoMessage() {} - -func (x *PaymentMoney) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use PaymentMoney.ProtoReflect.Descriptor instead. -func (*PaymentMoney) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{0} -} - -func (x *PaymentMoney) GetValue() int64 { - if x != nil && x.Value != nil { - return *x.Value - } - return 0 -} - -func (x *PaymentMoney) GetOffset() uint32 { - if x != nil && x.Offset != nil { - return *x.Offset - } - return 0 -} - -func (x *PaymentMoney) GetCurrencyCode() string { - if x != nil && x.CurrencyCode != nil { - return *x.CurrencyCode - } - return "" -} - -type HydratedQuickReplyButton struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - DisplayText *string `protobuf:"bytes,1,opt,name=displayText" json:"displayText,omitempty"` - Id *string `protobuf:"bytes,2,opt,name=id" json:"id,omitempty"` -} - -func (x *HydratedQuickReplyButton) Reset() { - *x = HydratedQuickReplyButton{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *HydratedQuickReplyButton) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*HydratedQuickReplyButton) ProtoMessage() {} - -func (x *HydratedQuickReplyButton) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use HydratedQuickReplyButton.ProtoReflect.Descriptor instead. -func (*HydratedQuickReplyButton) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{1} -} - -func (x *HydratedQuickReplyButton) GetDisplayText() string { - if x != nil && x.DisplayText != nil { - return *x.DisplayText - } - return "" -} - -func (x *HydratedQuickReplyButton) GetId() string { - if x != nil && x.Id != nil { - return *x.Id - } - return "" -} - -type HydratedURLButton struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - DisplayText *string `protobuf:"bytes,1,opt,name=displayText" json:"displayText,omitempty"` - Url *string `protobuf:"bytes,2,opt,name=url" json:"url,omitempty"` -} - -func (x *HydratedURLButton) Reset() { - *x = HydratedURLButton{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *HydratedURLButton) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*HydratedURLButton) ProtoMessage() {} - -func (x *HydratedURLButton) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use HydratedURLButton.ProtoReflect.Descriptor instead. -func (*HydratedURLButton) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{2} -} - -func (x *HydratedURLButton) GetDisplayText() string { - if x != nil && x.DisplayText != nil { - return *x.DisplayText - } - return "" -} - -func (x *HydratedURLButton) GetUrl() string { - if x != nil && x.Url != nil { - return *x.Url - } - return "" -} - -type HydratedCallButton struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - DisplayText *string `protobuf:"bytes,1,opt,name=displayText" json:"displayText,omitempty"` - PhoneNumber *string `protobuf:"bytes,2,opt,name=phoneNumber" json:"phoneNumber,omitempty"` -} - -func (x *HydratedCallButton) Reset() { - *x = HydratedCallButton{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *HydratedCallButton) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*HydratedCallButton) ProtoMessage() {} - -func (x *HydratedCallButton) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use HydratedCallButton.ProtoReflect.Descriptor instead. -func (*HydratedCallButton) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{3} -} - -func (x *HydratedCallButton) GetDisplayText() string { - if x != nil && x.DisplayText != nil { - return *x.DisplayText - } - return "" -} - -func (x *HydratedCallButton) GetPhoneNumber() string { - if x != nil && x.PhoneNumber != nil { - return *x.PhoneNumber - } - return "" -} - -type HydratedTemplateButton struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Index *uint32 `protobuf:"varint,4,opt,name=index" json:"index,omitempty"` - // Types that are assignable to HydratedButton: - // *HydratedTemplateButton_QuickReplyButton - // *HydratedTemplateButton_UrlButton - // *HydratedTemplateButton_CallButton - HydratedButton isHydratedTemplateButton_HydratedButton `protobuf_oneof:"hydratedButton"` -} - -func (x *HydratedTemplateButton) Reset() { - *x = HydratedTemplateButton{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *HydratedTemplateButton) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*HydratedTemplateButton) ProtoMessage() {} - -func (x *HydratedTemplateButton) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use HydratedTemplateButton.ProtoReflect.Descriptor instead. -func (*HydratedTemplateButton) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{4} -} - -func (x *HydratedTemplateButton) GetIndex() uint32 { - if x != nil && x.Index != nil { - return *x.Index - } - return 0 -} - -func (m *HydratedTemplateButton) GetHydratedButton() isHydratedTemplateButton_HydratedButton { - if m != nil { - return m.HydratedButton - } - return nil -} - -func (x *HydratedTemplateButton) GetQuickReplyButton() *HydratedQuickReplyButton { - if x, ok := x.GetHydratedButton().(*HydratedTemplateButton_QuickReplyButton); ok { - return x.QuickReplyButton - } - return nil -} - -func (x *HydratedTemplateButton) GetUrlButton() *HydratedURLButton { - if x, ok := x.GetHydratedButton().(*HydratedTemplateButton_UrlButton); ok { - return x.UrlButton - } - return nil -} - -func (x *HydratedTemplateButton) GetCallButton() *HydratedCallButton { - if x, ok := x.GetHydratedButton().(*HydratedTemplateButton_CallButton); ok { - return x.CallButton - } - return nil -} - -type isHydratedTemplateButton_HydratedButton interface { - isHydratedTemplateButton_HydratedButton() -} - -type HydratedTemplateButton_QuickReplyButton struct { - QuickReplyButton *HydratedQuickReplyButton `protobuf:"bytes,1,opt,name=quickReplyButton,oneof"` -} - -type HydratedTemplateButton_UrlButton struct { - UrlButton *HydratedURLButton `protobuf:"bytes,2,opt,name=urlButton,oneof"` -} - -type HydratedTemplateButton_CallButton struct { - CallButton *HydratedCallButton `protobuf:"bytes,3,opt,name=callButton,oneof"` -} - -func (*HydratedTemplateButton_QuickReplyButton) isHydratedTemplateButton_HydratedButton() {} - -func (*HydratedTemplateButton_UrlButton) isHydratedTemplateButton_HydratedButton() {} - -func (*HydratedTemplateButton_CallButton) isHydratedTemplateButton_HydratedButton() {} - -type QuickReplyButton struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - DisplayText *HighlyStructuredMessage `protobuf:"bytes,1,opt,name=displayText" json:"displayText,omitempty"` - Id *string `protobuf:"bytes,2,opt,name=id" json:"id,omitempty"` -} - -func (x *QuickReplyButton) Reset() { - *x = QuickReplyButton{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *QuickReplyButton) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*QuickReplyButton) ProtoMessage() {} - -func (x *QuickReplyButton) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use QuickReplyButton.ProtoReflect.Descriptor instead. -func (*QuickReplyButton) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{5} -} - -func (x *QuickReplyButton) GetDisplayText() *HighlyStructuredMessage { - if x != nil { - return x.DisplayText - } - return nil -} - -func (x *QuickReplyButton) GetId() string { - if x != nil && x.Id != nil { - return *x.Id - } - return "" -} - -type URLButton struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - DisplayText *HighlyStructuredMessage `protobuf:"bytes,1,opt,name=displayText" json:"displayText,omitempty"` - Url *HighlyStructuredMessage `protobuf:"bytes,2,opt,name=url" json:"url,omitempty"` -} - -func (x *URLButton) Reset() { - *x = URLButton{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *URLButton) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*URLButton) ProtoMessage() {} - -func (x *URLButton) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use URLButton.ProtoReflect.Descriptor instead. -func (*URLButton) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{6} -} - -func (x *URLButton) GetDisplayText() *HighlyStructuredMessage { - if x != nil { - return x.DisplayText - } - return nil -} - -func (x *URLButton) GetUrl() *HighlyStructuredMessage { - if x != nil { - return x.Url - } - return nil -} - -type CallButton struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - DisplayText *HighlyStructuredMessage `protobuf:"bytes,1,opt,name=displayText" json:"displayText,omitempty"` - PhoneNumber *HighlyStructuredMessage `protobuf:"bytes,2,opt,name=phoneNumber" json:"phoneNumber,omitempty"` -} - -func (x *CallButton) Reset() { - *x = CallButton{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *CallButton) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CallButton) ProtoMessage() {} - -func (x *CallButton) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CallButton.ProtoReflect.Descriptor instead. -func (*CallButton) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{7} -} - -func (x *CallButton) GetDisplayText() *HighlyStructuredMessage { - if x != nil { - return x.DisplayText - } - return nil -} - -func (x *CallButton) GetPhoneNumber() *HighlyStructuredMessage { - if x != nil { - return x.PhoneNumber - } - return nil -} - -type TemplateButton struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Index *uint32 `protobuf:"varint,4,opt,name=index" json:"index,omitempty"` - // Types that are assignable to Button: - // *TemplateButton_QuickReplyButton - // *TemplateButton_UrlButton - // *TemplateButton_CallButton - Button isTemplateButton_Button `protobuf_oneof:"button"` -} - -func (x *TemplateButton) Reset() { - *x = TemplateButton{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *TemplateButton) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*TemplateButton) ProtoMessage() {} - -func (x *TemplateButton) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use TemplateButton.ProtoReflect.Descriptor instead. -func (*TemplateButton) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{8} -} - -func (x *TemplateButton) GetIndex() uint32 { - if x != nil && x.Index != nil { - return *x.Index - } - return 0 -} - -func (m *TemplateButton) GetButton() isTemplateButton_Button { - if m != nil { - return m.Button - } - return nil -} - -func (x *TemplateButton) GetQuickReplyButton() *QuickReplyButton { - if x, ok := x.GetButton().(*TemplateButton_QuickReplyButton); ok { - return x.QuickReplyButton - } - return nil -} - -func (x *TemplateButton) GetUrlButton() *URLButton { - if x, ok := x.GetButton().(*TemplateButton_UrlButton); ok { - return x.UrlButton - } - return nil -} - -func (x *TemplateButton) GetCallButton() *CallButton { - if x, ok := x.GetButton().(*TemplateButton_CallButton); ok { - return x.CallButton - } - return nil -} - -type isTemplateButton_Button interface { - isTemplateButton_Button() -} - -type TemplateButton_QuickReplyButton struct { - QuickReplyButton *QuickReplyButton `protobuf:"bytes,1,opt,name=quickReplyButton,oneof"` -} - -type TemplateButton_UrlButton struct { - UrlButton *URLButton `protobuf:"bytes,2,opt,name=urlButton,oneof"` -} - -type TemplateButton_CallButton struct { - CallButton *CallButton `protobuf:"bytes,3,opt,name=callButton,oneof"` -} - -func (*TemplateButton_QuickReplyButton) isTemplateButton_Button() {} - -func (*TemplateButton_UrlButton) isTemplateButton_Button() {} - -func (*TemplateButton_CallButton) isTemplateButton_Button() {} - -type Location struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - DegreesLatitude *float64 `protobuf:"fixed64,1,opt,name=degreesLatitude" json:"degreesLatitude,omitempty"` - DegreesLongitude *float64 `protobuf:"fixed64,2,opt,name=degreesLongitude" json:"degreesLongitude,omitempty"` - Name *string `protobuf:"bytes,3,opt,name=name" json:"name,omitempty"` -} - -func (x *Location) Reset() { - *x = Location{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Location) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Location) ProtoMessage() {} - -func (x *Location) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Location.ProtoReflect.Descriptor instead. -func (*Location) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{9} -} - -func (x *Location) GetDegreesLatitude() float64 { - if x != nil && x.DegreesLatitude != nil { - return *x.DegreesLatitude - } - return 0 -} - -func (x *Location) GetDegreesLongitude() float64 { - if x != nil && x.DegreesLongitude != nil { - return *x.DegreesLongitude - } - return 0 -} - -func (x *Location) GetName() string { - if x != nil && x.Name != nil { - return *x.Name - } - return "" -} - -type Point struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - XDeprecated *int32 `protobuf:"varint,1,opt,name=xDeprecated" json:"xDeprecated,omitempty"` - YDeprecated *int32 `protobuf:"varint,2,opt,name=yDeprecated" json:"yDeprecated,omitempty"` - X *float64 `protobuf:"fixed64,3,opt,name=x" json:"x,omitempty"` - Y *float64 `protobuf:"fixed64,4,opt,name=y" json:"y,omitempty"` -} - -func (x *Point) Reset() { - *x = Point{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Point) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Point) ProtoMessage() {} - -func (x *Point) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Point.ProtoReflect.Descriptor instead. -func (*Point) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{10} -} - -func (x *Point) GetXDeprecated() int32 { - if x != nil && x.XDeprecated != nil { - return *x.XDeprecated - } - return 0 -} - -func (x *Point) GetYDeprecated() int32 { - if x != nil && x.YDeprecated != nil { - return *x.YDeprecated - } - return 0 -} - -func (x *Point) GetX() float64 { - if x != nil && x.X != nil { - return *x.X - } - return 0 -} - -func (x *Point) GetY() float64 { - if x != nil && x.Y != nil { - return *x.Y - } - return 0 -} - -type InteractiveAnnotation struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - PolygonVertices []*Point `protobuf:"bytes,1,rep,name=polygonVertices" json:"polygonVertices,omitempty"` - // Types that are assignable to Action: - // *InteractiveAnnotation_Location - Action isInteractiveAnnotation_Action `protobuf_oneof:"action"` -} - -func (x *InteractiveAnnotation) Reset() { - *x = InteractiveAnnotation{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *InteractiveAnnotation) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*InteractiveAnnotation) ProtoMessage() {} - -func (x *InteractiveAnnotation) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use InteractiveAnnotation.ProtoReflect.Descriptor instead. -func (*InteractiveAnnotation) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{11} -} - -func (x *InteractiveAnnotation) GetPolygonVertices() []*Point { - if x != nil { - return x.PolygonVertices - } - return nil -} - -func (m *InteractiveAnnotation) GetAction() isInteractiveAnnotation_Action { - if m != nil { - return m.Action - } - return nil -} - -func (x *InteractiveAnnotation) GetLocation() *Location { - if x, ok := x.GetAction().(*InteractiveAnnotation_Location); ok { - return x.Location - } - return nil -} - -type isInteractiveAnnotation_Action interface { - isInteractiveAnnotation_Action() -} - -type InteractiveAnnotation_Location struct { - Location *Location `protobuf:"bytes,2,opt,name=location,oneof"` -} - -func (*InteractiveAnnotation_Location) isInteractiveAnnotation_Action() {} - -type DeviceListMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - SenderKeyHash []byte `protobuf:"bytes,1,opt,name=senderKeyHash" json:"senderKeyHash,omitempty"` - SenderTimestamp *uint64 `protobuf:"varint,2,opt,name=senderTimestamp" json:"senderTimestamp,omitempty"` - RecipientKeyHash []byte `protobuf:"bytes,8,opt,name=recipientKeyHash" json:"recipientKeyHash,omitempty"` - RecipientTimestamp *uint64 `protobuf:"varint,9,opt,name=recipientTimestamp" json:"recipientTimestamp,omitempty"` -} - -func (x *DeviceListMetadata) Reset() { - *x = DeviceListMetadata{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *DeviceListMetadata) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeviceListMetadata) ProtoMessage() {} - -func (x *DeviceListMetadata) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeviceListMetadata.ProtoReflect.Descriptor instead. -func (*DeviceListMetadata) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{12} -} - -func (x *DeviceListMetadata) GetSenderKeyHash() []byte { - if x != nil { - return x.SenderKeyHash - } - return nil -} - -func (x *DeviceListMetadata) GetSenderTimestamp() uint64 { - if x != nil && x.SenderTimestamp != nil { - return *x.SenderTimestamp - } - return 0 -} - -func (x *DeviceListMetadata) GetRecipientKeyHash() []byte { - if x != nil { - return x.RecipientKeyHash - } - return nil -} - -func (x *DeviceListMetadata) GetRecipientTimestamp() uint64 { - if x != nil && x.RecipientTimestamp != nil { - return *x.RecipientTimestamp - } - return 0 -} - -type MessageContextInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - DeviceListMetadata *DeviceListMetadata `protobuf:"bytes,1,opt,name=deviceListMetadata" json:"deviceListMetadata,omitempty"` -} - -func (x *MessageContextInfo) Reset() { - *x = MessageContextInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *MessageContextInfo) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*MessageContextInfo) ProtoMessage() {} - -func (x *MessageContextInfo) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use MessageContextInfo.ProtoReflect.Descriptor instead. -func (*MessageContextInfo) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{13} -} - -func (x *MessageContextInfo) GetDeviceListMetadata() *DeviceListMetadata { - if x != nil { - return x.DeviceListMetadata - } - return nil -} - -type AdReplyInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - AdvertiserName *string `protobuf:"bytes,1,opt,name=advertiserName" json:"advertiserName,omitempty"` - MediaType *AdReplyInfo_AdReplyInfoMediaType `protobuf:"varint,2,opt,name=mediaType,enum=proto.AdReplyInfo_AdReplyInfoMediaType" json:"mediaType,omitempty"` - JpegThumbnail []byte `protobuf:"bytes,16,opt,name=jpegThumbnail" json:"jpegThumbnail,omitempty"` - Caption *string `protobuf:"bytes,17,opt,name=caption" json:"caption,omitempty"` -} - -func (x *AdReplyInfo) Reset() { - *x = AdReplyInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *AdReplyInfo) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AdReplyInfo) ProtoMessage() {} - -func (x *AdReplyInfo) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AdReplyInfo.ProtoReflect.Descriptor instead. -func (*AdReplyInfo) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{14} -} - -func (x *AdReplyInfo) GetAdvertiserName() string { - if x != nil && x.AdvertiserName != nil { - return *x.AdvertiserName - } - return "" -} - -func (x *AdReplyInfo) GetMediaType() AdReplyInfo_AdReplyInfoMediaType { - if x != nil && x.MediaType != nil { - return *x.MediaType - } - return AdReplyInfo_NONE -} - -func (x *AdReplyInfo) GetJpegThumbnail() []byte { - if x != nil { - return x.JpegThumbnail - } - return nil -} - -func (x *AdReplyInfo) GetCaption() string { - if x != nil && x.Caption != nil { - return *x.Caption - } - return "" -} - -type ExternalAdReplyInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Title *string `protobuf:"bytes,1,opt,name=title" json:"title,omitempty"` - Body *string `protobuf:"bytes,2,opt,name=body" json:"body,omitempty"` - MediaType *ExternalAdReplyInfo_ExternalAdReplyInfoMediaType `protobuf:"varint,3,opt,name=mediaType,enum=proto.ExternalAdReplyInfo_ExternalAdReplyInfoMediaType" json:"mediaType,omitempty"` - ThumbnailUrl *string `protobuf:"bytes,4,opt,name=thumbnailUrl" json:"thumbnailUrl,omitempty"` - MediaUrl *string `protobuf:"bytes,5,opt,name=mediaUrl" json:"mediaUrl,omitempty"` - Thumbnail []byte `protobuf:"bytes,6,opt,name=thumbnail" json:"thumbnail,omitempty"` - SourceType *string `protobuf:"bytes,7,opt,name=sourceType" json:"sourceType,omitempty"` - SourceId *string `protobuf:"bytes,8,opt,name=sourceId" json:"sourceId,omitempty"` - SourceUrl *string `protobuf:"bytes,9,opt,name=sourceUrl" json:"sourceUrl,omitempty"` -} - -func (x *ExternalAdReplyInfo) Reset() { - *x = ExternalAdReplyInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ExternalAdReplyInfo) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ExternalAdReplyInfo) ProtoMessage() {} - -func (x *ExternalAdReplyInfo) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ExternalAdReplyInfo.ProtoReflect.Descriptor instead. -func (*ExternalAdReplyInfo) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{15} -} - -func (x *ExternalAdReplyInfo) GetTitle() string { - if x != nil && x.Title != nil { - return *x.Title - } - return "" -} - -func (x *ExternalAdReplyInfo) GetBody() string { - if x != nil && x.Body != nil { - return *x.Body - } - return "" -} - -func (x *ExternalAdReplyInfo) GetMediaType() ExternalAdReplyInfo_ExternalAdReplyInfoMediaType { - if x != nil && x.MediaType != nil { - return *x.MediaType - } - return ExternalAdReplyInfo_NONE -} - -func (x *ExternalAdReplyInfo) GetThumbnailUrl() string { - if x != nil && x.ThumbnailUrl != nil { - return *x.ThumbnailUrl - } - return "" -} - -func (x *ExternalAdReplyInfo) GetMediaUrl() string { - if x != nil && x.MediaUrl != nil { - return *x.MediaUrl - } - return "" -} - -func (x *ExternalAdReplyInfo) GetThumbnail() []byte { - if x != nil { - return x.Thumbnail - } - return nil -} - -func (x *ExternalAdReplyInfo) GetSourceType() string { - if x != nil && x.SourceType != nil { - return *x.SourceType - } - return "" -} - -func (x *ExternalAdReplyInfo) GetSourceId() string { - if x != nil && x.SourceId != nil { - return *x.SourceId - } - return "" -} - -func (x *ExternalAdReplyInfo) GetSourceUrl() string { - if x != nil && x.SourceUrl != nil { - return *x.SourceUrl - } - return "" -} - -type ContextInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - StanzaId *string `protobuf:"bytes,1,opt,name=stanzaId" json:"stanzaId,omitempty"` - Participant *string `protobuf:"bytes,2,opt,name=participant" json:"participant,omitempty"` - QuotedMessage *Message `protobuf:"bytes,3,opt,name=quotedMessage" json:"quotedMessage,omitempty"` - RemoteJid *string `protobuf:"bytes,4,opt,name=remoteJid" json:"remoteJid,omitempty"` - MentionedJid []string `protobuf:"bytes,15,rep,name=mentionedJid" json:"mentionedJid,omitempty"` - ConversionSource *string `protobuf:"bytes,18,opt,name=conversionSource" json:"conversionSource,omitempty"` - ConversionData []byte `protobuf:"bytes,19,opt,name=conversionData" json:"conversionData,omitempty"` - ConversionDelaySeconds *uint32 `protobuf:"varint,20,opt,name=conversionDelaySeconds" json:"conversionDelaySeconds,omitempty"` - ForwardingScore *uint32 `protobuf:"varint,21,opt,name=forwardingScore" json:"forwardingScore,omitempty"` - IsForwarded *bool `protobuf:"varint,22,opt,name=isForwarded" json:"isForwarded,omitempty"` - QuotedAd *AdReplyInfo `protobuf:"bytes,23,opt,name=quotedAd" json:"quotedAd,omitempty"` - PlaceholderKey *MessageKey `protobuf:"bytes,24,opt,name=placeholderKey" json:"placeholderKey,omitempty"` - Expiration *uint32 `protobuf:"varint,25,opt,name=expiration" json:"expiration,omitempty"` - EphemeralSettingTimestamp *int64 `protobuf:"varint,26,opt,name=ephemeralSettingTimestamp" json:"ephemeralSettingTimestamp,omitempty"` - EphemeralSharedSecret []byte `protobuf:"bytes,27,opt,name=ephemeralSharedSecret" json:"ephemeralSharedSecret,omitempty"` - ExternalAdReply *ExternalAdReplyInfo `protobuf:"bytes,28,opt,name=externalAdReply" json:"externalAdReply,omitempty"` -} - -func (x *ContextInfo) Reset() { - *x = ContextInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ContextInfo) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ContextInfo) ProtoMessage() {} - -func (x *ContextInfo) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[16] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ContextInfo.ProtoReflect.Descriptor instead. -func (*ContextInfo) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{16} -} - -func (x *ContextInfo) GetStanzaId() string { - if x != nil && x.StanzaId != nil { - return *x.StanzaId - } - return "" -} - -func (x *ContextInfo) GetParticipant() string { - if x != nil && x.Participant != nil { - return *x.Participant - } - return "" -} - -func (x *ContextInfo) GetQuotedMessage() *Message { - if x != nil { - return x.QuotedMessage - } - return nil -} - -func (x *ContextInfo) GetRemoteJid() string { - if x != nil && x.RemoteJid != nil { - return *x.RemoteJid - } - return "" -} - -func (x *ContextInfo) GetMentionedJid() []string { - if x != nil { - return x.MentionedJid - } - return nil -} - -func (x *ContextInfo) GetConversionSource() string { - if x != nil && x.ConversionSource != nil { - return *x.ConversionSource - } - return "" -} - -func (x *ContextInfo) GetConversionData() []byte { - if x != nil { - return x.ConversionData - } - return nil -} - -func (x *ContextInfo) GetConversionDelaySeconds() uint32 { - if x != nil && x.ConversionDelaySeconds != nil { - return *x.ConversionDelaySeconds - } - return 0 -} - -func (x *ContextInfo) GetForwardingScore() uint32 { - if x != nil && x.ForwardingScore != nil { - return *x.ForwardingScore - } - return 0 -} - -func (x *ContextInfo) GetIsForwarded() bool { - if x != nil && x.IsForwarded != nil { - return *x.IsForwarded - } - return false -} - -func (x *ContextInfo) GetQuotedAd() *AdReplyInfo { - if x != nil { - return x.QuotedAd - } - return nil -} - -func (x *ContextInfo) GetPlaceholderKey() *MessageKey { - if x != nil { - return x.PlaceholderKey - } - return nil -} - -func (x *ContextInfo) GetExpiration() uint32 { - if x != nil && x.Expiration != nil { - return *x.Expiration - } - return 0 -} - -func (x *ContextInfo) GetEphemeralSettingTimestamp() int64 { - if x != nil && x.EphemeralSettingTimestamp != nil { - return *x.EphemeralSettingTimestamp - } - return 0 -} - -func (x *ContextInfo) GetEphemeralSharedSecret() []byte { - if x != nil { - return x.EphemeralSharedSecret - } - return nil -} - -func (x *ContextInfo) GetExternalAdReply() *ExternalAdReplyInfo { - if x != nil { - return x.ExternalAdReply - } - return nil -} - -type SenderKeyDistributionMessage struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - GroupId *string `protobuf:"bytes,1,opt,name=groupId" json:"groupId,omitempty"` - AxolotlSenderKeyDistributionMessage []byte `protobuf:"bytes,2,opt,name=axolotlSenderKeyDistributionMessage" json:"axolotlSenderKeyDistributionMessage,omitempty"` -} - -func (x *SenderKeyDistributionMessage) Reset() { - *x = SenderKeyDistributionMessage{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SenderKeyDistributionMessage) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SenderKeyDistributionMessage) ProtoMessage() {} - -func (x *SenderKeyDistributionMessage) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[17] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SenderKeyDistributionMessage.ProtoReflect.Descriptor instead. -func (*SenderKeyDistributionMessage) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{17} -} - -func (x *SenderKeyDistributionMessage) GetGroupId() string { - if x != nil && x.GroupId != nil { - return *x.GroupId - } - return "" -} - -func (x *SenderKeyDistributionMessage) GetAxolotlSenderKeyDistributionMessage() []byte { - if x != nil { - return x.AxolotlSenderKeyDistributionMessage - } - return nil -} - -type ImageMessage struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Url *string `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"` - Mimetype *string `protobuf:"bytes,2,opt,name=mimetype" json:"mimetype,omitempty"` - Caption *string `protobuf:"bytes,3,opt,name=caption" json:"caption,omitempty"` - FileSha256 []byte `protobuf:"bytes,4,opt,name=fileSha256" json:"fileSha256,omitempty"` - FileLength *uint64 `protobuf:"varint,5,opt,name=fileLength" json:"fileLength,omitempty"` - Height *uint32 `protobuf:"varint,6,opt,name=height" json:"height,omitempty"` - Width *uint32 `protobuf:"varint,7,opt,name=width" json:"width,omitempty"` - MediaKey []byte `protobuf:"bytes,8,opt,name=mediaKey" json:"mediaKey,omitempty"` - FileEncSha256 []byte `protobuf:"bytes,9,opt,name=fileEncSha256" json:"fileEncSha256,omitempty"` - InteractiveAnnotations []*InteractiveAnnotation `protobuf:"bytes,10,rep,name=interactiveAnnotations" json:"interactiveAnnotations,omitempty"` - DirectPath *string `protobuf:"bytes,11,opt,name=directPath" json:"directPath,omitempty"` - MediaKeyTimestamp *int64 `protobuf:"varint,12,opt,name=mediaKeyTimestamp" json:"mediaKeyTimestamp,omitempty"` - JpegThumbnail []byte `protobuf:"bytes,16,opt,name=jpegThumbnail" json:"jpegThumbnail,omitempty"` - ContextInfo *ContextInfo `protobuf:"bytes,17,opt,name=contextInfo" json:"contextInfo,omitempty"` - FirstScanSidecar []byte `protobuf:"bytes,18,opt,name=firstScanSidecar" json:"firstScanSidecar,omitempty"` - FirstScanLength *uint32 `protobuf:"varint,19,opt,name=firstScanLength" json:"firstScanLength,omitempty"` - ExperimentGroupId *uint32 `protobuf:"varint,20,opt,name=experimentGroupId" json:"experimentGroupId,omitempty"` - ScansSidecar []byte `protobuf:"bytes,21,opt,name=scansSidecar" json:"scansSidecar,omitempty"` - ScanLengths []uint32 `protobuf:"varint,22,rep,name=scanLengths" json:"scanLengths,omitempty"` - MidQualityFileSha256 []byte `protobuf:"bytes,23,opt,name=midQualityFileSha256" json:"midQualityFileSha256,omitempty"` - MidQualityFileEncSha256 []byte `protobuf:"bytes,24,opt,name=midQualityFileEncSha256" json:"midQualityFileEncSha256,omitempty"` - ViewOnce *bool `protobuf:"varint,25,opt,name=viewOnce" json:"viewOnce,omitempty"` - ThumbnailDirectPath *string `protobuf:"bytes,26,opt,name=thumbnailDirectPath" json:"thumbnailDirectPath,omitempty"` - ThumbnailSha256 []byte `protobuf:"bytes,27,opt,name=thumbnailSha256" json:"thumbnailSha256,omitempty"` - ThumbnailEncSha256 []byte `protobuf:"bytes,28,opt,name=thumbnailEncSha256" json:"thumbnailEncSha256,omitempty"` -} - -func (x *ImageMessage) Reset() { - *x = ImageMessage{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ImageMessage) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ImageMessage) ProtoMessage() {} - -func (x *ImageMessage) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[18] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ImageMessage.ProtoReflect.Descriptor instead. -func (*ImageMessage) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{18} -} - -func (x *ImageMessage) GetUrl() string { - if x != nil && x.Url != nil { - return *x.Url - } - return "" -} - -func (x *ImageMessage) GetMimetype() string { - if x != nil && x.Mimetype != nil { - return *x.Mimetype - } - return "" -} - -func (x *ImageMessage) GetCaption() string { - if x != nil && x.Caption != nil { - return *x.Caption - } - return "" -} - -func (x *ImageMessage) GetFileSha256() []byte { - if x != nil { - return x.FileSha256 - } - return nil -} - -func (x *ImageMessage) GetFileLength() uint64 { - if x != nil && x.FileLength != nil { - return *x.FileLength - } - return 0 -} - -func (x *ImageMessage) GetHeight() uint32 { - if x != nil && x.Height != nil { - return *x.Height - } - return 0 -} - -func (x *ImageMessage) GetWidth() uint32 { - if x != nil && x.Width != nil { - return *x.Width - } - return 0 -} - -func (x *ImageMessage) GetMediaKey() []byte { - if x != nil { - return x.MediaKey - } - return nil -} - -func (x *ImageMessage) GetFileEncSha256() []byte { - if x != nil { - return x.FileEncSha256 - } - return nil -} - -func (x *ImageMessage) GetInteractiveAnnotations() []*InteractiveAnnotation { - if x != nil { - return x.InteractiveAnnotations - } - return nil -} - -func (x *ImageMessage) GetDirectPath() string { - if x != nil && x.DirectPath != nil { - return *x.DirectPath - } - return "" -} - -func (x *ImageMessage) GetMediaKeyTimestamp() int64 { - if x != nil && x.MediaKeyTimestamp != nil { - return *x.MediaKeyTimestamp - } - return 0 -} - -func (x *ImageMessage) GetJpegThumbnail() []byte { - if x != nil { - return x.JpegThumbnail - } - return nil -} - -func (x *ImageMessage) GetContextInfo() *ContextInfo { - if x != nil { - return x.ContextInfo - } - return nil -} - -func (x *ImageMessage) GetFirstScanSidecar() []byte { - if x != nil { - return x.FirstScanSidecar - } - return nil -} - -func (x *ImageMessage) GetFirstScanLength() uint32 { - if x != nil && x.FirstScanLength != nil { - return *x.FirstScanLength - } - return 0 -} - -func (x *ImageMessage) GetExperimentGroupId() uint32 { - if x != nil && x.ExperimentGroupId != nil { - return *x.ExperimentGroupId - } - return 0 -} - -func (x *ImageMessage) GetScansSidecar() []byte { - if x != nil { - return x.ScansSidecar - } - return nil -} - -func (x *ImageMessage) GetScanLengths() []uint32 { - if x != nil { - return x.ScanLengths - } - return nil -} - -func (x *ImageMessage) GetMidQualityFileSha256() []byte { - if x != nil { - return x.MidQualityFileSha256 - } - return nil -} - -func (x *ImageMessage) GetMidQualityFileEncSha256() []byte { - if x != nil { - return x.MidQualityFileEncSha256 - } - return nil -} - -func (x *ImageMessage) GetViewOnce() bool { - if x != nil && x.ViewOnce != nil { - return *x.ViewOnce - } - return false -} - -func (x *ImageMessage) GetThumbnailDirectPath() string { - if x != nil && x.ThumbnailDirectPath != nil { - return *x.ThumbnailDirectPath - } - return "" -} - -func (x *ImageMessage) GetThumbnailSha256() []byte { - if x != nil { - return x.ThumbnailSha256 - } - return nil -} - -func (x *ImageMessage) GetThumbnailEncSha256() []byte { - if x != nil { - return x.ThumbnailEncSha256 - } - return nil -} - -type InvoiceMessage struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Note *string `protobuf:"bytes,1,opt,name=note" json:"note,omitempty"` - Token *string `protobuf:"bytes,2,opt,name=token" json:"token,omitempty"` - AttachmentType *InvoiceMessage_InvoiceMessageAttachmentType `protobuf:"varint,3,opt,name=attachmentType,enum=proto.InvoiceMessage_InvoiceMessageAttachmentType" json:"attachmentType,omitempty"` - AttachmentMimetype *string `protobuf:"bytes,4,opt,name=attachmentMimetype" json:"attachmentMimetype,omitempty"` - AttachmentMediaKey []byte `protobuf:"bytes,5,opt,name=attachmentMediaKey" json:"attachmentMediaKey,omitempty"` - AttachmentMediaKeyTimestamp *int64 `protobuf:"varint,6,opt,name=attachmentMediaKeyTimestamp" json:"attachmentMediaKeyTimestamp,omitempty"` - AttachmentFileSha256 []byte `protobuf:"bytes,7,opt,name=attachmentFileSha256" json:"attachmentFileSha256,omitempty"` - AttachmentFileEncSha256 []byte `protobuf:"bytes,8,opt,name=attachmentFileEncSha256" json:"attachmentFileEncSha256,omitempty"` - AttachmentDirectPath *string `protobuf:"bytes,9,opt,name=attachmentDirectPath" json:"attachmentDirectPath,omitempty"` - AttachmentJpegThumbnail []byte `protobuf:"bytes,10,opt,name=attachmentJpegThumbnail" json:"attachmentJpegThumbnail,omitempty"` -} - -func (x *InvoiceMessage) Reset() { - *x = InvoiceMessage{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *InvoiceMessage) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*InvoiceMessage) ProtoMessage() {} - -func (x *InvoiceMessage) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[19] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use InvoiceMessage.ProtoReflect.Descriptor instead. -func (*InvoiceMessage) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{19} -} - -func (x *InvoiceMessage) GetNote() string { - if x != nil && x.Note != nil { - return *x.Note - } - return "" -} - -func (x *InvoiceMessage) GetToken() string { - if x != nil && x.Token != nil { - return *x.Token - } - return "" -} - -func (x *InvoiceMessage) GetAttachmentType() InvoiceMessage_InvoiceMessageAttachmentType { - if x != nil && x.AttachmentType != nil { - return *x.AttachmentType - } - return InvoiceMessage_IMAGE -} - -func (x *InvoiceMessage) GetAttachmentMimetype() string { - if x != nil && x.AttachmentMimetype != nil { - return *x.AttachmentMimetype - } - return "" -} - -func (x *InvoiceMessage) GetAttachmentMediaKey() []byte { - if x != nil { - return x.AttachmentMediaKey - } - return nil -} - -func (x *InvoiceMessage) GetAttachmentMediaKeyTimestamp() int64 { - if x != nil && x.AttachmentMediaKeyTimestamp != nil { - return *x.AttachmentMediaKeyTimestamp - } - return 0 -} - -func (x *InvoiceMessage) GetAttachmentFileSha256() []byte { - if x != nil { - return x.AttachmentFileSha256 - } - return nil -} - -func (x *InvoiceMessage) GetAttachmentFileEncSha256() []byte { - if x != nil { - return x.AttachmentFileEncSha256 - } - return nil -} - -func (x *InvoiceMessage) GetAttachmentDirectPath() string { - if x != nil && x.AttachmentDirectPath != nil { - return *x.AttachmentDirectPath - } - return "" -} - -func (x *InvoiceMessage) GetAttachmentJpegThumbnail() []byte { - if x != nil { - return x.AttachmentJpegThumbnail - } - return nil -} - -type ContactMessage struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - DisplayName *string `protobuf:"bytes,1,opt,name=displayName" json:"displayName,omitempty"` - Vcard *string `protobuf:"bytes,16,opt,name=vcard" json:"vcard,omitempty"` - ContextInfo *ContextInfo `protobuf:"bytes,17,opt,name=contextInfo" json:"contextInfo,omitempty"` -} - -func (x *ContactMessage) Reset() { - *x = ContactMessage{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ContactMessage) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ContactMessage) ProtoMessage() {} - -func (x *ContactMessage) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[20] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ContactMessage.ProtoReflect.Descriptor instead. -func (*ContactMessage) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{20} -} - -func (x *ContactMessage) GetDisplayName() string { - if x != nil && x.DisplayName != nil { - return *x.DisplayName - } - return "" -} - -func (x *ContactMessage) GetVcard() string { - if x != nil && x.Vcard != nil { - return *x.Vcard - } - return "" -} - -func (x *ContactMessage) GetContextInfo() *ContextInfo { - if x != nil { - return x.ContextInfo - } - return nil -} - -type LocationMessage struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - DegreesLatitude *float64 `protobuf:"fixed64,1,opt,name=degreesLatitude" json:"degreesLatitude,omitempty"` - DegreesLongitude *float64 `protobuf:"fixed64,2,opt,name=degreesLongitude" json:"degreesLongitude,omitempty"` - Name *string `protobuf:"bytes,3,opt,name=name" json:"name,omitempty"` - Address *string `protobuf:"bytes,4,opt,name=address" json:"address,omitempty"` - Url *string `protobuf:"bytes,5,opt,name=url" json:"url,omitempty"` - IsLive *bool `protobuf:"varint,6,opt,name=isLive" json:"isLive,omitempty"` - AccuracyInMeters *uint32 `protobuf:"varint,7,opt,name=accuracyInMeters" json:"accuracyInMeters,omitempty"` - SpeedInMps *float32 `protobuf:"fixed32,8,opt,name=speedInMps" json:"speedInMps,omitempty"` - DegreesClockwiseFromMagneticNorth *uint32 `protobuf:"varint,9,opt,name=degreesClockwiseFromMagneticNorth" json:"degreesClockwiseFromMagneticNorth,omitempty"` - Comment *string `protobuf:"bytes,11,opt,name=comment" json:"comment,omitempty"` - JpegThumbnail []byte `protobuf:"bytes,16,opt,name=jpegThumbnail" json:"jpegThumbnail,omitempty"` - ContextInfo *ContextInfo `protobuf:"bytes,17,opt,name=contextInfo" json:"contextInfo,omitempty"` -} - -func (x *LocationMessage) Reset() { - *x = LocationMessage{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[21] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *LocationMessage) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*LocationMessage) ProtoMessage() {} - -func (x *LocationMessage) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[21] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use LocationMessage.ProtoReflect.Descriptor instead. -func (*LocationMessage) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{21} -} - -func (x *LocationMessage) GetDegreesLatitude() float64 { - if x != nil && x.DegreesLatitude != nil { - return *x.DegreesLatitude - } - return 0 -} - -func (x *LocationMessage) GetDegreesLongitude() float64 { - if x != nil && x.DegreesLongitude != nil { - return *x.DegreesLongitude - } - return 0 -} - -func (x *LocationMessage) GetName() string { - if x != nil && x.Name != nil { - return *x.Name - } - return "" -} - -func (x *LocationMessage) GetAddress() string { - if x != nil && x.Address != nil { - return *x.Address - } - return "" -} - -func (x *LocationMessage) GetUrl() string { - if x != nil && x.Url != nil { - return *x.Url - } - return "" -} - -func (x *LocationMessage) GetIsLive() bool { - if x != nil && x.IsLive != nil { - return *x.IsLive - } - return false -} - -func (x *LocationMessage) GetAccuracyInMeters() uint32 { - if x != nil && x.AccuracyInMeters != nil { - return *x.AccuracyInMeters - } - return 0 -} - -func (x *LocationMessage) GetSpeedInMps() float32 { - if x != nil && x.SpeedInMps != nil { - return *x.SpeedInMps - } - return 0 -} - -func (x *LocationMessage) GetDegreesClockwiseFromMagneticNorth() uint32 { - if x != nil && x.DegreesClockwiseFromMagneticNorth != nil { - return *x.DegreesClockwiseFromMagneticNorth - } - return 0 -} - -func (x *LocationMessage) GetComment() string { - if x != nil && x.Comment != nil { - return *x.Comment - } - return "" -} - -func (x *LocationMessage) GetJpegThumbnail() []byte { - if x != nil { - return x.JpegThumbnail - } - return nil -} - -func (x *LocationMessage) GetContextInfo() *ContextInfo { - if x != nil { - return x.ContextInfo - } - return nil -} - -type ExtendedTextMessage struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Text *string `protobuf:"bytes,1,opt,name=text" json:"text,omitempty"` - MatchedText *string `protobuf:"bytes,2,opt,name=matchedText" json:"matchedText,omitempty"` - CanonicalUrl *string `protobuf:"bytes,4,opt,name=canonicalUrl" json:"canonicalUrl,omitempty"` - Description *string `protobuf:"bytes,5,opt,name=description" json:"description,omitempty"` - Title *string `protobuf:"bytes,6,opt,name=title" json:"title,omitempty"` - TextArgb *uint32 `protobuf:"fixed32,7,opt,name=textArgb" json:"textArgb,omitempty"` - BackgroundArgb *uint32 `protobuf:"fixed32,8,opt,name=backgroundArgb" json:"backgroundArgb,omitempty"` - Font *ExtendedTextMessage_ExtendedTextMessageFontType `protobuf:"varint,9,opt,name=font,enum=proto.ExtendedTextMessage_ExtendedTextMessageFontType" json:"font,omitempty"` - PreviewType *ExtendedTextMessage_ExtendedTextMessagePreviewType `protobuf:"varint,10,opt,name=previewType,enum=proto.ExtendedTextMessage_ExtendedTextMessagePreviewType" json:"previewType,omitempty"` - JpegThumbnail []byte `protobuf:"bytes,16,opt,name=jpegThumbnail" json:"jpegThumbnail,omitempty"` - ContextInfo *ContextInfo `protobuf:"bytes,17,opt,name=contextInfo" json:"contextInfo,omitempty"` - DoNotPlayInline *bool `protobuf:"varint,18,opt,name=doNotPlayInline" json:"doNotPlayInline,omitempty"` -} - -func (x *ExtendedTextMessage) Reset() { - *x = ExtendedTextMessage{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[22] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ExtendedTextMessage) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ExtendedTextMessage) ProtoMessage() {} - -func (x *ExtendedTextMessage) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[22] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ExtendedTextMessage.ProtoReflect.Descriptor instead. -func (*ExtendedTextMessage) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{22} -} - -func (x *ExtendedTextMessage) GetText() string { - if x != nil && x.Text != nil { - return *x.Text - } - return "" -} - -func (x *ExtendedTextMessage) GetMatchedText() string { - if x != nil && x.MatchedText != nil { - return *x.MatchedText - } - return "" -} - -func (x *ExtendedTextMessage) GetCanonicalUrl() string { - if x != nil && x.CanonicalUrl != nil { - return *x.CanonicalUrl - } - return "" -} - -func (x *ExtendedTextMessage) GetDescription() string { - if x != nil && x.Description != nil { - return *x.Description - } - return "" -} - -func (x *ExtendedTextMessage) GetTitle() string { - if x != nil && x.Title != nil { - return *x.Title - } - return "" -} - -func (x *ExtendedTextMessage) GetTextArgb() uint32 { - if x != nil && x.TextArgb != nil { - return *x.TextArgb - } - return 0 -} - -func (x *ExtendedTextMessage) GetBackgroundArgb() uint32 { - if x != nil && x.BackgroundArgb != nil { - return *x.BackgroundArgb - } - return 0 -} - -func (x *ExtendedTextMessage) GetFont() ExtendedTextMessage_ExtendedTextMessageFontType { - if x != nil && x.Font != nil { - return *x.Font - } - return ExtendedTextMessage_SANS_SERIF -} - -func (x *ExtendedTextMessage) GetPreviewType() ExtendedTextMessage_ExtendedTextMessagePreviewType { - if x != nil && x.PreviewType != nil { - return *x.PreviewType - } - return ExtendedTextMessage_NONE -} - -func (x *ExtendedTextMessage) GetJpegThumbnail() []byte { - if x != nil { - return x.JpegThumbnail - } - return nil -} - -func (x *ExtendedTextMessage) GetContextInfo() *ContextInfo { - if x != nil { - return x.ContextInfo - } - return nil -} - -func (x *ExtendedTextMessage) GetDoNotPlayInline() bool { - if x != nil && x.DoNotPlayInline != nil { - return *x.DoNotPlayInline - } - return false -} - -type DocumentMessage struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Url *string `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"` - Mimetype *string `protobuf:"bytes,2,opt,name=mimetype" json:"mimetype,omitempty"` - Title *string `protobuf:"bytes,3,opt,name=title" json:"title,omitempty"` - FileSha256 []byte `protobuf:"bytes,4,opt,name=fileSha256" json:"fileSha256,omitempty"` - FileLength *uint64 `protobuf:"varint,5,opt,name=fileLength" json:"fileLength,omitempty"` - PageCount *uint32 `protobuf:"varint,6,opt,name=pageCount" json:"pageCount,omitempty"` - MediaKey []byte `protobuf:"bytes,7,opt,name=mediaKey" json:"mediaKey,omitempty"` - FileName *string `protobuf:"bytes,8,opt,name=fileName" json:"fileName,omitempty"` - FileEncSha256 []byte `protobuf:"bytes,9,opt,name=fileEncSha256" json:"fileEncSha256,omitempty"` - DirectPath *string `protobuf:"bytes,10,opt,name=directPath" json:"directPath,omitempty"` - MediaKeyTimestamp *int64 `protobuf:"varint,11,opt,name=mediaKeyTimestamp" json:"mediaKeyTimestamp,omitempty"` - ContactVcard *bool `protobuf:"varint,12,opt,name=contactVcard" json:"contactVcard,omitempty"` - ThumbnailDirectPath *string `protobuf:"bytes,13,opt,name=thumbnailDirectPath" json:"thumbnailDirectPath,omitempty"` - ThumbnailSha256 []byte `protobuf:"bytes,14,opt,name=thumbnailSha256" json:"thumbnailSha256,omitempty"` - ThumbnailEncSha256 []byte `protobuf:"bytes,15,opt,name=thumbnailEncSha256" json:"thumbnailEncSha256,omitempty"` - JpegThumbnail []byte `protobuf:"bytes,16,opt,name=jpegThumbnail" json:"jpegThumbnail,omitempty"` - ContextInfo *ContextInfo `protobuf:"bytes,17,opt,name=contextInfo" json:"contextInfo,omitempty"` - ThumbnailHeight *uint32 `protobuf:"varint,18,opt,name=thumbnailHeight" json:"thumbnailHeight,omitempty"` - ThumbnailWidth *uint32 `protobuf:"varint,19,opt,name=thumbnailWidth" json:"thumbnailWidth,omitempty"` -} - -func (x *DocumentMessage) Reset() { - *x = DocumentMessage{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[23] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *DocumentMessage) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DocumentMessage) ProtoMessage() {} - -func (x *DocumentMessage) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[23] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DocumentMessage.ProtoReflect.Descriptor instead. -func (*DocumentMessage) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{23} -} - -func (x *DocumentMessage) GetUrl() string { - if x != nil && x.Url != nil { - return *x.Url - } - return "" -} - -func (x *DocumentMessage) GetMimetype() string { - if x != nil && x.Mimetype != nil { - return *x.Mimetype - } - return "" -} - -func (x *DocumentMessage) GetTitle() string { - if x != nil && x.Title != nil { - return *x.Title - } - return "" -} - -func (x *DocumentMessage) GetFileSha256() []byte { - if x != nil { - return x.FileSha256 - } - return nil -} - -func (x *DocumentMessage) GetFileLength() uint64 { - if x != nil && x.FileLength != nil { - return *x.FileLength - } - return 0 -} - -func (x *DocumentMessage) GetPageCount() uint32 { - if x != nil && x.PageCount != nil { - return *x.PageCount - } - return 0 -} - -func (x *DocumentMessage) GetMediaKey() []byte { - if x != nil { - return x.MediaKey - } - return nil -} - -func (x *DocumentMessage) GetFileName() string { - if x != nil && x.FileName != nil { - return *x.FileName - } - return "" -} - -func (x *DocumentMessage) GetFileEncSha256() []byte { - if x != nil { - return x.FileEncSha256 - } - return nil -} - -func (x *DocumentMessage) GetDirectPath() string { - if x != nil && x.DirectPath != nil { - return *x.DirectPath - } - return "" -} - -func (x *DocumentMessage) GetMediaKeyTimestamp() int64 { - if x != nil && x.MediaKeyTimestamp != nil { - return *x.MediaKeyTimestamp - } - return 0 -} - -func (x *DocumentMessage) GetContactVcard() bool { - if x != nil && x.ContactVcard != nil { - return *x.ContactVcard - } - return false -} - -func (x *DocumentMessage) GetThumbnailDirectPath() string { - if x != nil && x.ThumbnailDirectPath != nil { - return *x.ThumbnailDirectPath - } - return "" -} - -func (x *DocumentMessage) GetThumbnailSha256() []byte { - if x != nil { - return x.ThumbnailSha256 - } - return nil -} - -func (x *DocumentMessage) GetThumbnailEncSha256() []byte { - if x != nil { - return x.ThumbnailEncSha256 - } - return nil -} - -func (x *DocumentMessage) GetJpegThumbnail() []byte { - if x != nil { - return x.JpegThumbnail - } - return nil -} - -func (x *DocumentMessage) GetContextInfo() *ContextInfo { - if x != nil { - return x.ContextInfo - } - return nil -} - -func (x *DocumentMessage) GetThumbnailHeight() uint32 { - if x != nil && x.ThumbnailHeight != nil { - return *x.ThumbnailHeight - } - return 0 -} - -func (x *DocumentMessage) GetThumbnailWidth() uint32 { - if x != nil && x.ThumbnailWidth != nil { - return *x.ThumbnailWidth - } - return 0 -} - -type AudioMessage struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Url *string `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"` - Mimetype *string `protobuf:"bytes,2,opt,name=mimetype" json:"mimetype,omitempty"` - FileSha256 []byte `protobuf:"bytes,3,opt,name=fileSha256" json:"fileSha256,omitempty"` - FileLength *uint64 `protobuf:"varint,4,opt,name=fileLength" json:"fileLength,omitempty"` - Seconds *uint32 `protobuf:"varint,5,opt,name=seconds" json:"seconds,omitempty"` - Ptt *bool `protobuf:"varint,6,opt,name=ptt" json:"ptt,omitempty"` - MediaKey []byte `protobuf:"bytes,7,opt,name=mediaKey" json:"mediaKey,omitempty"` - FileEncSha256 []byte `protobuf:"bytes,8,opt,name=fileEncSha256" json:"fileEncSha256,omitempty"` - DirectPath *string `protobuf:"bytes,9,opt,name=directPath" json:"directPath,omitempty"` - MediaKeyTimestamp *int64 `protobuf:"varint,10,opt,name=mediaKeyTimestamp" json:"mediaKeyTimestamp,omitempty"` - ContextInfo *ContextInfo `protobuf:"bytes,17,opt,name=contextInfo" json:"contextInfo,omitempty"` - StreamingSidecar []byte `protobuf:"bytes,18,opt,name=streamingSidecar" json:"streamingSidecar,omitempty"` -} - -func (x *AudioMessage) Reset() { - *x = AudioMessage{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[24] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *AudioMessage) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AudioMessage) ProtoMessage() {} - -func (x *AudioMessage) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[24] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AudioMessage.ProtoReflect.Descriptor instead. -func (*AudioMessage) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{24} -} - -func (x *AudioMessage) GetUrl() string { - if x != nil && x.Url != nil { - return *x.Url - } - return "" -} - -func (x *AudioMessage) GetMimetype() string { - if x != nil && x.Mimetype != nil { - return *x.Mimetype - } - return "" -} - -func (x *AudioMessage) GetFileSha256() []byte { - if x != nil { - return x.FileSha256 - } - return nil -} - -func (x *AudioMessage) GetFileLength() uint64 { - if x != nil && x.FileLength != nil { - return *x.FileLength - } - return 0 -} - -func (x *AudioMessage) GetSeconds() uint32 { - if x != nil && x.Seconds != nil { - return *x.Seconds - } - return 0 -} - -func (x *AudioMessage) GetPtt() bool { - if x != nil && x.Ptt != nil { - return *x.Ptt - } - return false -} - -func (x *AudioMessage) GetMediaKey() []byte { - if x != nil { - return x.MediaKey - } - return nil -} - -func (x *AudioMessage) GetFileEncSha256() []byte { - if x != nil { - return x.FileEncSha256 - } - return nil -} - -func (x *AudioMessage) GetDirectPath() string { - if x != nil && x.DirectPath != nil { - return *x.DirectPath - } - return "" -} - -func (x *AudioMessage) GetMediaKeyTimestamp() int64 { - if x != nil && x.MediaKeyTimestamp != nil { - return *x.MediaKeyTimestamp - } - return 0 -} - -func (x *AudioMessage) GetContextInfo() *ContextInfo { - if x != nil { - return x.ContextInfo - } - return nil -} - -func (x *AudioMessage) GetStreamingSidecar() []byte { - if x != nil { - return x.StreamingSidecar - } - return nil -} - -type VideoMessage struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Url *string `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"` - Mimetype *string `protobuf:"bytes,2,opt,name=mimetype" json:"mimetype,omitempty"` - FileSha256 []byte `protobuf:"bytes,3,opt,name=fileSha256" json:"fileSha256,omitempty"` - FileLength *uint64 `protobuf:"varint,4,opt,name=fileLength" json:"fileLength,omitempty"` - Seconds *uint32 `protobuf:"varint,5,opt,name=seconds" json:"seconds,omitempty"` - MediaKey []byte `protobuf:"bytes,6,opt,name=mediaKey" json:"mediaKey,omitempty"` - Caption *string `protobuf:"bytes,7,opt,name=caption" json:"caption,omitempty"` - GifPlayback *bool `protobuf:"varint,8,opt,name=gifPlayback" json:"gifPlayback,omitempty"` - Height *uint32 `protobuf:"varint,9,opt,name=height" json:"height,omitempty"` - Width *uint32 `protobuf:"varint,10,opt,name=width" json:"width,omitempty"` - FileEncSha256 []byte `protobuf:"bytes,11,opt,name=fileEncSha256" json:"fileEncSha256,omitempty"` - InteractiveAnnotations []*InteractiveAnnotation `protobuf:"bytes,12,rep,name=interactiveAnnotations" json:"interactiveAnnotations,omitempty"` - DirectPath *string `protobuf:"bytes,13,opt,name=directPath" json:"directPath,omitempty"` - MediaKeyTimestamp *int64 `protobuf:"varint,14,opt,name=mediaKeyTimestamp" json:"mediaKeyTimestamp,omitempty"` - JpegThumbnail []byte `protobuf:"bytes,16,opt,name=jpegThumbnail" json:"jpegThumbnail,omitempty"` - ContextInfo *ContextInfo `protobuf:"bytes,17,opt,name=contextInfo" json:"contextInfo,omitempty"` - StreamingSidecar []byte `protobuf:"bytes,18,opt,name=streamingSidecar" json:"streamingSidecar,omitempty"` - GifAttribution *VideoMessage_VideoMessageAttribution `protobuf:"varint,19,opt,name=gifAttribution,enum=proto.VideoMessage_VideoMessageAttribution" json:"gifAttribution,omitempty"` - ViewOnce *bool `protobuf:"varint,20,opt,name=viewOnce" json:"viewOnce,omitempty"` - ThumbnailDirectPath *string `protobuf:"bytes,21,opt,name=thumbnailDirectPath" json:"thumbnailDirectPath,omitempty"` - ThumbnailSha256 []byte `protobuf:"bytes,22,opt,name=thumbnailSha256" json:"thumbnailSha256,omitempty"` - ThumbnailEncSha256 []byte `protobuf:"bytes,23,opt,name=thumbnailEncSha256" json:"thumbnailEncSha256,omitempty"` -} - -func (x *VideoMessage) Reset() { - *x = VideoMessage{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[25] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *VideoMessage) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*VideoMessage) ProtoMessage() {} - -func (x *VideoMessage) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[25] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use VideoMessage.ProtoReflect.Descriptor instead. -func (*VideoMessage) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{25} -} - -func (x *VideoMessage) GetUrl() string { - if x != nil && x.Url != nil { - return *x.Url - } - return "" -} - -func (x *VideoMessage) GetMimetype() string { - if x != nil && x.Mimetype != nil { - return *x.Mimetype - } - return "" -} - -func (x *VideoMessage) GetFileSha256() []byte { - if x != nil { - return x.FileSha256 - } - return nil -} - -func (x *VideoMessage) GetFileLength() uint64 { - if x != nil && x.FileLength != nil { - return *x.FileLength - } - return 0 -} - -func (x *VideoMessage) GetSeconds() uint32 { - if x != nil && x.Seconds != nil { - return *x.Seconds - } - return 0 -} - -func (x *VideoMessage) GetMediaKey() []byte { - if x != nil { - return x.MediaKey - } - return nil -} - -func (x *VideoMessage) GetCaption() string { - if x != nil && x.Caption != nil { - return *x.Caption - } - return "" -} - -func (x *VideoMessage) GetGifPlayback() bool { - if x != nil && x.GifPlayback != nil { - return *x.GifPlayback - } - return false -} - -func (x *VideoMessage) GetHeight() uint32 { - if x != nil && x.Height != nil { - return *x.Height - } - return 0 -} - -func (x *VideoMessage) GetWidth() uint32 { - if x != nil && x.Width != nil { - return *x.Width - } - return 0 -} - -func (x *VideoMessage) GetFileEncSha256() []byte { - if x != nil { - return x.FileEncSha256 - } - return nil -} - -func (x *VideoMessage) GetInteractiveAnnotations() []*InteractiveAnnotation { - if x != nil { - return x.InteractiveAnnotations - } - return nil -} - -func (x *VideoMessage) GetDirectPath() string { - if x != nil && x.DirectPath != nil { - return *x.DirectPath - } - return "" -} - -func (x *VideoMessage) GetMediaKeyTimestamp() int64 { - if x != nil && x.MediaKeyTimestamp != nil { - return *x.MediaKeyTimestamp - } - return 0 -} - -func (x *VideoMessage) GetJpegThumbnail() []byte { - if x != nil { - return x.JpegThumbnail - } - return nil -} - -func (x *VideoMessage) GetContextInfo() *ContextInfo { - if x != nil { - return x.ContextInfo - } - return nil -} - -func (x *VideoMessage) GetStreamingSidecar() []byte { - if x != nil { - return x.StreamingSidecar - } - return nil -} - -func (x *VideoMessage) GetGifAttribution() VideoMessage_VideoMessageAttribution { - if x != nil && x.GifAttribution != nil { - return *x.GifAttribution - } - return VideoMessage_NONE -} - -func (x *VideoMessage) GetViewOnce() bool { - if x != nil && x.ViewOnce != nil { - return *x.ViewOnce - } - return false -} - -func (x *VideoMessage) GetThumbnailDirectPath() string { - if x != nil && x.ThumbnailDirectPath != nil { - return *x.ThumbnailDirectPath - } - return "" -} - -func (x *VideoMessage) GetThumbnailSha256() []byte { - if x != nil { - return x.ThumbnailSha256 - } - return nil -} - -func (x *VideoMessage) GetThumbnailEncSha256() []byte { - if x != nil { - return x.ThumbnailEncSha256 - } - return nil -} - -type Call struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - CallKey []byte `protobuf:"bytes,1,opt,name=callKey" json:"callKey,omitempty"` -} - -func (x *Call) Reset() { - *x = Call{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[26] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Call) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Call) ProtoMessage() {} - -func (x *Call) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[26] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Call.ProtoReflect.Descriptor instead. -func (*Call) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{26} -} - -func (x *Call) GetCallKey() []byte { - if x != nil { - return x.CallKey - } - return nil -} - -type Chat struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - DisplayName *string `protobuf:"bytes,1,opt,name=displayName" json:"displayName,omitempty"` - Id *string `protobuf:"bytes,2,opt,name=id" json:"id,omitempty"` -} - -func (x *Chat) Reset() { - *x = Chat{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[27] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Chat) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Chat) ProtoMessage() {} - -func (x *Chat) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[27] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Chat.ProtoReflect.Descriptor instead. -func (*Chat) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{27} -} - -func (x *Chat) GetDisplayName() string { - if x != nil && x.DisplayName != nil { - return *x.DisplayName - } - return "" -} - -func (x *Chat) GetId() string { - if x != nil && x.Id != nil { - return *x.Id - } - return "" -} - -type ProtocolMessage struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Key *MessageKey `protobuf:"bytes,1,opt,name=key" json:"key,omitempty"` - Type *ProtocolMessage_ProtocolMessageType `protobuf:"varint,2,opt,name=type,enum=proto.ProtocolMessage_ProtocolMessageType" json:"type,omitempty"` - EphemeralExpiration *uint32 `protobuf:"varint,4,opt,name=ephemeralExpiration" json:"ephemeralExpiration,omitempty"` - EphemeralSettingTimestamp *int64 `protobuf:"varint,5,opt,name=ephemeralSettingTimestamp" json:"ephemeralSettingTimestamp,omitempty"` - HistorySyncNotification *HistorySyncNotification `protobuf:"bytes,6,opt,name=historySyncNotification" json:"historySyncNotification,omitempty"` - AppStateSyncKeyShare *AppStateSyncKeyShare `protobuf:"bytes,7,opt,name=appStateSyncKeyShare" json:"appStateSyncKeyShare,omitempty"` - AppStateSyncKeyRequest *AppStateSyncKeyRequest `protobuf:"bytes,8,opt,name=appStateSyncKeyRequest" json:"appStateSyncKeyRequest,omitempty"` - InitialSecurityNotificationSettingSync *InitialSecurityNotificationSettingSync `protobuf:"bytes,9,opt,name=initialSecurityNotificationSettingSync" json:"initialSecurityNotificationSettingSync,omitempty"` - AppStateFatalExceptionNotification *AppStateFatalExceptionNotification `protobuf:"bytes,10,opt,name=appStateFatalExceptionNotification" json:"appStateFatalExceptionNotification,omitempty"` -} - -func (x *ProtocolMessage) Reset() { - *x = ProtocolMessage{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[28] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ProtocolMessage) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ProtocolMessage) ProtoMessage() {} - -func (x *ProtocolMessage) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[28] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ProtocolMessage.ProtoReflect.Descriptor instead. -func (*ProtocolMessage) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{28} -} - -func (x *ProtocolMessage) GetKey() *MessageKey { - if x != nil { - return x.Key - } - return nil -} - -func (x *ProtocolMessage) GetType() ProtocolMessage_ProtocolMessageType { - if x != nil && x.Type != nil { - return *x.Type - } - return ProtocolMessage_REVOKE -} - -func (x *ProtocolMessage) GetEphemeralExpiration() uint32 { - if x != nil && x.EphemeralExpiration != nil { - return *x.EphemeralExpiration - } - return 0 -} - -func (x *ProtocolMessage) GetEphemeralSettingTimestamp() int64 { - if x != nil && x.EphemeralSettingTimestamp != nil { - return *x.EphemeralSettingTimestamp - } - return 0 -} - -func (x *ProtocolMessage) GetHistorySyncNotification() *HistorySyncNotification { - if x != nil { - return x.HistorySyncNotification - } - return nil -} - -func (x *ProtocolMessage) GetAppStateSyncKeyShare() *AppStateSyncKeyShare { - if x != nil { - return x.AppStateSyncKeyShare - } - return nil -} - -func (x *ProtocolMessage) GetAppStateSyncKeyRequest() *AppStateSyncKeyRequest { - if x != nil { - return x.AppStateSyncKeyRequest - } - return nil -} - -func (x *ProtocolMessage) GetInitialSecurityNotificationSettingSync() *InitialSecurityNotificationSettingSync { - if x != nil { - return x.InitialSecurityNotificationSettingSync - } - return nil -} - -func (x *ProtocolMessage) GetAppStateFatalExceptionNotification() *AppStateFatalExceptionNotification { - if x != nil { - return x.AppStateFatalExceptionNotification - } - return nil -} - -type HistorySyncNotification struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - FileSha256 []byte `protobuf:"bytes,1,opt,name=fileSha256" json:"fileSha256,omitempty"` - FileLength *uint64 `protobuf:"varint,2,opt,name=fileLength" json:"fileLength,omitempty"` - MediaKey []byte `protobuf:"bytes,3,opt,name=mediaKey" json:"mediaKey,omitempty"` - FileEncSha256 []byte `protobuf:"bytes,4,opt,name=fileEncSha256" json:"fileEncSha256,omitempty"` - DirectPath *string `protobuf:"bytes,5,opt,name=directPath" json:"directPath,omitempty"` - SyncType *HistorySyncNotification_HistorySyncNotificationHistorySyncType `protobuf:"varint,6,opt,name=syncType,enum=proto.HistorySyncNotification_HistorySyncNotificationHistorySyncType" json:"syncType,omitempty"` - ChunkOrder *uint32 `protobuf:"varint,7,opt,name=chunkOrder" json:"chunkOrder,omitempty"` - OriginalMessageId *string `protobuf:"bytes,8,opt,name=originalMessageId" json:"originalMessageId,omitempty"` -} - -func (x *HistorySyncNotification) Reset() { - *x = HistorySyncNotification{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[29] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *HistorySyncNotification) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*HistorySyncNotification) ProtoMessage() {} - -func (x *HistorySyncNotification) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[29] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use HistorySyncNotification.ProtoReflect.Descriptor instead. -func (*HistorySyncNotification) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{29} -} - -func (x *HistorySyncNotification) GetFileSha256() []byte { - if x != nil { - return x.FileSha256 - } - return nil -} - -func (x *HistorySyncNotification) GetFileLength() uint64 { - if x != nil && x.FileLength != nil { - return *x.FileLength - } - return 0 -} - -func (x *HistorySyncNotification) GetMediaKey() []byte { - if x != nil { - return x.MediaKey - } - return nil -} - -func (x *HistorySyncNotification) GetFileEncSha256() []byte { - if x != nil { - return x.FileEncSha256 - } - return nil -} - -func (x *HistorySyncNotification) GetDirectPath() string { - if x != nil && x.DirectPath != nil { - return *x.DirectPath - } - return "" -} - -func (x *HistorySyncNotification) GetSyncType() HistorySyncNotification_HistorySyncNotificationHistorySyncType { - if x != nil && x.SyncType != nil { - return *x.SyncType - } - return HistorySyncNotification_INITIAL_BOOTSTRAP -} - -func (x *HistorySyncNotification) GetChunkOrder() uint32 { - if x != nil && x.ChunkOrder != nil { - return *x.ChunkOrder - } - return 0 -} - -func (x *HistorySyncNotification) GetOriginalMessageId() string { - if x != nil && x.OriginalMessageId != nil { - return *x.OriginalMessageId - } - return "" -} - -type AppStateSyncKey struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - KeyId *AppStateSyncKeyId `protobuf:"bytes,1,opt,name=keyId" json:"keyId,omitempty"` - KeyData *AppStateSyncKeyData `protobuf:"bytes,2,opt,name=keyData" json:"keyData,omitempty"` -} - -func (x *AppStateSyncKey) Reset() { - *x = AppStateSyncKey{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[30] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *AppStateSyncKey) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AppStateSyncKey) ProtoMessage() {} - -func (x *AppStateSyncKey) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[30] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AppStateSyncKey.ProtoReflect.Descriptor instead. -func (*AppStateSyncKey) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{30} -} - -func (x *AppStateSyncKey) GetKeyId() *AppStateSyncKeyId { - if x != nil { - return x.KeyId - } - return nil -} - -func (x *AppStateSyncKey) GetKeyData() *AppStateSyncKeyData { - if x != nil { - return x.KeyData - } - return nil -} - -type AppStateSyncKeyId struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - KeyId []byte `protobuf:"bytes,1,opt,name=keyId" json:"keyId,omitempty"` -} - -func (x *AppStateSyncKeyId) Reset() { - *x = AppStateSyncKeyId{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[31] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *AppStateSyncKeyId) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AppStateSyncKeyId) ProtoMessage() {} - -func (x *AppStateSyncKeyId) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[31] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AppStateSyncKeyId.ProtoReflect.Descriptor instead. -func (*AppStateSyncKeyId) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{31} -} - -func (x *AppStateSyncKeyId) GetKeyId() []byte { - if x != nil { - return x.KeyId - } - return nil -} - -type AppStateSyncKeyFingerprint struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - RawId *uint32 `protobuf:"varint,1,opt,name=rawId" json:"rawId,omitempty"` - CurrentIndex *uint32 `protobuf:"varint,2,opt,name=currentIndex" json:"currentIndex,omitempty"` - DeviceIndexes []uint32 `protobuf:"varint,3,rep,packed,name=deviceIndexes" json:"deviceIndexes,omitempty"` -} - -func (x *AppStateSyncKeyFingerprint) Reset() { - *x = AppStateSyncKeyFingerprint{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[32] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *AppStateSyncKeyFingerprint) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AppStateSyncKeyFingerprint) ProtoMessage() {} - -func (x *AppStateSyncKeyFingerprint) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[32] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AppStateSyncKeyFingerprint.ProtoReflect.Descriptor instead. -func (*AppStateSyncKeyFingerprint) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{32} -} - -func (x *AppStateSyncKeyFingerprint) GetRawId() uint32 { - if x != nil && x.RawId != nil { - return *x.RawId - } - return 0 -} - -func (x *AppStateSyncKeyFingerprint) GetCurrentIndex() uint32 { - if x != nil && x.CurrentIndex != nil { - return *x.CurrentIndex - } - return 0 -} - -func (x *AppStateSyncKeyFingerprint) GetDeviceIndexes() []uint32 { - if x != nil { - return x.DeviceIndexes - } - return nil -} - -type AppStateSyncKeyData struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - KeyData []byte `protobuf:"bytes,1,opt,name=keyData" json:"keyData,omitempty"` - Fingerprint *AppStateSyncKeyFingerprint `protobuf:"bytes,2,opt,name=fingerprint" json:"fingerprint,omitempty"` - Timestamp *int64 `protobuf:"varint,3,opt,name=timestamp" json:"timestamp,omitempty"` -} - -func (x *AppStateSyncKeyData) Reset() { - *x = AppStateSyncKeyData{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[33] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *AppStateSyncKeyData) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AppStateSyncKeyData) ProtoMessage() {} - -func (x *AppStateSyncKeyData) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[33] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AppStateSyncKeyData.ProtoReflect.Descriptor instead. -func (*AppStateSyncKeyData) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{33} -} - -func (x *AppStateSyncKeyData) GetKeyData() []byte { - if x != nil { - return x.KeyData - } - return nil -} - -func (x *AppStateSyncKeyData) GetFingerprint() *AppStateSyncKeyFingerprint { - if x != nil { - return x.Fingerprint - } - return nil -} - -func (x *AppStateSyncKeyData) GetTimestamp() int64 { - if x != nil && x.Timestamp != nil { - return *x.Timestamp - } - return 0 -} - -type AppStateSyncKeyShare struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Keys []*AppStateSyncKey `protobuf:"bytes,1,rep,name=keys" json:"keys,omitempty"` -} - -func (x *AppStateSyncKeyShare) Reset() { - *x = AppStateSyncKeyShare{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[34] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *AppStateSyncKeyShare) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AppStateSyncKeyShare) ProtoMessage() {} - -func (x *AppStateSyncKeyShare) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[34] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AppStateSyncKeyShare.ProtoReflect.Descriptor instead. -func (*AppStateSyncKeyShare) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{34} -} - -func (x *AppStateSyncKeyShare) GetKeys() []*AppStateSyncKey { - if x != nil { - return x.Keys - } - return nil -} - -type AppStateSyncKeyRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - KeyIds []*AppStateSyncKeyId `protobuf:"bytes,1,rep,name=keyIds" json:"keyIds,omitempty"` -} - -func (x *AppStateSyncKeyRequest) Reset() { - *x = AppStateSyncKeyRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[35] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *AppStateSyncKeyRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AppStateSyncKeyRequest) ProtoMessage() {} - -func (x *AppStateSyncKeyRequest) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[35] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AppStateSyncKeyRequest.ProtoReflect.Descriptor instead. -func (*AppStateSyncKeyRequest) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{35} -} - -func (x *AppStateSyncKeyRequest) GetKeyIds() []*AppStateSyncKeyId { - if x != nil { - return x.KeyIds - } - return nil -} - -type AppStateFatalExceptionNotification struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - CollectionNames []string `protobuf:"bytes,1,rep,name=collectionNames" json:"collectionNames,omitempty"` - Timestamp *int64 `protobuf:"varint,2,opt,name=timestamp" json:"timestamp,omitempty"` -} - -func (x *AppStateFatalExceptionNotification) Reset() { - *x = AppStateFatalExceptionNotification{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[36] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *AppStateFatalExceptionNotification) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AppStateFatalExceptionNotification) ProtoMessage() {} - -func (x *AppStateFatalExceptionNotification) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[36] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AppStateFatalExceptionNotification.ProtoReflect.Descriptor instead. -func (*AppStateFatalExceptionNotification) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{36} -} - -func (x *AppStateFatalExceptionNotification) GetCollectionNames() []string { - if x != nil { - return x.CollectionNames - } - return nil -} - -func (x *AppStateFatalExceptionNotification) GetTimestamp() int64 { - if x != nil && x.Timestamp != nil { - return *x.Timestamp - } - return 0 -} - -type InitialSecurityNotificationSettingSync struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - SecurityNotificationEnabled *bool `protobuf:"varint,1,opt,name=securityNotificationEnabled" json:"securityNotificationEnabled,omitempty"` -} - -func (x *InitialSecurityNotificationSettingSync) Reset() { - *x = InitialSecurityNotificationSettingSync{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[37] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *InitialSecurityNotificationSettingSync) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*InitialSecurityNotificationSettingSync) ProtoMessage() {} - -func (x *InitialSecurityNotificationSettingSync) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[37] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use InitialSecurityNotificationSettingSync.ProtoReflect.Descriptor instead. -func (*InitialSecurityNotificationSettingSync) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{37} -} - -func (x *InitialSecurityNotificationSettingSync) GetSecurityNotificationEnabled() bool { - if x != nil && x.SecurityNotificationEnabled != nil { - return *x.SecurityNotificationEnabled - } - return false -} - -type ContactsArrayMessage struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - DisplayName *string `protobuf:"bytes,1,opt,name=displayName" json:"displayName,omitempty"` - Contacts []*ContactMessage `protobuf:"bytes,2,rep,name=contacts" json:"contacts,omitempty"` - ContextInfo *ContextInfo `protobuf:"bytes,17,opt,name=contextInfo" json:"contextInfo,omitempty"` -} - -func (x *ContactsArrayMessage) Reset() { - *x = ContactsArrayMessage{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[38] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ContactsArrayMessage) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ContactsArrayMessage) ProtoMessage() {} - -func (x *ContactsArrayMessage) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[38] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ContactsArrayMessage.ProtoReflect.Descriptor instead. -func (*ContactsArrayMessage) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{38} -} - -func (x *ContactsArrayMessage) GetDisplayName() string { - if x != nil && x.DisplayName != nil { - return *x.DisplayName - } - return "" -} - -func (x *ContactsArrayMessage) GetContacts() []*ContactMessage { - if x != nil { - return x.Contacts - } - return nil -} - -func (x *ContactsArrayMessage) GetContextInfo() *ContextInfo { - if x != nil { - return x.ContextInfo - } - return nil -} - -type HSMCurrency struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - CurrencyCode *string `protobuf:"bytes,1,opt,name=currencyCode" json:"currencyCode,omitempty"` - Amount1000 *int64 `protobuf:"varint,2,opt,name=amount1000" json:"amount1000,omitempty"` -} - -func (x *HSMCurrency) Reset() { - *x = HSMCurrency{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[39] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *HSMCurrency) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*HSMCurrency) ProtoMessage() {} - -func (x *HSMCurrency) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[39] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use HSMCurrency.ProtoReflect.Descriptor instead. -func (*HSMCurrency) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{39} -} - -func (x *HSMCurrency) GetCurrencyCode() string { - if x != nil && x.CurrencyCode != nil { - return *x.CurrencyCode - } - return "" -} - -func (x *HSMCurrency) GetAmount1000() int64 { - if x != nil && x.Amount1000 != nil { - return *x.Amount1000 - } - return 0 -} - -type HSMDateTimeComponent struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - DayOfWeek *HSMDateTimeComponent_HSMDateTimeComponentDayOfWeekType `protobuf:"varint,1,opt,name=dayOfWeek,enum=proto.HSMDateTimeComponent_HSMDateTimeComponentDayOfWeekType" json:"dayOfWeek,omitempty"` - Year *uint32 `protobuf:"varint,2,opt,name=year" json:"year,omitempty"` - Month *uint32 `protobuf:"varint,3,opt,name=month" json:"month,omitempty"` - DayOfMonth *uint32 `protobuf:"varint,4,opt,name=dayOfMonth" json:"dayOfMonth,omitempty"` - Hour *uint32 `protobuf:"varint,5,opt,name=hour" json:"hour,omitempty"` - Minute *uint32 `protobuf:"varint,6,opt,name=minute" json:"minute,omitempty"` - Calendar *HSMDateTimeComponent_HSMDateTimeComponentCalendarType `protobuf:"varint,7,opt,name=calendar,enum=proto.HSMDateTimeComponent_HSMDateTimeComponentCalendarType" json:"calendar,omitempty"` -} - -func (x *HSMDateTimeComponent) Reset() { - *x = HSMDateTimeComponent{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[40] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *HSMDateTimeComponent) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*HSMDateTimeComponent) ProtoMessage() {} - -func (x *HSMDateTimeComponent) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[40] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use HSMDateTimeComponent.ProtoReflect.Descriptor instead. -func (*HSMDateTimeComponent) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{40} -} - -func (x *HSMDateTimeComponent) GetDayOfWeek() HSMDateTimeComponent_HSMDateTimeComponentDayOfWeekType { - if x != nil && x.DayOfWeek != nil { - return *x.DayOfWeek - } - return HSMDateTimeComponent_MONDAY -} - -func (x *HSMDateTimeComponent) GetYear() uint32 { - if x != nil && x.Year != nil { - return *x.Year - } - return 0 -} - -func (x *HSMDateTimeComponent) GetMonth() uint32 { - if x != nil && x.Month != nil { - return *x.Month - } - return 0 -} - -func (x *HSMDateTimeComponent) GetDayOfMonth() uint32 { - if x != nil && x.DayOfMonth != nil { - return *x.DayOfMonth - } - return 0 -} - -func (x *HSMDateTimeComponent) GetHour() uint32 { - if x != nil && x.Hour != nil { - return *x.Hour - } - return 0 -} - -func (x *HSMDateTimeComponent) GetMinute() uint32 { - if x != nil && x.Minute != nil { - return *x.Minute - } - return 0 -} - -func (x *HSMDateTimeComponent) GetCalendar() HSMDateTimeComponent_HSMDateTimeComponentCalendarType { - if x != nil && x.Calendar != nil { - return *x.Calendar - } - return HSMDateTimeComponent_GREGORIAN -} - -type HSMDateTimeUnixEpoch struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Timestamp *int64 `protobuf:"varint,1,opt,name=timestamp" json:"timestamp,omitempty"` -} - -func (x *HSMDateTimeUnixEpoch) Reset() { - *x = HSMDateTimeUnixEpoch{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[41] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *HSMDateTimeUnixEpoch) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*HSMDateTimeUnixEpoch) ProtoMessage() {} - -func (x *HSMDateTimeUnixEpoch) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[41] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use HSMDateTimeUnixEpoch.ProtoReflect.Descriptor instead. -func (*HSMDateTimeUnixEpoch) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{41} -} - -func (x *HSMDateTimeUnixEpoch) GetTimestamp() int64 { - if x != nil && x.Timestamp != nil { - return *x.Timestamp - } - return 0 -} - -type HSMDateTime struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to DatetimeOneof: - // *HSMDateTime_Component - // *HSMDateTime_UnixEpoch - DatetimeOneof isHSMDateTime_DatetimeOneof `protobuf_oneof:"datetimeOneof"` -} - -func (x *HSMDateTime) Reset() { - *x = HSMDateTime{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[42] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *HSMDateTime) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*HSMDateTime) ProtoMessage() {} - -func (x *HSMDateTime) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[42] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use HSMDateTime.ProtoReflect.Descriptor instead. -func (*HSMDateTime) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{42} -} - -func (m *HSMDateTime) GetDatetimeOneof() isHSMDateTime_DatetimeOneof { - if m != nil { - return m.DatetimeOneof - } - return nil -} - -func (x *HSMDateTime) GetComponent() *HSMDateTimeComponent { - if x, ok := x.GetDatetimeOneof().(*HSMDateTime_Component); ok { - return x.Component - } - return nil -} - -func (x *HSMDateTime) GetUnixEpoch() *HSMDateTimeUnixEpoch { - if x, ok := x.GetDatetimeOneof().(*HSMDateTime_UnixEpoch); ok { - return x.UnixEpoch - } - return nil -} - -type isHSMDateTime_DatetimeOneof interface { - isHSMDateTime_DatetimeOneof() -} - -type HSMDateTime_Component struct { - Component *HSMDateTimeComponent `protobuf:"bytes,1,opt,name=component,oneof"` -} - -type HSMDateTime_UnixEpoch struct { - UnixEpoch *HSMDateTimeUnixEpoch `protobuf:"bytes,2,opt,name=unixEpoch,oneof"` -} - -func (*HSMDateTime_Component) isHSMDateTime_DatetimeOneof() {} - -func (*HSMDateTime_UnixEpoch) isHSMDateTime_DatetimeOneof() {} - -type HSMLocalizableParameter struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Default *string `protobuf:"bytes,1,opt,name=default" json:"default,omitempty"` - // Types that are assignable to ParamOneof: - // *HSMLocalizableParameter_Currency - // *HSMLocalizableParameter_DateTime - ParamOneof isHSMLocalizableParameter_ParamOneof `protobuf_oneof:"paramOneof"` -} - -func (x *HSMLocalizableParameter) Reset() { - *x = HSMLocalizableParameter{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[43] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *HSMLocalizableParameter) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*HSMLocalizableParameter) ProtoMessage() {} - -func (x *HSMLocalizableParameter) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[43] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use HSMLocalizableParameter.ProtoReflect.Descriptor instead. -func (*HSMLocalizableParameter) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{43} -} - -func (x *HSMLocalizableParameter) GetDefault() string { - if x != nil && x.Default != nil { - return *x.Default - } - return "" -} - -func (m *HSMLocalizableParameter) GetParamOneof() isHSMLocalizableParameter_ParamOneof { - if m != nil { - return m.ParamOneof - } - return nil -} - -func (x *HSMLocalizableParameter) GetCurrency() *HSMCurrency { - if x, ok := x.GetParamOneof().(*HSMLocalizableParameter_Currency); ok { - return x.Currency - } - return nil -} - -func (x *HSMLocalizableParameter) GetDateTime() *HSMDateTime { - if x, ok := x.GetParamOneof().(*HSMLocalizableParameter_DateTime); ok { - return x.DateTime - } - return nil -} - -type isHSMLocalizableParameter_ParamOneof interface { - isHSMLocalizableParameter_ParamOneof() -} - -type HSMLocalizableParameter_Currency struct { - Currency *HSMCurrency `protobuf:"bytes,2,opt,name=currency,oneof"` -} - -type HSMLocalizableParameter_DateTime struct { - DateTime *HSMDateTime `protobuf:"bytes,3,opt,name=dateTime,oneof"` -} - -func (*HSMLocalizableParameter_Currency) isHSMLocalizableParameter_ParamOneof() {} - -func (*HSMLocalizableParameter_DateTime) isHSMLocalizableParameter_ParamOneof() {} - -type HighlyStructuredMessage struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Namespace *string `protobuf:"bytes,1,opt,name=namespace" json:"namespace,omitempty"` - ElementName *string `protobuf:"bytes,2,opt,name=elementName" json:"elementName,omitempty"` - Params []string `protobuf:"bytes,3,rep,name=params" json:"params,omitempty"` - FallbackLg *string `protobuf:"bytes,4,opt,name=fallbackLg" json:"fallbackLg,omitempty"` - FallbackLc *string `protobuf:"bytes,5,opt,name=fallbackLc" json:"fallbackLc,omitempty"` - LocalizableParams []*HSMLocalizableParameter `protobuf:"bytes,6,rep,name=localizableParams" json:"localizableParams,omitempty"` - DeterministicLg *string `protobuf:"bytes,7,opt,name=deterministicLg" json:"deterministicLg,omitempty"` - DeterministicLc *string `protobuf:"bytes,8,opt,name=deterministicLc" json:"deterministicLc,omitempty"` - HydratedHsm *TemplateMessage `protobuf:"bytes,9,opt,name=hydratedHsm" json:"hydratedHsm,omitempty"` -} - -func (x *HighlyStructuredMessage) Reset() { - *x = HighlyStructuredMessage{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[44] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *HighlyStructuredMessage) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*HighlyStructuredMessage) ProtoMessage() {} - -func (x *HighlyStructuredMessage) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[44] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use HighlyStructuredMessage.ProtoReflect.Descriptor instead. -func (*HighlyStructuredMessage) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{44} -} - -func (x *HighlyStructuredMessage) GetNamespace() string { - if x != nil && x.Namespace != nil { - return *x.Namespace - } - return "" -} - -func (x *HighlyStructuredMessage) GetElementName() string { - if x != nil && x.ElementName != nil { - return *x.ElementName - } - return "" -} - -func (x *HighlyStructuredMessage) GetParams() []string { - if x != nil { - return x.Params - } - return nil -} - -func (x *HighlyStructuredMessage) GetFallbackLg() string { - if x != nil && x.FallbackLg != nil { - return *x.FallbackLg - } - return "" -} - -func (x *HighlyStructuredMessage) GetFallbackLc() string { - if x != nil && x.FallbackLc != nil { - return *x.FallbackLc - } - return "" -} - -func (x *HighlyStructuredMessage) GetLocalizableParams() []*HSMLocalizableParameter { - if x != nil { - return x.LocalizableParams - } - return nil -} - -func (x *HighlyStructuredMessage) GetDeterministicLg() string { - if x != nil && x.DeterministicLg != nil { - return *x.DeterministicLg - } - return "" -} - -func (x *HighlyStructuredMessage) GetDeterministicLc() string { - if x != nil && x.DeterministicLc != nil { - return *x.DeterministicLc - } - return "" -} - -func (x *HighlyStructuredMessage) GetHydratedHsm() *TemplateMessage { - if x != nil { - return x.HydratedHsm - } - return nil -} - -type SendPaymentMessage struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - NoteMessage *Message `protobuf:"bytes,2,opt,name=noteMessage" json:"noteMessage,omitempty"` - RequestMessageKey *MessageKey `protobuf:"bytes,3,opt,name=requestMessageKey" json:"requestMessageKey,omitempty"` -} - -func (x *SendPaymentMessage) Reset() { - *x = SendPaymentMessage{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[45] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SendPaymentMessage) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SendPaymentMessage) ProtoMessage() {} - -func (x *SendPaymentMessage) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[45] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SendPaymentMessage.ProtoReflect.Descriptor instead. -func (*SendPaymentMessage) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{45} -} - -func (x *SendPaymentMessage) GetNoteMessage() *Message { - if x != nil { - return x.NoteMessage - } - return nil -} - -func (x *SendPaymentMessage) GetRequestMessageKey() *MessageKey { - if x != nil { - return x.RequestMessageKey - } - return nil -} - -type RequestPaymentMessage struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - NoteMessage *Message `protobuf:"bytes,4,opt,name=noteMessage" json:"noteMessage,omitempty"` - CurrencyCodeIso4217 *string `protobuf:"bytes,1,opt,name=currencyCodeIso4217" json:"currencyCodeIso4217,omitempty"` - Amount1000 *uint64 `protobuf:"varint,2,opt,name=amount1000" json:"amount1000,omitempty"` - RequestFrom *string `protobuf:"bytes,3,opt,name=requestFrom" json:"requestFrom,omitempty"` - ExpiryTimestamp *int64 `protobuf:"varint,5,opt,name=expiryTimestamp" json:"expiryTimestamp,omitempty"` - Amount *PaymentMoney `protobuf:"bytes,6,opt,name=amount" json:"amount,omitempty"` -} - -func (x *RequestPaymentMessage) Reset() { - *x = RequestPaymentMessage{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[46] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *RequestPaymentMessage) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RequestPaymentMessage) ProtoMessage() {} - -func (x *RequestPaymentMessage) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[46] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use RequestPaymentMessage.ProtoReflect.Descriptor instead. -func (*RequestPaymentMessage) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{46} -} - -func (x *RequestPaymentMessage) GetNoteMessage() *Message { - if x != nil { - return x.NoteMessage - } - return nil -} - -func (x *RequestPaymentMessage) GetCurrencyCodeIso4217() string { - if x != nil && x.CurrencyCodeIso4217 != nil { - return *x.CurrencyCodeIso4217 - } - return "" -} - -func (x *RequestPaymentMessage) GetAmount1000() uint64 { - if x != nil && x.Amount1000 != nil { - return *x.Amount1000 - } - return 0 -} - -func (x *RequestPaymentMessage) GetRequestFrom() string { - if x != nil && x.RequestFrom != nil { - return *x.RequestFrom - } - return "" -} - -func (x *RequestPaymentMessage) GetExpiryTimestamp() int64 { - if x != nil && x.ExpiryTimestamp != nil { - return *x.ExpiryTimestamp - } - return 0 -} - -func (x *RequestPaymentMessage) GetAmount() *PaymentMoney { - if x != nil { - return x.Amount - } - return nil -} - -type DeclinePaymentRequestMessage struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Key *MessageKey `protobuf:"bytes,1,opt,name=key" json:"key,omitempty"` -} - -func (x *DeclinePaymentRequestMessage) Reset() { - *x = DeclinePaymentRequestMessage{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[47] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *DeclinePaymentRequestMessage) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeclinePaymentRequestMessage) ProtoMessage() {} - -func (x *DeclinePaymentRequestMessage) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[47] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeclinePaymentRequestMessage.ProtoReflect.Descriptor instead. -func (*DeclinePaymentRequestMessage) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{47} -} - -func (x *DeclinePaymentRequestMessage) GetKey() *MessageKey { - if x != nil { - return x.Key - } - return nil -} - -type CancelPaymentRequestMessage struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Key *MessageKey `protobuf:"bytes,1,opt,name=key" json:"key,omitempty"` -} - -func (x *CancelPaymentRequestMessage) Reset() { - *x = CancelPaymentRequestMessage{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[48] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *CancelPaymentRequestMessage) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CancelPaymentRequestMessage) ProtoMessage() {} - -func (x *CancelPaymentRequestMessage) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[48] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CancelPaymentRequestMessage.ProtoReflect.Descriptor instead. -func (*CancelPaymentRequestMessage) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{48} -} - -func (x *CancelPaymentRequestMessage) GetKey() *MessageKey { - if x != nil { - return x.Key - } - return nil -} - -type LiveLocationMessage struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - DegreesLatitude *float64 `protobuf:"fixed64,1,opt,name=degreesLatitude" json:"degreesLatitude,omitempty"` - DegreesLongitude *float64 `protobuf:"fixed64,2,opt,name=degreesLongitude" json:"degreesLongitude,omitempty"` - AccuracyInMeters *uint32 `protobuf:"varint,3,opt,name=accuracyInMeters" json:"accuracyInMeters,omitempty"` - SpeedInMps *float32 `protobuf:"fixed32,4,opt,name=speedInMps" json:"speedInMps,omitempty"` - DegreesClockwiseFromMagneticNorth *uint32 `protobuf:"varint,5,opt,name=degreesClockwiseFromMagneticNorth" json:"degreesClockwiseFromMagneticNorth,omitempty"` - Caption *string `protobuf:"bytes,6,opt,name=caption" json:"caption,omitempty"` - SequenceNumber *int64 `protobuf:"varint,7,opt,name=sequenceNumber" json:"sequenceNumber,omitempty"` - TimeOffset *uint32 `protobuf:"varint,8,opt,name=timeOffset" json:"timeOffset,omitempty"` - JpegThumbnail []byte `protobuf:"bytes,16,opt,name=jpegThumbnail" json:"jpegThumbnail,omitempty"` - ContextInfo *ContextInfo `protobuf:"bytes,17,opt,name=contextInfo" json:"contextInfo,omitempty"` -} - -func (x *LiveLocationMessage) Reset() { - *x = LiveLocationMessage{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[49] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *LiveLocationMessage) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*LiveLocationMessage) ProtoMessage() {} - -func (x *LiveLocationMessage) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[49] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use LiveLocationMessage.ProtoReflect.Descriptor instead. -func (*LiveLocationMessage) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{49} -} - -func (x *LiveLocationMessage) GetDegreesLatitude() float64 { - if x != nil && x.DegreesLatitude != nil { - return *x.DegreesLatitude - } - return 0 -} - -func (x *LiveLocationMessage) GetDegreesLongitude() float64 { - if x != nil && x.DegreesLongitude != nil { - return *x.DegreesLongitude - } - return 0 -} - -func (x *LiveLocationMessage) GetAccuracyInMeters() uint32 { - if x != nil && x.AccuracyInMeters != nil { - return *x.AccuracyInMeters - } - return 0 -} - -func (x *LiveLocationMessage) GetSpeedInMps() float32 { - if x != nil && x.SpeedInMps != nil { - return *x.SpeedInMps - } - return 0 -} - -func (x *LiveLocationMessage) GetDegreesClockwiseFromMagneticNorth() uint32 { - if x != nil && x.DegreesClockwiseFromMagneticNorth != nil { - return *x.DegreesClockwiseFromMagneticNorth - } - return 0 -} - -func (x *LiveLocationMessage) GetCaption() string { - if x != nil && x.Caption != nil { - return *x.Caption - } - return "" -} - -func (x *LiveLocationMessage) GetSequenceNumber() int64 { - if x != nil && x.SequenceNumber != nil { - return *x.SequenceNumber - } - return 0 -} - -func (x *LiveLocationMessage) GetTimeOffset() uint32 { - if x != nil && x.TimeOffset != nil { - return *x.TimeOffset - } - return 0 -} - -func (x *LiveLocationMessage) GetJpegThumbnail() []byte { - if x != nil { - return x.JpegThumbnail - } - return nil -} - -func (x *LiveLocationMessage) GetContextInfo() *ContextInfo { - if x != nil { - return x.ContextInfo - } - return nil -} - -type StickerMessage struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Url *string `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"` - FileSha256 []byte `protobuf:"bytes,2,opt,name=fileSha256" json:"fileSha256,omitempty"` - FileEncSha256 []byte `protobuf:"bytes,3,opt,name=fileEncSha256" json:"fileEncSha256,omitempty"` - MediaKey []byte `protobuf:"bytes,4,opt,name=mediaKey" json:"mediaKey,omitempty"` - Mimetype *string `protobuf:"bytes,5,opt,name=mimetype" json:"mimetype,omitempty"` - Height *uint32 `protobuf:"varint,6,opt,name=height" json:"height,omitempty"` - Width *uint32 `protobuf:"varint,7,opt,name=width" json:"width,omitempty"` - DirectPath *string `protobuf:"bytes,8,opt,name=directPath" json:"directPath,omitempty"` - FileLength *uint64 `protobuf:"varint,9,opt,name=fileLength" json:"fileLength,omitempty"` - MediaKeyTimestamp *int64 `protobuf:"varint,10,opt,name=mediaKeyTimestamp" json:"mediaKeyTimestamp,omitempty"` - FirstFrameLength *uint32 `protobuf:"varint,11,opt,name=firstFrameLength" json:"firstFrameLength,omitempty"` - FirstFrameSidecar []byte `protobuf:"bytes,12,opt,name=firstFrameSidecar" json:"firstFrameSidecar,omitempty"` - IsAnimated *bool `protobuf:"varint,13,opt,name=isAnimated" json:"isAnimated,omitempty"` - PngThumbnail []byte `protobuf:"bytes,16,opt,name=pngThumbnail" json:"pngThumbnail,omitempty"` - ContextInfo *ContextInfo `protobuf:"bytes,17,opt,name=contextInfo" json:"contextInfo,omitempty"` -} - -func (x *StickerMessage) Reset() { - *x = StickerMessage{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[50] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *StickerMessage) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*StickerMessage) ProtoMessage() {} - -func (x *StickerMessage) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[50] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use StickerMessage.ProtoReflect.Descriptor instead. -func (*StickerMessage) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{50} -} - -func (x *StickerMessage) GetUrl() string { - if x != nil && x.Url != nil { - return *x.Url - } - return "" -} - -func (x *StickerMessage) GetFileSha256() []byte { - if x != nil { - return x.FileSha256 - } - return nil -} - -func (x *StickerMessage) GetFileEncSha256() []byte { - if x != nil { - return x.FileEncSha256 - } - return nil -} - -func (x *StickerMessage) GetMediaKey() []byte { - if x != nil { - return x.MediaKey - } - return nil -} - -func (x *StickerMessage) GetMimetype() string { - if x != nil && x.Mimetype != nil { - return *x.Mimetype - } - return "" -} - -func (x *StickerMessage) GetHeight() uint32 { - if x != nil && x.Height != nil { - return *x.Height - } - return 0 -} - -func (x *StickerMessage) GetWidth() uint32 { - if x != nil && x.Width != nil { - return *x.Width - } - return 0 -} - -func (x *StickerMessage) GetDirectPath() string { - if x != nil && x.DirectPath != nil { - return *x.DirectPath - } - return "" -} - -func (x *StickerMessage) GetFileLength() uint64 { - if x != nil && x.FileLength != nil { - return *x.FileLength - } - return 0 -} - -func (x *StickerMessage) GetMediaKeyTimestamp() int64 { - if x != nil && x.MediaKeyTimestamp != nil { - return *x.MediaKeyTimestamp - } - return 0 -} - -func (x *StickerMessage) GetFirstFrameLength() uint32 { - if x != nil && x.FirstFrameLength != nil { - return *x.FirstFrameLength - } - return 0 -} - -func (x *StickerMessage) GetFirstFrameSidecar() []byte { - if x != nil { - return x.FirstFrameSidecar - } - return nil -} - -func (x *StickerMessage) GetIsAnimated() bool { - if x != nil && x.IsAnimated != nil { - return *x.IsAnimated - } - return false -} - -func (x *StickerMessage) GetPngThumbnail() []byte { - if x != nil { - return x.PngThumbnail - } - return nil -} - -func (x *StickerMessage) GetContextInfo() *ContextInfo { - if x != nil { - return x.ContextInfo - } - return nil -} - -type FourRowTemplate struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Content *HighlyStructuredMessage `protobuf:"bytes,6,opt,name=content" json:"content,omitempty"` - Footer *HighlyStructuredMessage `protobuf:"bytes,7,opt,name=footer" json:"footer,omitempty"` - Buttons []*TemplateButton `protobuf:"bytes,8,rep,name=buttons" json:"buttons,omitempty"` - // Types that are assignable to Title: - // *FourRowTemplate_DocumentMessage - // *FourRowTemplate_HighlyStructuredMessage - // *FourRowTemplate_ImageMessage - // *FourRowTemplate_VideoMessage - // *FourRowTemplate_LocationMessage - Title isFourRowTemplate_Title `protobuf_oneof:"title"` -} - -func (x *FourRowTemplate) Reset() { - *x = FourRowTemplate{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[51] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *FourRowTemplate) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*FourRowTemplate) ProtoMessage() {} - -func (x *FourRowTemplate) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[51] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use FourRowTemplate.ProtoReflect.Descriptor instead. -func (*FourRowTemplate) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{51} -} - -func (x *FourRowTemplate) GetContent() *HighlyStructuredMessage { - if x != nil { - return x.Content - } - return nil -} - -func (x *FourRowTemplate) GetFooter() *HighlyStructuredMessage { - if x != nil { - return x.Footer - } - return nil -} - -func (x *FourRowTemplate) GetButtons() []*TemplateButton { - if x != nil { - return x.Buttons - } - return nil -} - -func (m *FourRowTemplate) GetTitle() isFourRowTemplate_Title { - if m != nil { - return m.Title - } - return nil -} - -func (x *FourRowTemplate) GetDocumentMessage() *DocumentMessage { - if x, ok := x.GetTitle().(*FourRowTemplate_DocumentMessage); ok { - return x.DocumentMessage - } - return nil -} - -func (x *FourRowTemplate) GetHighlyStructuredMessage() *HighlyStructuredMessage { - if x, ok := x.GetTitle().(*FourRowTemplate_HighlyStructuredMessage); ok { - return x.HighlyStructuredMessage - } - return nil -} - -func (x *FourRowTemplate) GetImageMessage() *ImageMessage { - if x, ok := x.GetTitle().(*FourRowTemplate_ImageMessage); ok { - return x.ImageMessage - } - return nil -} - -func (x *FourRowTemplate) GetVideoMessage() *VideoMessage { - if x, ok := x.GetTitle().(*FourRowTemplate_VideoMessage); ok { - return x.VideoMessage - } - return nil -} - -func (x *FourRowTemplate) GetLocationMessage() *LocationMessage { - if x, ok := x.GetTitle().(*FourRowTemplate_LocationMessage); ok { - return x.LocationMessage - } - return nil -} - -type isFourRowTemplate_Title interface { - isFourRowTemplate_Title() -} - -type FourRowTemplate_DocumentMessage struct { - DocumentMessage *DocumentMessage `protobuf:"bytes,1,opt,name=documentMessage,oneof"` -} - -type FourRowTemplate_HighlyStructuredMessage struct { - HighlyStructuredMessage *HighlyStructuredMessage `protobuf:"bytes,2,opt,name=highlyStructuredMessage,oneof"` -} - -type FourRowTemplate_ImageMessage struct { - ImageMessage *ImageMessage `protobuf:"bytes,3,opt,name=imageMessage,oneof"` -} - -type FourRowTemplate_VideoMessage struct { - VideoMessage *VideoMessage `protobuf:"bytes,4,opt,name=videoMessage,oneof"` -} - -type FourRowTemplate_LocationMessage struct { - LocationMessage *LocationMessage `protobuf:"bytes,5,opt,name=locationMessage,oneof"` -} - -func (*FourRowTemplate_DocumentMessage) isFourRowTemplate_Title() {} - -func (*FourRowTemplate_HighlyStructuredMessage) isFourRowTemplate_Title() {} - -func (*FourRowTemplate_ImageMessage) isFourRowTemplate_Title() {} - -func (*FourRowTemplate_VideoMessage) isFourRowTemplate_Title() {} - -func (*FourRowTemplate_LocationMessage) isFourRowTemplate_Title() {} - -type HydratedFourRowTemplate struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - HydratedContentText *string `protobuf:"bytes,6,opt,name=hydratedContentText" json:"hydratedContentText,omitempty"` - HydratedFooterText *string `protobuf:"bytes,7,opt,name=hydratedFooterText" json:"hydratedFooterText,omitempty"` - HydratedButtons []*HydratedTemplateButton `protobuf:"bytes,8,rep,name=hydratedButtons" json:"hydratedButtons,omitempty"` - TemplateId *string `protobuf:"bytes,9,opt,name=templateId" json:"templateId,omitempty"` - // Types that are assignable to Title: - // *HydratedFourRowTemplate_DocumentMessage - // *HydratedFourRowTemplate_HydratedTitleText - // *HydratedFourRowTemplate_ImageMessage - // *HydratedFourRowTemplate_VideoMessage - // *HydratedFourRowTemplate_LocationMessage - Title isHydratedFourRowTemplate_Title `protobuf_oneof:"title"` -} - -func (x *HydratedFourRowTemplate) Reset() { - *x = HydratedFourRowTemplate{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[52] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *HydratedFourRowTemplate) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*HydratedFourRowTemplate) ProtoMessage() {} - -func (x *HydratedFourRowTemplate) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[52] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use HydratedFourRowTemplate.ProtoReflect.Descriptor instead. -func (*HydratedFourRowTemplate) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{52} -} - -func (x *HydratedFourRowTemplate) GetHydratedContentText() string { - if x != nil && x.HydratedContentText != nil { - return *x.HydratedContentText - } - return "" -} - -func (x *HydratedFourRowTemplate) GetHydratedFooterText() string { - if x != nil && x.HydratedFooterText != nil { - return *x.HydratedFooterText - } - return "" -} - -func (x *HydratedFourRowTemplate) GetHydratedButtons() []*HydratedTemplateButton { - if x != nil { - return x.HydratedButtons - } - return nil -} - -func (x *HydratedFourRowTemplate) GetTemplateId() string { - if x != nil && x.TemplateId != nil { - return *x.TemplateId - } - return "" -} - -func (m *HydratedFourRowTemplate) GetTitle() isHydratedFourRowTemplate_Title { - if m != nil { - return m.Title - } - return nil -} - -func (x *HydratedFourRowTemplate) GetDocumentMessage() *DocumentMessage { - if x, ok := x.GetTitle().(*HydratedFourRowTemplate_DocumentMessage); ok { - return x.DocumentMessage - } - return nil -} - -func (x *HydratedFourRowTemplate) GetHydratedTitleText() string { - if x, ok := x.GetTitle().(*HydratedFourRowTemplate_HydratedTitleText); ok { - return x.HydratedTitleText - } - return "" -} - -func (x *HydratedFourRowTemplate) GetImageMessage() *ImageMessage { - if x, ok := x.GetTitle().(*HydratedFourRowTemplate_ImageMessage); ok { - return x.ImageMessage - } - return nil -} - -func (x *HydratedFourRowTemplate) GetVideoMessage() *VideoMessage { - if x, ok := x.GetTitle().(*HydratedFourRowTemplate_VideoMessage); ok { - return x.VideoMessage - } - return nil -} - -func (x *HydratedFourRowTemplate) GetLocationMessage() *LocationMessage { - if x, ok := x.GetTitle().(*HydratedFourRowTemplate_LocationMessage); ok { - return x.LocationMessage - } - return nil -} - -type isHydratedFourRowTemplate_Title interface { - isHydratedFourRowTemplate_Title() -} - -type HydratedFourRowTemplate_DocumentMessage struct { - DocumentMessage *DocumentMessage `protobuf:"bytes,1,opt,name=documentMessage,oneof"` -} - -type HydratedFourRowTemplate_HydratedTitleText struct { - HydratedTitleText string `protobuf:"bytes,2,opt,name=hydratedTitleText,oneof"` -} - -type HydratedFourRowTemplate_ImageMessage struct { - ImageMessage *ImageMessage `protobuf:"bytes,3,opt,name=imageMessage,oneof"` -} - -type HydratedFourRowTemplate_VideoMessage struct { - VideoMessage *VideoMessage `protobuf:"bytes,4,opt,name=videoMessage,oneof"` -} - -type HydratedFourRowTemplate_LocationMessage struct { - LocationMessage *LocationMessage `protobuf:"bytes,5,opt,name=locationMessage,oneof"` -} - -func (*HydratedFourRowTemplate_DocumentMessage) isHydratedFourRowTemplate_Title() {} - -func (*HydratedFourRowTemplate_HydratedTitleText) isHydratedFourRowTemplate_Title() {} - -func (*HydratedFourRowTemplate_ImageMessage) isHydratedFourRowTemplate_Title() {} - -func (*HydratedFourRowTemplate_VideoMessage) isHydratedFourRowTemplate_Title() {} - -func (*HydratedFourRowTemplate_LocationMessage) isHydratedFourRowTemplate_Title() {} - -type TemplateMessage struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ContextInfo *ContextInfo `protobuf:"bytes,3,opt,name=contextInfo" json:"contextInfo,omitempty"` - HydratedTemplate *HydratedFourRowTemplate `protobuf:"bytes,4,opt,name=hydratedTemplate" json:"hydratedTemplate,omitempty"` - // Types that are assignable to Format: - // *TemplateMessage_FourRowTemplate - // *TemplateMessage_HydratedFourRowTemplate - Format isTemplateMessage_Format `protobuf_oneof:"format"` -} - -func (x *TemplateMessage) Reset() { - *x = TemplateMessage{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[53] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *TemplateMessage) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*TemplateMessage) ProtoMessage() {} - -func (x *TemplateMessage) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[53] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use TemplateMessage.ProtoReflect.Descriptor instead. -func (*TemplateMessage) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{53} -} - -func (x *TemplateMessage) GetContextInfo() *ContextInfo { - if x != nil { - return x.ContextInfo - } - return nil -} - -func (x *TemplateMessage) GetHydratedTemplate() *HydratedFourRowTemplate { - if x != nil { - return x.HydratedTemplate - } - return nil -} - -func (m *TemplateMessage) GetFormat() isTemplateMessage_Format { - if m != nil { - return m.Format - } - return nil -} - -func (x *TemplateMessage) GetFourRowTemplate() *FourRowTemplate { - if x, ok := x.GetFormat().(*TemplateMessage_FourRowTemplate); ok { - return x.FourRowTemplate - } - return nil -} - -func (x *TemplateMessage) GetHydratedFourRowTemplate() *HydratedFourRowTemplate { - if x, ok := x.GetFormat().(*TemplateMessage_HydratedFourRowTemplate); ok { - return x.HydratedFourRowTemplate - } - return nil -} - -type isTemplateMessage_Format interface { - isTemplateMessage_Format() -} - -type TemplateMessage_FourRowTemplate struct { - FourRowTemplate *FourRowTemplate `protobuf:"bytes,1,opt,name=fourRowTemplate,oneof"` -} - -type TemplateMessage_HydratedFourRowTemplate struct { - HydratedFourRowTemplate *HydratedFourRowTemplate `protobuf:"bytes,2,opt,name=hydratedFourRowTemplate,oneof"` -} - -func (*TemplateMessage_FourRowTemplate) isTemplateMessage_Format() {} - -func (*TemplateMessage_HydratedFourRowTemplate) isTemplateMessage_Format() {} - -type TemplateButtonReplyMessage struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - SelectedId *string `protobuf:"bytes,1,opt,name=selectedId" json:"selectedId,omitempty"` - SelectedDisplayText *string `protobuf:"bytes,2,opt,name=selectedDisplayText" json:"selectedDisplayText,omitempty"` - ContextInfo *ContextInfo `protobuf:"bytes,3,opt,name=contextInfo" json:"contextInfo,omitempty"` - SelectedIndex *uint32 `protobuf:"varint,4,opt,name=selectedIndex" json:"selectedIndex,omitempty"` -} - -func (x *TemplateButtonReplyMessage) Reset() { - *x = TemplateButtonReplyMessage{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[54] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *TemplateButtonReplyMessage) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*TemplateButtonReplyMessage) ProtoMessage() {} - -func (x *TemplateButtonReplyMessage) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[54] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use TemplateButtonReplyMessage.ProtoReflect.Descriptor instead. -func (*TemplateButtonReplyMessage) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{54} -} - -func (x *TemplateButtonReplyMessage) GetSelectedId() string { - if x != nil && x.SelectedId != nil { - return *x.SelectedId - } - return "" -} - -func (x *TemplateButtonReplyMessage) GetSelectedDisplayText() string { - if x != nil && x.SelectedDisplayText != nil { - return *x.SelectedDisplayText - } - return "" -} - -func (x *TemplateButtonReplyMessage) GetContextInfo() *ContextInfo { - if x != nil { - return x.ContextInfo - } - return nil -} - -func (x *TemplateButtonReplyMessage) GetSelectedIndex() uint32 { - if x != nil && x.SelectedIndex != nil { - return *x.SelectedIndex - } - return 0 -} - -type CatalogSnapshot struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - CatalogImage *ImageMessage `protobuf:"bytes,1,opt,name=catalogImage" json:"catalogImage,omitempty"` - Title *string `protobuf:"bytes,2,opt,name=title" json:"title,omitempty"` - Description *string `protobuf:"bytes,3,opt,name=description" json:"description,omitempty"` -} - -func (x *CatalogSnapshot) Reset() { - *x = CatalogSnapshot{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[55] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *CatalogSnapshot) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CatalogSnapshot) ProtoMessage() {} - -func (x *CatalogSnapshot) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[55] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CatalogSnapshot.ProtoReflect.Descriptor instead. -func (*CatalogSnapshot) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{55} -} - -func (x *CatalogSnapshot) GetCatalogImage() *ImageMessage { - if x != nil { - return x.CatalogImage - } - return nil -} - -func (x *CatalogSnapshot) GetTitle() string { - if x != nil && x.Title != nil { - return *x.Title - } - return "" -} - -func (x *CatalogSnapshot) GetDescription() string { - if x != nil && x.Description != nil { - return *x.Description - } - return "" -} - -type ProductSnapshot struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ProductImage *ImageMessage `protobuf:"bytes,1,opt,name=productImage" json:"productImage,omitempty"` - ProductId *string `protobuf:"bytes,2,opt,name=productId" json:"productId,omitempty"` - Title *string `protobuf:"bytes,3,opt,name=title" json:"title,omitempty"` - Description *string `protobuf:"bytes,4,opt,name=description" json:"description,omitempty"` - CurrencyCode *string `protobuf:"bytes,5,opt,name=currencyCode" json:"currencyCode,omitempty"` - PriceAmount1000 *int64 `protobuf:"varint,6,opt,name=priceAmount1000" json:"priceAmount1000,omitempty"` - RetailerId *string `protobuf:"bytes,7,opt,name=retailerId" json:"retailerId,omitempty"` - Url *string `protobuf:"bytes,8,opt,name=url" json:"url,omitempty"` - ProductImageCount *uint32 `protobuf:"varint,9,opt,name=productImageCount" json:"productImageCount,omitempty"` - FirstImageId *string `protobuf:"bytes,11,opt,name=firstImageId" json:"firstImageId,omitempty"` -} - -func (x *ProductSnapshot) Reset() { - *x = ProductSnapshot{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[56] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ProductSnapshot) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ProductSnapshot) ProtoMessage() {} - -func (x *ProductSnapshot) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[56] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ProductSnapshot.ProtoReflect.Descriptor instead. -func (*ProductSnapshot) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{56} -} - -func (x *ProductSnapshot) GetProductImage() *ImageMessage { - if x != nil { - return x.ProductImage - } - return nil -} - -func (x *ProductSnapshot) GetProductId() string { - if x != nil && x.ProductId != nil { - return *x.ProductId - } - return "" -} - -func (x *ProductSnapshot) GetTitle() string { - if x != nil && x.Title != nil { - return *x.Title - } - return "" -} - -func (x *ProductSnapshot) GetDescription() string { - if x != nil && x.Description != nil { - return *x.Description - } - return "" -} - -func (x *ProductSnapshot) GetCurrencyCode() string { - if x != nil && x.CurrencyCode != nil { - return *x.CurrencyCode - } - return "" -} - -func (x *ProductSnapshot) GetPriceAmount1000() int64 { - if x != nil && x.PriceAmount1000 != nil { - return *x.PriceAmount1000 - } - return 0 -} - -func (x *ProductSnapshot) GetRetailerId() string { - if x != nil && x.RetailerId != nil { - return *x.RetailerId - } - return "" -} - -func (x *ProductSnapshot) GetUrl() string { - if x != nil && x.Url != nil { - return *x.Url - } - return "" -} - -func (x *ProductSnapshot) GetProductImageCount() uint32 { - if x != nil && x.ProductImageCount != nil { - return *x.ProductImageCount - } - return 0 -} - -func (x *ProductSnapshot) GetFirstImageId() string { - if x != nil && x.FirstImageId != nil { - return *x.FirstImageId - } - return "" -} - -type ProductMessage struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Product *ProductSnapshot `protobuf:"bytes,1,opt,name=product" json:"product,omitempty"` - BusinessOwnerJid *string `protobuf:"bytes,2,opt,name=businessOwnerJid" json:"businessOwnerJid,omitempty"` - Catalog *CatalogSnapshot `protobuf:"bytes,4,opt,name=catalog" json:"catalog,omitempty"` - ContextInfo *ContextInfo `protobuf:"bytes,17,opt,name=contextInfo" json:"contextInfo,omitempty"` -} - -func (x *ProductMessage) Reset() { - *x = ProductMessage{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[57] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ProductMessage) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ProductMessage) ProtoMessage() {} - -func (x *ProductMessage) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[57] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ProductMessage.ProtoReflect.Descriptor instead. -func (*ProductMessage) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{57} -} - -func (x *ProductMessage) GetProduct() *ProductSnapshot { - if x != nil { - return x.Product - } - return nil -} - -func (x *ProductMessage) GetBusinessOwnerJid() string { - if x != nil && x.BusinessOwnerJid != nil { - return *x.BusinessOwnerJid - } - return "" -} - -func (x *ProductMessage) GetCatalog() *CatalogSnapshot { - if x != nil { - return x.Catalog - } - return nil -} - -func (x *ProductMessage) GetContextInfo() *ContextInfo { - if x != nil { - return x.ContextInfo - } - return nil -} - -type OrderMessage struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - OrderId *string `protobuf:"bytes,1,opt,name=orderId" json:"orderId,omitempty"` - Thumbnail []byte `protobuf:"bytes,2,opt,name=thumbnail" json:"thumbnail,omitempty"` - ItemCount *int32 `protobuf:"varint,3,opt,name=itemCount" json:"itemCount,omitempty"` - Status *OrderMessage_OrderMessageOrderStatus `protobuf:"varint,4,opt,name=status,enum=proto.OrderMessage_OrderMessageOrderStatus" json:"status,omitempty"` - Surface *OrderMessage_OrderMessageOrderSurface `protobuf:"varint,5,opt,name=surface,enum=proto.OrderMessage_OrderMessageOrderSurface" json:"surface,omitempty"` - Message *string `protobuf:"bytes,6,opt,name=message" json:"message,omitempty"` - OrderTitle *string `protobuf:"bytes,7,opt,name=orderTitle" json:"orderTitle,omitempty"` - SellerJid *string `protobuf:"bytes,8,opt,name=sellerJid" json:"sellerJid,omitempty"` - Token *string `protobuf:"bytes,9,opt,name=token" json:"token,omitempty"` - TotalAmount1000 *int64 `protobuf:"varint,10,opt,name=totalAmount1000" json:"totalAmount1000,omitempty"` - TotalCurrencyCode *string `protobuf:"bytes,11,opt,name=totalCurrencyCode" json:"totalCurrencyCode,omitempty"` - ContextInfo *ContextInfo `protobuf:"bytes,17,opt,name=contextInfo" json:"contextInfo,omitempty"` -} - -func (x *OrderMessage) Reset() { - *x = OrderMessage{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[58] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *OrderMessage) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*OrderMessage) ProtoMessage() {} - -func (x *OrderMessage) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[58] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use OrderMessage.ProtoReflect.Descriptor instead. -func (*OrderMessage) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{58} -} - -func (x *OrderMessage) GetOrderId() string { - if x != nil && x.OrderId != nil { - return *x.OrderId - } - return "" -} - -func (x *OrderMessage) GetThumbnail() []byte { - if x != nil { - return x.Thumbnail - } - return nil -} - -func (x *OrderMessage) GetItemCount() int32 { - if x != nil && x.ItemCount != nil { - return *x.ItemCount - } - return 0 -} - -func (x *OrderMessage) GetStatus() OrderMessage_OrderMessageOrderStatus { - if x != nil && x.Status != nil { - return *x.Status - } - return OrderMessage_INQUIRY -} - -func (x *OrderMessage) GetSurface() OrderMessage_OrderMessageOrderSurface { - if x != nil && x.Surface != nil { - return *x.Surface - } - return OrderMessage_CATALOG -} - -func (x *OrderMessage) GetMessage() string { - if x != nil && x.Message != nil { - return *x.Message - } - return "" -} - -func (x *OrderMessage) GetOrderTitle() string { - if x != nil && x.OrderTitle != nil { - return *x.OrderTitle - } - return "" -} - -func (x *OrderMessage) GetSellerJid() string { - if x != nil && x.SellerJid != nil { - return *x.SellerJid - } - return "" -} - -func (x *OrderMessage) GetToken() string { - if x != nil && x.Token != nil { - return *x.Token - } - return "" -} - -func (x *OrderMessage) GetTotalAmount1000() int64 { - if x != nil && x.TotalAmount1000 != nil { - return *x.TotalAmount1000 - } - return 0 -} - -func (x *OrderMessage) GetTotalCurrencyCode() string { - if x != nil && x.TotalCurrencyCode != nil { - return *x.TotalCurrencyCode - } - return "" -} - -func (x *OrderMessage) GetContextInfo() *ContextInfo { - if x != nil { - return x.ContextInfo - } - return nil -} - -type Row struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Title *string `protobuf:"bytes,1,opt,name=title" json:"title,omitempty"` - Description *string `protobuf:"bytes,2,opt,name=description" json:"description,omitempty"` - RowId *string `protobuf:"bytes,3,opt,name=rowId" json:"rowId,omitempty"` -} - -func (x *Row) Reset() { - *x = Row{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[59] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Row) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Row) ProtoMessage() {} - -func (x *Row) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[59] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Row.ProtoReflect.Descriptor instead. -func (*Row) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{59} -} - -func (x *Row) GetTitle() string { - if x != nil && x.Title != nil { - return *x.Title - } - return "" -} - -func (x *Row) GetDescription() string { - if x != nil && x.Description != nil { - return *x.Description - } - return "" -} - -func (x *Row) GetRowId() string { - if x != nil && x.RowId != nil { - return *x.RowId - } - return "" -} - -type Section struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Title *string `protobuf:"bytes,1,opt,name=title" json:"title,omitempty"` - Rows []*Row `protobuf:"bytes,2,rep,name=rows" json:"rows,omitempty"` -} - -func (x *Section) Reset() { - *x = Section{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[60] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Section) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Section) ProtoMessage() {} - -func (x *Section) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[60] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Section.ProtoReflect.Descriptor instead. -func (*Section) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{60} -} - -func (x *Section) GetTitle() string { - if x != nil && x.Title != nil { - return *x.Title - } - return "" -} - -func (x *Section) GetRows() []*Row { - if x != nil { - return x.Rows - } - return nil -} - -type ListMessage struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Title *string `protobuf:"bytes,1,opt,name=title" json:"title,omitempty"` - Description *string `protobuf:"bytes,2,opt,name=description" json:"description,omitempty"` - ButtonText *string `protobuf:"bytes,3,opt,name=buttonText" json:"buttonText,omitempty"` - ListType *ListMessage_ListMessageListType `protobuf:"varint,4,opt,name=listType,enum=proto.ListMessage_ListMessageListType" json:"listType,omitempty"` - Sections []*Section `protobuf:"bytes,5,rep,name=sections" json:"sections,omitempty"` -} - -func (x *ListMessage) Reset() { - *x = ListMessage{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[61] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListMessage) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListMessage) ProtoMessage() {} - -func (x *ListMessage) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[61] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListMessage.ProtoReflect.Descriptor instead. -func (*ListMessage) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{61} -} - -func (x *ListMessage) GetTitle() string { - if x != nil && x.Title != nil { - return *x.Title - } - return "" -} - -func (x *ListMessage) GetDescription() string { - if x != nil && x.Description != nil { - return *x.Description - } - return "" -} - -func (x *ListMessage) GetButtonText() string { - if x != nil && x.ButtonText != nil { - return *x.ButtonText - } - return "" -} - -func (x *ListMessage) GetListType() ListMessage_ListMessageListType { - if x != nil && x.ListType != nil { - return *x.ListType - } - return ListMessage_UNKNOWN -} - -func (x *ListMessage) GetSections() []*Section { - if x != nil { - return x.Sections - } - return nil -} - -type SingleSelectReply struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - SelectedRowId *string `protobuf:"bytes,1,opt,name=selectedRowId" json:"selectedRowId,omitempty"` -} - -func (x *SingleSelectReply) Reset() { - *x = SingleSelectReply{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[62] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SingleSelectReply) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SingleSelectReply) ProtoMessage() {} - -func (x *SingleSelectReply) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[62] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SingleSelectReply.ProtoReflect.Descriptor instead. -func (*SingleSelectReply) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{62} -} - -func (x *SingleSelectReply) GetSelectedRowId() string { - if x != nil && x.SelectedRowId != nil { - return *x.SelectedRowId - } - return "" -} - -type ListResponseMessage struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Title *string `protobuf:"bytes,1,opt,name=title" json:"title,omitempty"` - ListType *ListResponseMessage_ListResponseMessageListType `protobuf:"varint,2,opt,name=listType,enum=proto.ListResponseMessage_ListResponseMessageListType" json:"listType,omitempty"` - SingleSelectReply *SingleSelectReply `protobuf:"bytes,3,opt,name=singleSelectReply" json:"singleSelectReply,omitempty"` - ContextInfo *ContextInfo `protobuf:"bytes,4,opt,name=contextInfo" json:"contextInfo,omitempty"` - Description *string `protobuf:"bytes,5,opt,name=description" json:"description,omitempty"` -} - -func (x *ListResponseMessage) Reset() { - *x = ListResponseMessage{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[63] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListResponseMessage) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListResponseMessage) ProtoMessage() {} - -func (x *ListResponseMessage) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[63] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListResponseMessage.ProtoReflect.Descriptor instead. -func (*ListResponseMessage) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{63} -} - -func (x *ListResponseMessage) GetTitle() string { - if x != nil && x.Title != nil { - return *x.Title - } - return "" -} - -func (x *ListResponseMessage) GetListType() ListResponseMessage_ListResponseMessageListType { - if x != nil && x.ListType != nil { - return *x.ListType - } - return ListResponseMessage_UNKNOWN -} - -func (x *ListResponseMessage) GetSingleSelectReply() *SingleSelectReply { - if x != nil { - return x.SingleSelectReply - } - return nil -} - -func (x *ListResponseMessage) GetContextInfo() *ContextInfo { - if x != nil { - return x.ContextInfo - } - return nil -} - -func (x *ListResponseMessage) GetDescription() string { - if x != nil && x.Description != nil { - return *x.Description - } - return "" -} - -type GroupInviteMessage struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - GroupJid *string `protobuf:"bytes,1,opt,name=groupJid" json:"groupJid,omitempty"` - InviteCode *string `protobuf:"bytes,2,opt,name=inviteCode" json:"inviteCode,omitempty"` - InviteExpiration *int64 `protobuf:"varint,3,opt,name=inviteExpiration" json:"inviteExpiration,omitempty"` - GroupName *string `protobuf:"bytes,4,opt,name=groupName" json:"groupName,omitempty"` - JpegThumbnail []byte `protobuf:"bytes,5,opt,name=jpegThumbnail" json:"jpegThumbnail,omitempty"` - Caption *string `protobuf:"bytes,6,opt,name=caption" json:"caption,omitempty"` - ContextInfo *ContextInfo `protobuf:"bytes,7,opt,name=contextInfo" json:"contextInfo,omitempty"` -} - -func (x *GroupInviteMessage) Reset() { - *x = GroupInviteMessage{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[64] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GroupInviteMessage) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GroupInviteMessage) ProtoMessage() {} - -func (x *GroupInviteMessage) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[64] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GroupInviteMessage.ProtoReflect.Descriptor instead. -func (*GroupInviteMessage) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{64} -} - -func (x *GroupInviteMessage) GetGroupJid() string { - if x != nil && x.GroupJid != nil { - return *x.GroupJid - } - return "" -} - -func (x *GroupInviteMessage) GetInviteCode() string { - if x != nil && x.InviteCode != nil { - return *x.InviteCode - } - return "" -} - -func (x *GroupInviteMessage) GetInviteExpiration() int64 { - if x != nil && x.InviteExpiration != nil { - return *x.InviteExpiration - } - return 0 -} - -func (x *GroupInviteMessage) GetGroupName() string { - if x != nil && x.GroupName != nil { - return *x.GroupName - } - return "" -} - -func (x *GroupInviteMessage) GetJpegThumbnail() []byte { - if x != nil { - return x.JpegThumbnail - } - return nil -} - -func (x *GroupInviteMessage) GetCaption() string { - if x != nil && x.Caption != nil { - return *x.Caption - } - return "" -} - -func (x *GroupInviteMessage) GetContextInfo() *ContextInfo { - if x != nil { - return x.ContextInfo - } - return nil -} - -type EphemeralSetting struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ChatJid *string `protobuf:"bytes,1,opt,name=chatJid" json:"chatJid,omitempty"` - EphemeralExpiration *uint32 `protobuf:"varint,2,opt,name=ephemeralExpiration" json:"ephemeralExpiration,omitempty"` - EphemeralSettingTimestamp *int64 `protobuf:"varint,3,opt,name=ephemeralSettingTimestamp" json:"ephemeralSettingTimestamp,omitempty"` -} - -func (x *EphemeralSetting) Reset() { - *x = EphemeralSetting{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[65] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *EphemeralSetting) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*EphemeralSetting) ProtoMessage() {} - -func (x *EphemeralSetting) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[65] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use EphemeralSetting.ProtoReflect.Descriptor instead. -func (*EphemeralSetting) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{65} -} - -func (x *EphemeralSetting) GetChatJid() string { - if x != nil && x.ChatJid != nil { - return *x.ChatJid - } - return "" -} - -func (x *EphemeralSetting) GetEphemeralExpiration() uint32 { - if x != nil && x.EphemeralExpiration != nil { - return *x.EphemeralExpiration - } - return 0 -} - -func (x *EphemeralSetting) GetEphemeralSettingTimestamp() int64 { - if x != nil && x.EphemeralSettingTimestamp != nil { - return *x.EphemeralSettingTimestamp - } - return 0 -} - -type DeviceSentMessage struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - DestinationJid *string `protobuf:"bytes,1,opt,name=destinationJid" json:"destinationJid,omitempty"` - Message *Message `protobuf:"bytes,2,opt,name=message" json:"message,omitempty"` - Phash *string `protobuf:"bytes,3,opt,name=phash" json:"phash,omitempty"` - BroadcastEphemeralSettings []*EphemeralSetting `protobuf:"bytes,4,rep,name=broadcastEphemeralSettings" json:"broadcastEphemeralSettings,omitempty"` -} - -func (x *DeviceSentMessage) Reset() { - *x = DeviceSentMessage{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[66] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *DeviceSentMessage) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeviceSentMessage) ProtoMessage() {} - -func (x *DeviceSentMessage) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[66] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeviceSentMessage.ProtoReflect.Descriptor instead. -func (*DeviceSentMessage) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{66} -} - -func (x *DeviceSentMessage) GetDestinationJid() string { - if x != nil && x.DestinationJid != nil { - return *x.DestinationJid - } - return "" -} - -func (x *DeviceSentMessage) GetMessage() *Message { - if x != nil { - return x.Message - } - return nil -} - -func (x *DeviceSentMessage) GetPhash() string { - if x != nil && x.Phash != nil { - return *x.Phash - } - return "" -} - -func (x *DeviceSentMessage) GetBroadcastEphemeralSettings() []*EphemeralSetting { - if x != nil { - return x.BroadcastEphemeralSettings - } - return nil -} - -type FutureProofMessage struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Message *Message `protobuf:"bytes,1,opt,name=message" json:"message,omitempty"` -} - -func (x *FutureProofMessage) Reset() { - *x = FutureProofMessage{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[67] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *FutureProofMessage) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*FutureProofMessage) ProtoMessage() {} - -func (x *FutureProofMessage) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[67] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use FutureProofMessage.ProtoReflect.Descriptor instead. -func (*FutureProofMessage) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{67} -} - -func (x *FutureProofMessage) GetMessage() *Message { - if x != nil { - return x.Message - } - return nil -} - -type ButtonText struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - DisplayText *string `protobuf:"bytes,1,opt,name=displayText" json:"displayText,omitempty"` -} - -func (x *ButtonText) Reset() { - *x = ButtonText{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[68] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ButtonText) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ButtonText) ProtoMessage() {} - -func (x *ButtonText) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[68] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ButtonText.ProtoReflect.Descriptor instead. -func (*ButtonText) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{68} -} - -func (x *ButtonText) GetDisplayText() string { - if x != nil && x.DisplayText != nil { - return *x.DisplayText - } - return "" -} - -type Button struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ButtonId *string `protobuf:"bytes,1,opt,name=buttonId" json:"buttonId,omitempty"` - ButtonText *ButtonText `protobuf:"bytes,2,opt,name=buttonText" json:"buttonText,omitempty"` - Type *Button_ButtonType `protobuf:"varint,3,opt,name=type,enum=proto.Button_ButtonType" json:"type,omitempty"` -} - -func (x *Button) Reset() { - *x = Button{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[69] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Button) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Button) ProtoMessage() {} - -func (x *Button) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[69] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Button.ProtoReflect.Descriptor instead. -func (*Button) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{69} -} - -func (x *Button) GetButtonId() string { - if x != nil && x.ButtonId != nil { - return *x.ButtonId - } - return "" -} - -func (x *Button) GetButtonText() *ButtonText { - if x != nil { - return x.ButtonText - } - return nil -} - -func (x *Button) GetType() Button_ButtonType { - if x != nil && x.Type != nil { - return *x.Type - } - return Button_UNKNOWN -} - -type ButtonsMessage struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ContentText *string `protobuf:"bytes,6,opt,name=contentText" json:"contentText,omitempty"` - FooterText *string `protobuf:"bytes,7,opt,name=footerText" json:"footerText,omitempty"` - ContextInfo *ContextInfo `protobuf:"bytes,8,opt,name=contextInfo" json:"contextInfo,omitempty"` - Buttons []*Button `protobuf:"bytes,9,rep,name=buttons" json:"buttons,omitempty"` - HeaderType *ButtonsMessage_ButtonsMessageHeaderType `protobuf:"varint,10,opt,name=headerType,enum=proto.ButtonsMessage_ButtonsMessageHeaderType" json:"headerType,omitempty"` - // Types that are assignable to Header: - // *ButtonsMessage_Text - // *ButtonsMessage_DocumentMessage - // *ButtonsMessage_ImageMessage - // *ButtonsMessage_VideoMessage - // *ButtonsMessage_LocationMessage - Header isButtonsMessage_Header `protobuf_oneof:"header"` -} - -func (x *ButtonsMessage) Reset() { - *x = ButtonsMessage{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[70] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ButtonsMessage) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ButtonsMessage) ProtoMessage() {} - -func (x *ButtonsMessage) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[70] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ButtonsMessage.ProtoReflect.Descriptor instead. -func (*ButtonsMessage) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{70} -} - -func (x *ButtonsMessage) GetContentText() string { - if x != nil && x.ContentText != nil { - return *x.ContentText - } - return "" -} - -func (x *ButtonsMessage) GetFooterText() string { - if x != nil && x.FooterText != nil { - return *x.FooterText - } - return "" -} - -func (x *ButtonsMessage) GetContextInfo() *ContextInfo { - if x != nil { - return x.ContextInfo - } - return nil -} - -func (x *ButtonsMessage) GetButtons() []*Button { - if x != nil { - return x.Buttons - } - return nil -} - -func (x *ButtonsMessage) GetHeaderType() ButtonsMessage_ButtonsMessageHeaderType { - if x != nil && x.HeaderType != nil { - return *x.HeaderType - } - return ButtonsMessage_UNKNOWN -} - -func (m *ButtonsMessage) GetHeader() isButtonsMessage_Header { - if m != nil { - return m.Header - } - return nil -} - -func (x *ButtonsMessage) GetText() string { - if x, ok := x.GetHeader().(*ButtonsMessage_Text); ok { - return x.Text - } - return "" -} - -func (x *ButtonsMessage) GetDocumentMessage() *DocumentMessage { - if x, ok := x.GetHeader().(*ButtonsMessage_DocumentMessage); ok { - return x.DocumentMessage - } - return nil -} - -func (x *ButtonsMessage) GetImageMessage() *ImageMessage { - if x, ok := x.GetHeader().(*ButtonsMessage_ImageMessage); ok { - return x.ImageMessage - } - return nil -} - -func (x *ButtonsMessage) GetVideoMessage() *VideoMessage { - if x, ok := x.GetHeader().(*ButtonsMessage_VideoMessage); ok { - return x.VideoMessage - } - return nil -} - -func (x *ButtonsMessage) GetLocationMessage() *LocationMessage { - if x, ok := x.GetHeader().(*ButtonsMessage_LocationMessage); ok { - return x.LocationMessage - } - return nil -} - -type isButtonsMessage_Header interface { - isButtonsMessage_Header() -} - -type ButtonsMessage_Text struct { - Text string `protobuf:"bytes,1,opt,name=text,oneof"` -} - -type ButtonsMessage_DocumentMessage struct { - DocumentMessage *DocumentMessage `protobuf:"bytes,2,opt,name=documentMessage,oneof"` -} - -type ButtonsMessage_ImageMessage struct { - ImageMessage *ImageMessage `protobuf:"bytes,3,opt,name=imageMessage,oneof"` -} - -type ButtonsMessage_VideoMessage struct { - VideoMessage *VideoMessage `protobuf:"bytes,4,opt,name=videoMessage,oneof"` -} - -type ButtonsMessage_LocationMessage struct { - LocationMessage *LocationMessage `protobuf:"bytes,5,opt,name=locationMessage,oneof"` -} - -func (*ButtonsMessage_Text) isButtonsMessage_Header() {} - -func (*ButtonsMessage_DocumentMessage) isButtonsMessage_Header() {} - -func (*ButtonsMessage_ImageMessage) isButtonsMessage_Header() {} - -func (*ButtonsMessage_VideoMessage) isButtonsMessage_Header() {} - -func (*ButtonsMessage_LocationMessage) isButtonsMessage_Header() {} - -type ButtonsResponseMessage struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - SelectedButtonId *string `protobuf:"bytes,1,opt,name=selectedButtonId" json:"selectedButtonId,omitempty"` - ContextInfo *ContextInfo `protobuf:"bytes,3,opt,name=contextInfo" json:"contextInfo,omitempty"` - Type *ButtonsResponseMessage_ButtonsResponseMessageType `protobuf:"varint,4,opt,name=type,enum=proto.ButtonsResponseMessage_ButtonsResponseMessageType" json:"type,omitempty"` - // Types that are assignable to Response: - // *ButtonsResponseMessage_SelectedDisplayText - Response isButtonsResponseMessage_Response `protobuf_oneof:"response"` -} - -func (x *ButtonsResponseMessage) Reset() { - *x = ButtonsResponseMessage{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[71] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ButtonsResponseMessage) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ButtonsResponseMessage) ProtoMessage() {} - -func (x *ButtonsResponseMessage) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[71] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ButtonsResponseMessage.ProtoReflect.Descriptor instead. -func (*ButtonsResponseMessage) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{71} -} - -func (x *ButtonsResponseMessage) GetSelectedButtonId() string { - if x != nil && x.SelectedButtonId != nil { - return *x.SelectedButtonId - } - return "" -} - -func (x *ButtonsResponseMessage) GetContextInfo() *ContextInfo { - if x != nil { - return x.ContextInfo - } - return nil -} - -func (x *ButtonsResponseMessage) GetType() ButtonsResponseMessage_ButtonsResponseMessageType { - if x != nil && x.Type != nil { - return *x.Type - } - return ButtonsResponseMessage_UNKNOWN -} - -func (m *ButtonsResponseMessage) GetResponse() isButtonsResponseMessage_Response { - if m != nil { - return m.Response - } - return nil -} - -func (x *ButtonsResponseMessage) GetSelectedDisplayText() string { - if x, ok := x.GetResponse().(*ButtonsResponseMessage_SelectedDisplayText); ok { - return x.SelectedDisplayText - } - return "" -} - -type isButtonsResponseMessage_Response interface { - isButtonsResponseMessage_Response() -} - -type ButtonsResponseMessage_SelectedDisplayText struct { - SelectedDisplayText string `protobuf:"bytes,2,opt,name=selectedDisplayText,oneof"` -} - -func (*ButtonsResponseMessage_SelectedDisplayText) isButtonsResponseMessage_Response() {} - -type Message struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Conversation *string `protobuf:"bytes,1,opt,name=conversation" json:"conversation,omitempty"` - SenderKeyDistributionMessage *SenderKeyDistributionMessage `protobuf:"bytes,2,opt,name=senderKeyDistributionMessage" json:"senderKeyDistributionMessage,omitempty"` - ImageMessage *ImageMessage `protobuf:"bytes,3,opt,name=imageMessage" json:"imageMessage,omitempty"` - ContactMessage *ContactMessage `protobuf:"bytes,4,opt,name=contactMessage" json:"contactMessage,omitempty"` - LocationMessage *LocationMessage `protobuf:"bytes,5,opt,name=locationMessage" json:"locationMessage,omitempty"` - ExtendedTextMessage *ExtendedTextMessage `protobuf:"bytes,6,opt,name=extendedTextMessage" json:"extendedTextMessage,omitempty"` - DocumentMessage *DocumentMessage `protobuf:"bytes,7,opt,name=documentMessage" json:"documentMessage,omitempty"` - AudioMessage *AudioMessage `protobuf:"bytes,8,opt,name=audioMessage" json:"audioMessage,omitempty"` - VideoMessage *VideoMessage `protobuf:"bytes,9,opt,name=videoMessage" json:"videoMessage,omitempty"` - Call *Call `protobuf:"bytes,10,opt,name=call" json:"call,omitempty"` - Chat *Chat `protobuf:"bytes,11,opt,name=chat" json:"chat,omitempty"` - ProtocolMessage *ProtocolMessage `protobuf:"bytes,12,opt,name=protocolMessage" json:"protocolMessage,omitempty"` - ContactsArrayMessage *ContactsArrayMessage `protobuf:"bytes,13,opt,name=contactsArrayMessage" json:"contactsArrayMessage,omitempty"` - HighlyStructuredMessage *HighlyStructuredMessage `protobuf:"bytes,14,opt,name=highlyStructuredMessage" json:"highlyStructuredMessage,omitempty"` - FastRatchetKeySenderKeyDistributionMessage *SenderKeyDistributionMessage `protobuf:"bytes,15,opt,name=fastRatchetKeySenderKeyDistributionMessage" json:"fastRatchetKeySenderKeyDistributionMessage,omitempty"` - SendPaymentMessage *SendPaymentMessage `protobuf:"bytes,16,opt,name=sendPaymentMessage" json:"sendPaymentMessage,omitempty"` - LiveLocationMessage *LiveLocationMessage `protobuf:"bytes,18,opt,name=liveLocationMessage" json:"liveLocationMessage,omitempty"` - RequestPaymentMessage *RequestPaymentMessage `protobuf:"bytes,22,opt,name=requestPaymentMessage" json:"requestPaymentMessage,omitempty"` - DeclinePaymentRequestMessage *DeclinePaymentRequestMessage `protobuf:"bytes,23,opt,name=declinePaymentRequestMessage" json:"declinePaymentRequestMessage,omitempty"` - CancelPaymentRequestMessage *CancelPaymentRequestMessage `protobuf:"bytes,24,opt,name=cancelPaymentRequestMessage" json:"cancelPaymentRequestMessage,omitempty"` - TemplateMessage *TemplateMessage `protobuf:"bytes,25,opt,name=templateMessage" json:"templateMessage,omitempty"` - StickerMessage *StickerMessage `protobuf:"bytes,26,opt,name=stickerMessage" json:"stickerMessage,omitempty"` - GroupInviteMessage *GroupInviteMessage `protobuf:"bytes,28,opt,name=groupInviteMessage" json:"groupInviteMessage,omitempty"` - TemplateButtonReplyMessage *TemplateButtonReplyMessage `protobuf:"bytes,29,opt,name=templateButtonReplyMessage" json:"templateButtonReplyMessage,omitempty"` - ProductMessage *ProductMessage `protobuf:"bytes,30,opt,name=productMessage" json:"productMessage,omitempty"` - DeviceSentMessage *DeviceSentMessage `protobuf:"bytes,31,opt,name=deviceSentMessage" json:"deviceSentMessage,omitempty"` - MessageContextInfo *MessageContextInfo `protobuf:"bytes,35,opt,name=messageContextInfo" json:"messageContextInfo,omitempty"` - ListMessage *ListMessage `protobuf:"bytes,36,opt,name=listMessage" json:"listMessage,omitempty"` - ViewOnceMessage *FutureProofMessage `protobuf:"bytes,37,opt,name=viewOnceMessage" json:"viewOnceMessage,omitempty"` - OrderMessage *OrderMessage `protobuf:"bytes,38,opt,name=orderMessage" json:"orderMessage,omitempty"` - ListResponseMessage *ListResponseMessage `protobuf:"bytes,39,opt,name=listResponseMessage" json:"listResponseMessage,omitempty"` - EphemeralMessage *FutureProofMessage `protobuf:"bytes,40,opt,name=ephemeralMessage" json:"ephemeralMessage,omitempty"` - InvoiceMessage *InvoiceMessage `protobuf:"bytes,41,opt,name=invoiceMessage" json:"invoiceMessage,omitempty"` - ButtonsMessage *ButtonsMessage `protobuf:"bytes,42,opt,name=buttonsMessage" json:"buttonsMessage,omitempty"` - ButtonsResponseMessage *ButtonsResponseMessage `protobuf:"bytes,43,opt,name=buttonsResponseMessage" json:"buttonsResponseMessage,omitempty"` -} - -func (x *Message) Reset() { - *x = Message{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[72] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Message) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Message) ProtoMessage() {} - -func (x *Message) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[72] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Message.ProtoReflect.Descriptor instead. -func (*Message) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{72} -} - -func (x *Message) GetConversation() string { - if x != nil && x.Conversation != nil { - return *x.Conversation - } - return "" -} - -func (x *Message) GetSenderKeyDistributionMessage() *SenderKeyDistributionMessage { - if x != nil { - return x.SenderKeyDistributionMessage - } - return nil -} - -func (x *Message) GetImageMessage() *ImageMessage { - if x != nil { - return x.ImageMessage - } - return nil -} - -func (x *Message) GetContactMessage() *ContactMessage { - if x != nil { - return x.ContactMessage - } - return nil -} - -func (x *Message) GetLocationMessage() *LocationMessage { - if x != nil { - return x.LocationMessage - } - return nil -} - -func (x *Message) GetExtendedTextMessage() *ExtendedTextMessage { - if x != nil { - return x.ExtendedTextMessage - } - return nil -} - -func (x *Message) GetDocumentMessage() *DocumentMessage { - if x != nil { - return x.DocumentMessage - } - return nil -} - -func (x *Message) GetAudioMessage() *AudioMessage { - if x != nil { - return x.AudioMessage - } - return nil -} - -func (x *Message) GetVideoMessage() *VideoMessage { - if x != nil { - return x.VideoMessage - } - return nil -} - -func (x *Message) GetCall() *Call { - if x != nil { - return x.Call - } - return nil -} - -func (x *Message) GetChat() *Chat { - if x != nil { - return x.Chat - } - return nil -} - -func (x *Message) GetProtocolMessage() *ProtocolMessage { - if x != nil { - return x.ProtocolMessage - } - return nil -} - -func (x *Message) GetContactsArrayMessage() *ContactsArrayMessage { - if x != nil { - return x.ContactsArrayMessage - } - return nil -} - -func (x *Message) GetHighlyStructuredMessage() *HighlyStructuredMessage { - if x != nil { - return x.HighlyStructuredMessage - } - return nil -} - -func (x *Message) GetFastRatchetKeySenderKeyDistributionMessage() *SenderKeyDistributionMessage { - if x != nil { - return x.FastRatchetKeySenderKeyDistributionMessage - } - return nil -} - -func (x *Message) GetSendPaymentMessage() *SendPaymentMessage { - if x != nil { - return x.SendPaymentMessage - } - return nil -} - -func (x *Message) GetLiveLocationMessage() *LiveLocationMessage { - if x != nil { - return x.LiveLocationMessage - } - return nil -} - -func (x *Message) GetRequestPaymentMessage() *RequestPaymentMessage { - if x != nil { - return x.RequestPaymentMessage - } - return nil -} - -func (x *Message) GetDeclinePaymentRequestMessage() *DeclinePaymentRequestMessage { - if x != nil { - return x.DeclinePaymentRequestMessage - } - return nil -} - -func (x *Message) GetCancelPaymentRequestMessage() *CancelPaymentRequestMessage { - if x != nil { - return x.CancelPaymentRequestMessage - } - return nil -} - -func (x *Message) GetTemplateMessage() *TemplateMessage { - if x != nil { - return x.TemplateMessage - } - return nil -} - -func (x *Message) GetStickerMessage() *StickerMessage { - if x != nil { - return x.StickerMessage - } - return nil -} - -func (x *Message) GetGroupInviteMessage() *GroupInviteMessage { - if x != nil { - return x.GroupInviteMessage - } - return nil -} - -func (x *Message) GetTemplateButtonReplyMessage() *TemplateButtonReplyMessage { - if x != nil { - return x.TemplateButtonReplyMessage - } - return nil -} - -func (x *Message) GetProductMessage() *ProductMessage { - if x != nil { - return x.ProductMessage - } - return nil -} - -func (x *Message) GetDeviceSentMessage() *DeviceSentMessage { - if x != nil { - return x.DeviceSentMessage - } - return nil -} - -func (x *Message) GetMessageContextInfo() *MessageContextInfo { - if x != nil { - return x.MessageContextInfo - } - return nil -} - -func (x *Message) GetListMessage() *ListMessage { - if x != nil { - return x.ListMessage - } - return nil -} - -func (x *Message) GetViewOnceMessage() *FutureProofMessage { - if x != nil { - return x.ViewOnceMessage - } - return nil -} - -func (x *Message) GetOrderMessage() *OrderMessage { - if x != nil { - return x.OrderMessage - } - return nil -} - -func (x *Message) GetListResponseMessage() *ListResponseMessage { - if x != nil { - return x.ListResponseMessage - } - return nil -} - -func (x *Message) GetEphemeralMessage() *FutureProofMessage { - if x != nil { - return x.EphemeralMessage - } - return nil -} - -func (x *Message) GetInvoiceMessage() *InvoiceMessage { - if x != nil { - return x.InvoiceMessage - } - return nil -} - -func (x *Message) GetButtonsMessage() *ButtonsMessage { - if x != nil { - return x.ButtonsMessage - } - return nil -} - -func (x *Message) GetButtonsResponseMessage() *ButtonsResponseMessage { - if x != nil { - return x.ButtonsResponseMessage - } - return nil -} - -type MessageKey struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - RemoteJid *string `protobuf:"bytes,1,opt,name=remoteJid" json:"remoteJid,omitempty"` - FromMe *bool `protobuf:"varint,2,opt,name=fromMe" json:"fromMe,omitempty"` - Id *string `protobuf:"bytes,3,opt,name=id" json:"id,omitempty"` - Participant *string `protobuf:"bytes,4,opt,name=participant" json:"participant,omitempty"` -} - -func (x *MessageKey) Reset() { - *x = MessageKey{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[73] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *MessageKey) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*MessageKey) ProtoMessage() {} - -func (x *MessageKey) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[73] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use MessageKey.ProtoReflect.Descriptor instead. -func (*MessageKey) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{73} -} - -func (x *MessageKey) GetRemoteJid() string { - if x != nil && x.RemoteJid != nil { - return *x.RemoteJid - } - return "" -} - -func (x *MessageKey) GetFromMe() bool { - if x != nil && x.FromMe != nil { - return *x.FromMe - } - return false -} - -func (x *MessageKey) GetId() string { - if x != nil && x.Id != nil { - return *x.Id - } - return "" -} - -func (x *MessageKey) GetParticipant() string { - if x != nil && x.Participant != nil { - return *x.Participant - } - return "" -} - -type WebFeatures struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - LabelsDisplay *WebFeatures_WebFeaturesFlag `protobuf:"varint,1,opt,name=labelsDisplay,enum=proto.WebFeatures_WebFeaturesFlag" json:"labelsDisplay,omitempty"` - VoipIndividualOutgoing *WebFeatures_WebFeaturesFlag `protobuf:"varint,2,opt,name=voipIndividualOutgoing,enum=proto.WebFeatures_WebFeaturesFlag" json:"voipIndividualOutgoing,omitempty"` - GroupsV3 *WebFeatures_WebFeaturesFlag `protobuf:"varint,3,opt,name=groupsV3,enum=proto.WebFeatures_WebFeaturesFlag" json:"groupsV3,omitempty"` - GroupsV3Create *WebFeatures_WebFeaturesFlag `protobuf:"varint,4,opt,name=groupsV3Create,enum=proto.WebFeatures_WebFeaturesFlag" json:"groupsV3Create,omitempty"` - ChangeNumberV2 *WebFeatures_WebFeaturesFlag `protobuf:"varint,5,opt,name=changeNumberV2,enum=proto.WebFeatures_WebFeaturesFlag" json:"changeNumberV2,omitempty"` - QueryStatusV3Thumbnail *WebFeatures_WebFeaturesFlag `protobuf:"varint,6,opt,name=queryStatusV3Thumbnail,enum=proto.WebFeatures_WebFeaturesFlag" json:"queryStatusV3Thumbnail,omitempty"` - LiveLocations *WebFeatures_WebFeaturesFlag `protobuf:"varint,7,opt,name=liveLocations,enum=proto.WebFeatures_WebFeaturesFlag" json:"liveLocations,omitempty"` - QueryVname *WebFeatures_WebFeaturesFlag `protobuf:"varint,8,opt,name=queryVname,enum=proto.WebFeatures_WebFeaturesFlag" json:"queryVname,omitempty"` - VoipIndividualIncoming *WebFeatures_WebFeaturesFlag `protobuf:"varint,9,opt,name=voipIndividualIncoming,enum=proto.WebFeatures_WebFeaturesFlag" json:"voipIndividualIncoming,omitempty"` - QuickRepliesQuery *WebFeatures_WebFeaturesFlag `protobuf:"varint,10,opt,name=quickRepliesQuery,enum=proto.WebFeatures_WebFeaturesFlag" json:"quickRepliesQuery,omitempty"` - Payments *WebFeatures_WebFeaturesFlag `protobuf:"varint,11,opt,name=payments,enum=proto.WebFeatures_WebFeaturesFlag" json:"payments,omitempty"` - StickerPackQuery *WebFeatures_WebFeaturesFlag `protobuf:"varint,12,opt,name=stickerPackQuery,enum=proto.WebFeatures_WebFeaturesFlag" json:"stickerPackQuery,omitempty"` - LiveLocationsFinal *WebFeatures_WebFeaturesFlag `protobuf:"varint,13,opt,name=liveLocationsFinal,enum=proto.WebFeatures_WebFeaturesFlag" json:"liveLocationsFinal,omitempty"` - LabelsEdit *WebFeatures_WebFeaturesFlag `protobuf:"varint,14,opt,name=labelsEdit,enum=proto.WebFeatures_WebFeaturesFlag" json:"labelsEdit,omitempty"` - MediaUpload *WebFeatures_WebFeaturesFlag `protobuf:"varint,15,opt,name=mediaUpload,enum=proto.WebFeatures_WebFeaturesFlag" json:"mediaUpload,omitempty"` - MediaUploadRichQuickReplies *WebFeatures_WebFeaturesFlag `protobuf:"varint,18,opt,name=mediaUploadRichQuickReplies,enum=proto.WebFeatures_WebFeaturesFlag" json:"mediaUploadRichQuickReplies,omitempty"` - VnameV2 *WebFeatures_WebFeaturesFlag `protobuf:"varint,19,opt,name=vnameV2,enum=proto.WebFeatures_WebFeaturesFlag" json:"vnameV2,omitempty"` - VideoPlaybackUrl *WebFeatures_WebFeaturesFlag `protobuf:"varint,20,opt,name=videoPlaybackUrl,enum=proto.WebFeatures_WebFeaturesFlag" json:"videoPlaybackUrl,omitempty"` - StatusRanking *WebFeatures_WebFeaturesFlag `protobuf:"varint,21,opt,name=statusRanking,enum=proto.WebFeatures_WebFeaturesFlag" json:"statusRanking,omitempty"` - VoipIndividualVideo *WebFeatures_WebFeaturesFlag `protobuf:"varint,22,opt,name=voipIndividualVideo,enum=proto.WebFeatures_WebFeaturesFlag" json:"voipIndividualVideo,omitempty"` - ThirdPartyStickers *WebFeatures_WebFeaturesFlag `protobuf:"varint,23,opt,name=thirdPartyStickers,enum=proto.WebFeatures_WebFeaturesFlag" json:"thirdPartyStickers,omitempty"` - FrequentlyForwardedSetting *WebFeatures_WebFeaturesFlag `protobuf:"varint,24,opt,name=frequentlyForwardedSetting,enum=proto.WebFeatures_WebFeaturesFlag" json:"frequentlyForwardedSetting,omitempty"` - GroupsV4JoinPermission *WebFeatures_WebFeaturesFlag `protobuf:"varint,25,opt,name=groupsV4JoinPermission,enum=proto.WebFeatures_WebFeaturesFlag" json:"groupsV4JoinPermission,omitempty"` - RecentStickers *WebFeatures_WebFeaturesFlag `protobuf:"varint,26,opt,name=recentStickers,enum=proto.WebFeatures_WebFeaturesFlag" json:"recentStickers,omitempty"` - Catalog *WebFeatures_WebFeaturesFlag `protobuf:"varint,27,opt,name=catalog,enum=proto.WebFeatures_WebFeaturesFlag" json:"catalog,omitempty"` - StarredStickers *WebFeatures_WebFeaturesFlag `protobuf:"varint,28,opt,name=starredStickers,enum=proto.WebFeatures_WebFeaturesFlag" json:"starredStickers,omitempty"` - VoipGroupCall *WebFeatures_WebFeaturesFlag `protobuf:"varint,29,opt,name=voipGroupCall,enum=proto.WebFeatures_WebFeaturesFlag" json:"voipGroupCall,omitempty"` - TemplateMessage *WebFeatures_WebFeaturesFlag `protobuf:"varint,30,opt,name=templateMessage,enum=proto.WebFeatures_WebFeaturesFlag" json:"templateMessage,omitempty"` - TemplateMessageInteractivity *WebFeatures_WebFeaturesFlag `protobuf:"varint,31,opt,name=templateMessageInteractivity,enum=proto.WebFeatures_WebFeaturesFlag" json:"templateMessageInteractivity,omitempty"` - EphemeralMessages *WebFeatures_WebFeaturesFlag `protobuf:"varint,32,opt,name=ephemeralMessages,enum=proto.WebFeatures_WebFeaturesFlag" json:"ephemeralMessages,omitempty"` - E2ENotificationSync *WebFeatures_WebFeaturesFlag `protobuf:"varint,33,opt,name=e2ENotificationSync,enum=proto.WebFeatures_WebFeaturesFlag" json:"e2ENotificationSync,omitempty"` - RecentStickersV2 *WebFeatures_WebFeaturesFlag `protobuf:"varint,34,opt,name=recentStickersV2,enum=proto.WebFeatures_WebFeaturesFlag" json:"recentStickersV2,omitempty"` - SyncdRelease1 *WebFeatures_WebFeaturesFlag `protobuf:"varint,35,opt,name=syncdRelease1,enum=proto.WebFeatures_WebFeaturesFlag" json:"syncdRelease1,omitempty"` - RecentStickersV3 *WebFeatures_WebFeaturesFlag `protobuf:"varint,36,opt,name=recentStickersV3,enum=proto.WebFeatures_WebFeaturesFlag" json:"recentStickersV3,omitempty"` - UserNotice *WebFeatures_WebFeaturesFlag `protobuf:"varint,37,opt,name=userNotice,enum=proto.WebFeatures_WebFeaturesFlag" json:"userNotice,omitempty"` - SyncdRelease11 *WebFeatures_WebFeaturesFlag `protobuf:"varint,38,opt,name=syncdRelease11,enum=proto.WebFeatures_WebFeaturesFlag" json:"syncdRelease11,omitempty"` - Support *WebFeatures_WebFeaturesFlag `protobuf:"varint,39,opt,name=support,enum=proto.WebFeatures_WebFeaturesFlag" json:"support,omitempty"` - GroupUiiCleanup *WebFeatures_WebFeaturesFlag `protobuf:"varint,40,opt,name=groupUiiCleanup,enum=proto.WebFeatures_WebFeaturesFlag" json:"groupUiiCleanup,omitempty"` - GroupDogfoodingInternalOnly *WebFeatures_WebFeaturesFlag `protobuf:"varint,41,opt,name=groupDogfoodingInternalOnly,enum=proto.WebFeatures_WebFeaturesFlag" json:"groupDogfoodingInternalOnly,omitempty"` - SettingsSync *WebFeatures_WebFeaturesFlag `protobuf:"varint,42,opt,name=settingsSync,enum=proto.WebFeatures_WebFeaturesFlag" json:"settingsSync,omitempty"` -} - -func (x *WebFeatures) Reset() { - *x = WebFeatures{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[74] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *WebFeatures) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*WebFeatures) ProtoMessage() {} - -func (x *WebFeatures) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[74] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use WebFeatures.ProtoReflect.Descriptor instead. -func (*WebFeatures) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{74} -} - -func (x *WebFeatures) GetLabelsDisplay() WebFeatures_WebFeaturesFlag { - if x != nil && x.LabelsDisplay != nil { - return *x.LabelsDisplay - } - return WebFeatures_NOT_STARTED -} - -func (x *WebFeatures) GetVoipIndividualOutgoing() WebFeatures_WebFeaturesFlag { - if x != nil && x.VoipIndividualOutgoing != nil { - return *x.VoipIndividualOutgoing - } - return WebFeatures_NOT_STARTED -} - -func (x *WebFeatures) GetGroupsV3() WebFeatures_WebFeaturesFlag { - if x != nil && x.GroupsV3 != nil { - return *x.GroupsV3 - } - return WebFeatures_NOT_STARTED -} - -func (x *WebFeatures) GetGroupsV3Create() WebFeatures_WebFeaturesFlag { - if x != nil && x.GroupsV3Create != nil { - return *x.GroupsV3Create - } - return WebFeatures_NOT_STARTED -} - -func (x *WebFeatures) GetChangeNumberV2() WebFeatures_WebFeaturesFlag { - if x != nil && x.ChangeNumberV2 != nil { - return *x.ChangeNumberV2 - } - return WebFeatures_NOT_STARTED -} - -func (x *WebFeatures) GetQueryStatusV3Thumbnail() WebFeatures_WebFeaturesFlag { - if x != nil && x.QueryStatusV3Thumbnail != nil { - return *x.QueryStatusV3Thumbnail - } - return WebFeatures_NOT_STARTED -} - -func (x *WebFeatures) GetLiveLocations() WebFeatures_WebFeaturesFlag { - if x != nil && x.LiveLocations != nil { - return *x.LiveLocations - } - return WebFeatures_NOT_STARTED -} - -func (x *WebFeatures) GetQueryVname() WebFeatures_WebFeaturesFlag { - if x != nil && x.QueryVname != nil { - return *x.QueryVname - } - return WebFeatures_NOT_STARTED -} - -func (x *WebFeatures) GetVoipIndividualIncoming() WebFeatures_WebFeaturesFlag { - if x != nil && x.VoipIndividualIncoming != nil { - return *x.VoipIndividualIncoming - } - return WebFeatures_NOT_STARTED -} - -func (x *WebFeatures) GetQuickRepliesQuery() WebFeatures_WebFeaturesFlag { - if x != nil && x.QuickRepliesQuery != nil { - return *x.QuickRepliesQuery - } - return WebFeatures_NOT_STARTED -} - -func (x *WebFeatures) GetPayments() WebFeatures_WebFeaturesFlag { - if x != nil && x.Payments != nil { - return *x.Payments - } - return WebFeatures_NOT_STARTED -} - -func (x *WebFeatures) GetStickerPackQuery() WebFeatures_WebFeaturesFlag { - if x != nil && x.StickerPackQuery != nil { - return *x.StickerPackQuery - } - return WebFeatures_NOT_STARTED -} - -func (x *WebFeatures) GetLiveLocationsFinal() WebFeatures_WebFeaturesFlag { - if x != nil && x.LiveLocationsFinal != nil { - return *x.LiveLocationsFinal - } - return WebFeatures_NOT_STARTED -} - -func (x *WebFeatures) GetLabelsEdit() WebFeatures_WebFeaturesFlag { - if x != nil && x.LabelsEdit != nil { - return *x.LabelsEdit - } - return WebFeatures_NOT_STARTED -} - -func (x *WebFeatures) GetMediaUpload() WebFeatures_WebFeaturesFlag { - if x != nil && x.MediaUpload != nil { - return *x.MediaUpload - } - return WebFeatures_NOT_STARTED -} - -func (x *WebFeatures) GetMediaUploadRichQuickReplies() WebFeatures_WebFeaturesFlag { - if x != nil && x.MediaUploadRichQuickReplies != nil { - return *x.MediaUploadRichQuickReplies - } - return WebFeatures_NOT_STARTED -} - -func (x *WebFeatures) GetVnameV2() WebFeatures_WebFeaturesFlag { - if x != nil && x.VnameV2 != nil { - return *x.VnameV2 - } - return WebFeatures_NOT_STARTED -} - -func (x *WebFeatures) GetVideoPlaybackUrl() WebFeatures_WebFeaturesFlag { - if x != nil && x.VideoPlaybackUrl != nil { - return *x.VideoPlaybackUrl - } - return WebFeatures_NOT_STARTED -} - -func (x *WebFeatures) GetStatusRanking() WebFeatures_WebFeaturesFlag { - if x != nil && x.StatusRanking != nil { - return *x.StatusRanking - } - return WebFeatures_NOT_STARTED -} - -func (x *WebFeatures) GetVoipIndividualVideo() WebFeatures_WebFeaturesFlag { - if x != nil && x.VoipIndividualVideo != nil { - return *x.VoipIndividualVideo - } - return WebFeatures_NOT_STARTED -} - -func (x *WebFeatures) GetThirdPartyStickers() WebFeatures_WebFeaturesFlag { - if x != nil && x.ThirdPartyStickers != nil { - return *x.ThirdPartyStickers - } - return WebFeatures_NOT_STARTED -} - -func (x *WebFeatures) GetFrequentlyForwardedSetting() WebFeatures_WebFeaturesFlag { - if x != nil && x.FrequentlyForwardedSetting != nil { - return *x.FrequentlyForwardedSetting - } - return WebFeatures_NOT_STARTED -} - -func (x *WebFeatures) GetGroupsV4JoinPermission() WebFeatures_WebFeaturesFlag { - if x != nil && x.GroupsV4JoinPermission != nil { - return *x.GroupsV4JoinPermission - } - return WebFeatures_NOT_STARTED -} - -func (x *WebFeatures) GetRecentStickers() WebFeatures_WebFeaturesFlag { - if x != nil && x.RecentStickers != nil { - return *x.RecentStickers - } - return WebFeatures_NOT_STARTED -} - -func (x *WebFeatures) GetCatalog() WebFeatures_WebFeaturesFlag { - if x != nil && x.Catalog != nil { - return *x.Catalog - } - return WebFeatures_NOT_STARTED -} - -func (x *WebFeatures) GetStarredStickers() WebFeatures_WebFeaturesFlag { - if x != nil && x.StarredStickers != nil { - return *x.StarredStickers - } - return WebFeatures_NOT_STARTED -} - -func (x *WebFeatures) GetVoipGroupCall() WebFeatures_WebFeaturesFlag { - if x != nil && x.VoipGroupCall != nil { - return *x.VoipGroupCall - } - return WebFeatures_NOT_STARTED -} - -func (x *WebFeatures) GetTemplateMessage() WebFeatures_WebFeaturesFlag { - if x != nil && x.TemplateMessage != nil { - return *x.TemplateMessage - } - return WebFeatures_NOT_STARTED -} - -func (x *WebFeatures) GetTemplateMessageInteractivity() WebFeatures_WebFeaturesFlag { - if x != nil && x.TemplateMessageInteractivity != nil { - return *x.TemplateMessageInteractivity - } - return WebFeatures_NOT_STARTED -} - -func (x *WebFeatures) GetEphemeralMessages() WebFeatures_WebFeaturesFlag { - if x != nil && x.EphemeralMessages != nil { - return *x.EphemeralMessages - } - return WebFeatures_NOT_STARTED -} - -func (x *WebFeatures) GetE2ENotificationSync() WebFeatures_WebFeaturesFlag { - if x != nil && x.E2ENotificationSync != nil { - return *x.E2ENotificationSync - } - return WebFeatures_NOT_STARTED -} - -func (x *WebFeatures) GetRecentStickersV2() WebFeatures_WebFeaturesFlag { - if x != nil && x.RecentStickersV2 != nil { - return *x.RecentStickersV2 - } - return WebFeatures_NOT_STARTED -} - -func (x *WebFeatures) GetSyncdRelease1() WebFeatures_WebFeaturesFlag { - if x != nil && x.SyncdRelease1 != nil { - return *x.SyncdRelease1 - } - return WebFeatures_NOT_STARTED -} - -func (x *WebFeatures) GetRecentStickersV3() WebFeatures_WebFeaturesFlag { - if x != nil && x.RecentStickersV3 != nil { - return *x.RecentStickersV3 - } - return WebFeatures_NOT_STARTED -} - -func (x *WebFeatures) GetUserNotice() WebFeatures_WebFeaturesFlag { - if x != nil && x.UserNotice != nil { - return *x.UserNotice - } - return WebFeatures_NOT_STARTED -} - -func (x *WebFeatures) GetSyncdRelease11() WebFeatures_WebFeaturesFlag { - if x != nil && x.SyncdRelease11 != nil { - return *x.SyncdRelease11 - } - return WebFeatures_NOT_STARTED -} - -func (x *WebFeatures) GetSupport() WebFeatures_WebFeaturesFlag { - if x != nil && x.Support != nil { - return *x.Support - } - return WebFeatures_NOT_STARTED -} - -func (x *WebFeatures) GetGroupUiiCleanup() WebFeatures_WebFeaturesFlag { - if x != nil && x.GroupUiiCleanup != nil { - return *x.GroupUiiCleanup - } - return WebFeatures_NOT_STARTED -} - -func (x *WebFeatures) GetGroupDogfoodingInternalOnly() WebFeatures_WebFeaturesFlag { - if x != nil && x.GroupDogfoodingInternalOnly != nil { - return *x.GroupDogfoodingInternalOnly - } - return WebFeatures_NOT_STARTED -} - -func (x *WebFeatures) GetSettingsSync() WebFeatures_WebFeaturesFlag { - if x != nil && x.SettingsSync != nil { - return *x.SettingsSync - } - return WebFeatures_NOT_STARTED -} - -type NotificationMessageInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Key *MessageKey `protobuf:"bytes,1,opt,name=key" json:"key,omitempty"` - Message *Message `protobuf:"bytes,2,opt,name=message" json:"message,omitempty"` - MessageTimestamp *uint64 `protobuf:"varint,3,opt,name=messageTimestamp" json:"messageTimestamp,omitempty"` - Participant *string `protobuf:"bytes,4,opt,name=participant" json:"participant,omitempty"` -} - -func (x *NotificationMessageInfo) Reset() { - *x = NotificationMessageInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[75] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *NotificationMessageInfo) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*NotificationMessageInfo) ProtoMessage() {} - -func (x *NotificationMessageInfo) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[75] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use NotificationMessageInfo.ProtoReflect.Descriptor instead. -func (*NotificationMessageInfo) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{75} -} - -func (x *NotificationMessageInfo) GetKey() *MessageKey { - if x != nil { - return x.Key - } - return nil -} - -func (x *NotificationMessageInfo) GetMessage() *Message { - if x != nil { - return x.Message - } - return nil -} - -func (x *NotificationMessageInfo) GetMessageTimestamp() uint64 { - if x != nil && x.MessageTimestamp != nil { - return *x.MessageTimestamp - } - return 0 -} - -func (x *NotificationMessageInfo) GetParticipant() string { - if x != nil && x.Participant != nil { - return *x.Participant - } - return "" -} - -type WebNotificationsInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Timestamp *uint64 `protobuf:"varint,2,opt,name=timestamp" json:"timestamp,omitempty"` - UnreadChats *uint32 `protobuf:"varint,3,opt,name=unreadChats" json:"unreadChats,omitempty"` - NotifyMessageCount *uint32 `protobuf:"varint,4,opt,name=notifyMessageCount" json:"notifyMessageCount,omitempty"` - NotifyMessages []*WebMessageInfo `protobuf:"bytes,5,rep,name=notifyMessages" json:"notifyMessages,omitempty"` -} - -func (x *WebNotificationsInfo) Reset() { - *x = WebNotificationsInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[76] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *WebNotificationsInfo) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*WebNotificationsInfo) ProtoMessage() {} - -func (x *WebNotificationsInfo) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[76] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use WebNotificationsInfo.ProtoReflect.Descriptor instead. -func (*WebNotificationsInfo) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{76} -} - -func (x *WebNotificationsInfo) GetTimestamp() uint64 { - if x != nil && x.Timestamp != nil { - return *x.Timestamp - } - return 0 -} - -func (x *WebNotificationsInfo) GetUnreadChats() uint32 { - if x != nil && x.UnreadChats != nil { - return *x.UnreadChats - } - return 0 -} - -func (x *WebNotificationsInfo) GetNotifyMessageCount() uint32 { - if x != nil && x.NotifyMessageCount != nil { - return *x.NotifyMessageCount - } - return 0 -} - -func (x *WebNotificationsInfo) GetNotifyMessages() []*WebMessageInfo { - if x != nil { - return x.NotifyMessages - } - return nil -} - -type PaymentInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - CurrencyDeprecated *PaymentInfo_PaymentInfoCurrency `protobuf:"varint,1,opt,name=currencyDeprecated,enum=proto.PaymentInfo_PaymentInfoCurrency" json:"currencyDeprecated,omitempty"` - Amount1000 *uint64 `protobuf:"varint,2,opt,name=amount1000" json:"amount1000,omitempty"` - ReceiverJid *string `protobuf:"bytes,3,opt,name=receiverJid" json:"receiverJid,omitempty"` - Status *PaymentInfo_PaymentInfoStatus `protobuf:"varint,4,opt,name=status,enum=proto.PaymentInfo_PaymentInfoStatus" json:"status,omitempty"` - TransactionTimestamp *uint64 `protobuf:"varint,5,opt,name=transactionTimestamp" json:"transactionTimestamp,omitempty"` - RequestMessageKey *MessageKey `protobuf:"bytes,6,opt,name=requestMessageKey" json:"requestMessageKey,omitempty"` - ExpiryTimestamp *uint64 `protobuf:"varint,7,opt,name=expiryTimestamp" json:"expiryTimestamp,omitempty"` - Futureproofed *bool `protobuf:"varint,8,opt,name=futureproofed" json:"futureproofed,omitempty"` - Currency *string `protobuf:"bytes,9,opt,name=currency" json:"currency,omitempty"` - TxnStatus *PaymentInfo_PaymentInfoTxnStatus `protobuf:"varint,10,opt,name=txnStatus,enum=proto.PaymentInfo_PaymentInfoTxnStatus" json:"txnStatus,omitempty"` - UseNoviFiatFormat *bool `protobuf:"varint,11,opt,name=useNoviFiatFormat" json:"useNoviFiatFormat,omitempty"` - PrimaryAmount *PaymentMoney `protobuf:"bytes,12,opt,name=primaryAmount" json:"primaryAmount,omitempty"` - ExchangeAmount *PaymentMoney `protobuf:"bytes,13,opt,name=exchangeAmount" json:"exchangeAmount,omitempty"` -} - -func (x *PaymentInfo) Reset() { - *x = PaymentInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[77] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *PaymentInfo) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PaymentInfo) ProtoMessage() {} - -func (x *PaymentInfo) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[77] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use PaymentInfo.ProtoReflect.Descriptor instead. -func (*PaymentInfo) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{77} -} - -func (x *PaymentInfo) GetCurrencyDeprecated() PaymentInfo_PaymentInfoCurrency { - if x != nil && x.CurrencyDeprecated != nil { - return *x.CurrencyDeprecated - } - return PaymentInfo_UNKNOWN_CURRENCY -} - -func (x *PaymentInfo) GetAmount1000() uint64 { - if x != nil && x.Amount1000 != nil { - return *x.Amount1000 - } - return 0 -} - -func (x *PaymentInfo) GetReceiverJid() string { - if x != nil && x.ReceiverJid != nil { - return *x.ReceiverJid - } - return "" -} - -func (x *PaymentInfo) GetStatus() PaymentInfo_PaymentInfoStatus { - if x != nil && x.Status != nil { - return *x.Status - } - return PaymentInfo_UNKNOWN_STATUS -} - -func (x *PaymentInfo) GetTransactionTimestamp() uint64 { - if x != nil && x.TransactionTimestamp != nil { - return *x.TransactionTimestamp - } - return 0 -} - -func (x *PaymentInfo) GetRequestMessageKey() *MessageKey { - if x != nil { - return x.RequestMessageKey - } - return nil -} - -func (x *PaymentInfo) GetExpiryTimestamp() uint64 { - if x != nil && x.ExpiryTimestamp != nil { - return *x.ExpiryTimestamp - } - return 0 -} - -func (x *PaymentInfo) GetFutureproofed() bool { - if x != nil && x.Futureproofed != nil { - return *x.Futureproofed - } - return false -} - -func (x *PaymentInfo) GetCurrency() string { - if x != nil && x.Currency != nil { - return *x.Currency - } - return "" -} - -func (x *PaymentInfo) GetTxnStatus() PaymentInfo_PaymentInfoTxnStatus { - if x != nil && x.TxnStatus != nil { - return *x.TxnStatus - } - return PaymentInfo_UNKNOWN -} - -func (x *PaymentInfo) GetUseNoviFiatFormat() bool { - if x != nil && x.UseNoviFiatFormat != nil { - return *x.UseNoviFiatFormat - } - return false -} - -func (x *PaymentInfo) GetPrimaryAmount() *PaymentMoney { - if x != nil { - return x.PrimaryAmount - } - return nil -} - -func (x *PaymentInfo) GetExchangeAmount() *PaymentMoney { - if x != nil { - return x.ExchangeAmount - } - return nil -} - -type WebMessageInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Key *MessageKey `protobuf:"bytes,1,req,name=key" json:"key,omitempty"` - Message *Message `protobuf:"bytes,2,opt,name=message" json:"message,omitempty"` - MessageTimestamp *uint64 `protobuf:"varint,3,opt,name=messageTimestamp" json:"messageTimestamp,omitempty"` - Status *WebMessageInfo_WebMessageInfoStatus `protobuf:"varint,4,opt,name=status,enum=proto.WebMessageInfo_WebMessageInfoStatus" json:"status,omitempty"` - Participant *string `protobuf:"bytes,5,opt,name=participant" json:"participant,omitempty"` - Ignore *bool `protobuf:"varint,16,opt,name=ignore" json:"ignore,omitempty"` - Starred *bool `protobuf:"varint,17,opt,name=starred" json:"starred,omitempty"` - Broadcast *bool `protobuf:"varint,18,opt,name=broadcast" json:"broadcast,omitempty"` - PushName *string `protobuf:"bytes,19,opt,name=pushName" json:"pushName,omitempty"` - MediaCiphertextSha256 []byte `protobuf:"bytes,20,opt,name=mediaCiphertextSha256" json:"mediaCiphertextSha256,omitempty"` - Multicast *bool `protobuf:"varint,21,opt,name=multicast" json:"multicast,omitempty"` - UrlText *bool `protobuf:"varint,22,opt,name=urlText" json:"urlText,omitempty"` - UrlNumber *bool `protobuf:"varint,23,opt,name=urlNumber" json:"urlNumber,omitempty"` - MessageStubType *WebMessageInfo_WebMessageInfoStubType `protobuf:"varint,24,opt,name=messageStubType,enum=proto.WebMessageInfo_WebMessageInfoStubType" json:"messageStubType,omitempty"` - ClearMedia *bool `protobuf:"varint,25,opt,name=clearMedia" json:"clearMedia,omitempty"` - MessageStubParameters []string `protobuf:"bytes,26,rep,name=messageStubParameters" json:"messageStubParameters,omitempty"` - Duration *uint32 `protobuf:"varint,27,opt,name=duration" json:"duration,omitempty"` - Labels []string `protobuf:"bytes,28,rep,name=labels" json:"labels,omitempty"` - PaymentInfo *PaymentInfo `protobuf:"bytes,29,opt,name=paymentInfo" json:"paymentInfo,omitempty"` - FinalLiveLocation *LiveLocationMessage `protobuf:"bytes,30,opt,name=finalLiveLocation" json:"finalLiveLocation,omitempty"` - QuotedPaymentInfo *PaymentInfo `protobuf:"bytes,31,opt,name=quotedPaymentInfo" json:"quotedPaymentInfo,omitempty"` - EphemeralStartTimestamp *uint64 `protobuf:"varint,32,opt,name=ephemeralStartTimestamp" json:"ephemeralStartTimestamp,omitempty"` - EphemeralDuration *uint32 `protobuf:"varint,33,opt,name=ephemeralDuration" json:"ephemeralDuration,omitempty"` - EphemeralOffToOn *bool `protobuf:"varint,34,opt,name=ephemeralOffToOn" json:"ephemeralOffToOn,omitempty"` - EphemeralOutOfSync *bool `protobuf:"varint,35,opt,name=ephemeralOutOfSync" json:"ephemeralOutOfSync,omitempty"` - BizPrivacyStatus *WebMessageInfo_WebMessageInfoBizPrivacyStatus `protobuf:"varint,36,opt,name=bizPrivacyStatus,enum=proto.WebMessageInfo_WebMessageInfoBizPrivacyStatus" json:"bizPrivacyStatus,omitempty"` - VerifiedBizName *string `protobuf:"bytes,37,opt,name=verifiedBizName" json:"verifiedBizName,omitempty"` -} - -func (x *WebMessageInfo) Reset() { - *x = WebMessageInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_def_proto_msgTypes[78] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *WebMessageInfo) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*WebMessageInfo) ProtoMessage() {} - -func (x *WebMessageInfo) ProtoReflect() protoreflect.Message { - mi := &file_def_proto_msgTypes[78] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use WebMessageInfo.ProtoReflect.Descriptor instead. -func (*WebMessageInfo) Descriptor() ([]byte, []int) { - return file_def_proto_rawDescGZIP(), []int{78} -} - -func (x *WebMessageInfo) GetKey() *MessageKey { - if x != nil { - return x.Key - } - return nil -} - -func (x *WebMessageInfo) GetMessage() *Message { - if x != nil { - return x.Message - } - return nil -} - -func (x *WebMessageInfo) GetMessageTimestamp() uint64 { - if x != nil && x.MessageTimestamp != nil { - return *x.MessageTimestamp - } - return 0 -} - -func (x *WebMessageInfo) GetStatus() WebMessageInfo_WebMessageInfoStatus { - if x != nil && x.Status != nil { - return *x.Status - } - return WebMessageInfo_ERROR -} - -func (x *WebMessageInfo) GetParticipant() string { - if x != nil && x.Participant != nil { - return *x.Participant - } - return "" -} - -func (x *WebMessageInfo) GetIgnore() bool { - if x != nil && x.Ignore != nil { - return *x.Ignore - } - return false -} - -func (x *WebMessageInfo) GetStarred() bool { - if x != nil && x.Starred != nil { - return *x.Starred - } - return false -} - -func (x *WebMessageInfo) GetBroadcast() bool { - if x != nil && x.Broadcast != nil { - return *x.Broadcast - } - return false -} - -func (x *WebMessageInfo) GetPushName() string { - if x != nil && x.PushName != nil { - return *x.PushName - } - return "" -} - -func (x *WebMessageInfo) GetMediaCiphertextSha256() []byte { - if x != nil { - return x.MediaCiphertextSha256 - } - return nil -} - -func (x *WebMessageInfo) GetMulticast() bool { - if x != nil && x.Multicast != nil { - return *x.Multicast - } - return false -} - -func (x *WebMessageInfo) GetUrlText() bool { - if x != nil && x.UrlText != nil { - return *x.UrlText - } - return false -} - -func (x *WebMessageInfo) GetUrlNumber() bool { - if x != nil && x.UrlNumber != nil { - return *x.UrlNumber - } - return false -} - -func (x *WebMessageInfo) GetMessageStubType() WebMessageInfo_WebMessageInfoStubType { - if x != nil && x.MessageStubType != nil { - return *x.MessageStubType - } - return WebMessageInfo_UNKNOWN -} - -func (x *WebMessageInfo) GetClearMedia() bool { - if x != nil && x.ClearMedia != nil { - return *x.ClearMedia - } - return false -} - -func (x *WebMessageInfo) GetMessageStubParameters() []string { - if x != nil { - return x.MessageStubParameters - } - return nil -} - -func (x *WebMessageInfo) GetDuration() uint32 { - if x != nil && x.Duration != nil { - return *x.Duration - } - return 0 -} - -func (x *WebMessageInfo) GetLabels() []string { - if x != nil { - return x.Labels - } - return nil -} - -func (x *WebMessageInfo) GetPaymentInfo() *PaymentInfo { - if x != nil { - return x.PaymentInfo - } - return nil -} - -func (x *WebMessageInfo) GetFinalLiveLocation() *LiveLocationMessage { - if x != nil { - return x.FinalLiveLocation - } - return nil -} - -func (x *WebMessageInfo) GetQuotedPaymentInfo() *PaymentInfo { - if x != nil { - return x.QuotedPaymentInfo - } - return nil -} - -func (x *WebMessageInfo) GetEphemeralStartTimestamp() uint64 { - if x != nil && x.EphemeralStartTimestamp != nil { - return *x.EphemeralStartTimestamp - } - return 0 -} - -func (x *WebMessageInfo) GetEphemeralDuration() uint32 { - if x != nil && x.EphemeralDuration != nil { - return *x.EphemeralDuration - } - return 0 -} - -func (x *WebMessageInfo) GetEphemeralOffToOn() bool { - if x != nil && x.EphemeralOffToOn != nil { - return *x.EphemeralOffToOn - } - return false -} - -func (x *WebMessageInfo) GetEphemeralOutOfSync() bool { - if x != nil && x.EphemeralOutOfSync != nil { - return *x.EphemeralOutOfSync - } - return false -} - -func (x *WebMessageInfo) GetBizPrivacyStatus() WebMessageInfo_WebMessageInfoBizPrivacyStatus { - if x != nil && x.BizPrivacyStatus != nil { - return *x.BizPrivacyStatus - } - return WebMessageInfo_E2EE -} - -func (x *WebMessageInfo) GetVerifiedBizName() string { - if x != nil && x.VerifiedBizName != nil { - return *x.VerifiedBizName - } - return "" -} - -var File_def_proto protoreflect.FileDescriptor - -var file_def_proto_rawDesc = []byte{ - 0x0a, 0x09, 0x64, 0x65, 0x66, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x05, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x22, 0x60, 0x0a, 0x0c, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x6f, 0x6e, - 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, - 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x43, 0x6f, 0x64, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, - 0x43, 0x6f, 0x64, 0x65, 0x22, 0x4c, 0x0a, 0x18, 0x48, 0x79, 0x64, 0x72, 0x61, 0x74, 0x65, 0x64, - 0x51, 0x75, 0x69, 0x63, 0x6b, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, - 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x54, 0x65, 0x78, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x54, 0x65, - 0x78, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, - 0x69, 0x64, 0x22, 0x47, 0x0a, 0x11, 0x48, 0x79, 0x64, 0x72, 0x61, 0x74, 0x65, 0x64, 0x55, 0x52, - 0x4c, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, - 0x61, 0x79, 0x54, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, - 0x73, 0x70, 0x6c, 0x61, 0x79, 0x54, 0x65, 0x78, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0x58, 0x0a, 0x12, 0x48, - 0x79, 0x64, 0x72, 0x61, 0x74, 0x65, 0x64, 0x43, 0x61, 0x6c, 0x6c, 0x42, 0x75, 0x74, 0x74, 0x6f, - 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x54, 0x65, 0x78, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x54, - 0x65, 0x78, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, - 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x86, 0x02, 0x0a, 0x16, 0x48, 0x79, 0x64, 0x72, 0x61, 0x74, - 0x65, 0x64, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, - 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x4d, 0x0a, 0x10, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x52, - 0x65, 0x70, 0x6c, 0x79, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x48, 0x79, 0x64, 0x72, 0x61, 0x74, 0x65, - 0x64, 0x51, 0x75, 0x69, 0x63, 0x6b, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x42, 0x75, 0x74, 0x74, 0x6f, - 0x6e, 0x48, 0x00, 0x52, 0x10, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x42, - 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x12, 0x38, 0x0a, 0x09, 0x75, 0x72, 0x6c, 0x42, 0x75, 0x74, 0x74, - 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x48, 0x79, 0x64, 0x72, 0x61, 0x74, 0x65, 0x64, 0x55, 0x52, 0x4c, 0x42, 0x75, 0x74, 0x74, - 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x09, 0x75, 0x72, 0x6c, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x12, - 0x3b, 0x0a, 0x0a, 0x63, 0x61, 0x6c, 0x6c, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x48, 0x79, 0x64, 0x72, - 0x61, 0x74, 0x65, 0x64, 0x43, 0x61, 0x6c, 0x6c, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x48, 0x00, - 0x52, 0x0a, 0x63, 0x61, 0x6c, 0x6c, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x42, 0x10, 0x0a, 0x0e, - 0x68, 0x79, 0x64, 0x72, 0x61, 0x74, 0x65, 0x64, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x22, 0x64, - 0x0a, 0x10, 0x51, 0x75, 0x69, 0x63, 0x6b, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x42, 0x75, 0x74, 0x74, - 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x54, 0x65, 0x78, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, - 0x48, 0x69, 0x67, 0x68, 0x6c, 0x79, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, - 0x54, 0x65, 0x78, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x02, 0x69, 0x64, 0x22, 0x7f, 0x0a, 0x09, 0x55, 0x52, 0x4c, 0x42, 0x75, 0x74, 0x74, 0x6f, - 0x6e, 0x12, 0x40, 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x54, 0x65, 0x78, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x48, - 0x69, 0x67, 0x68, 0x6c, 0x79, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x54, - 0x65, 0x78, 0x74, 0x12, 0x30, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x48, 0x69, 0x67, 0x68, 0x6c, 0x79, 0x53, - 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0x90, 0x01, 0x0a, 0x0a, 0x43, 0x61, 0x6c, 0x6c, 0x42, 0x75, - 0x74, 0x74, 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x54, - 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2e, 0x48, 0x69, 0x67, 0x68, 0x6c, 0x79, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, - 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, - 0x61, 0x79, 0x54, 0x65, 0x78, 0x74, 0x12, 0x40, 0x0a, 0x0b, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, - 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2e, 0x48, 0x69, 0x67, 0x68, 0x6c, 0x79, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, - 0x75, 0x72, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0b, 0x70, 0x68, 0x6f, - 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0xde, 0x01, 0x0a, 0x0e, 0x54, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x12, 0x45, 0x0a, 0x10, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x42, - 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2e, 0x51, 0x75, 0x69, 0x63, 0x6b, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x42, 0x75, - 0x74, 0x74, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x10, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x52, 0x65, 0x70, - 0x6c, 0x79, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x12, 0x30, 0x0a, 0x09, 0x75, 0x72, 0x6c, 0x42, - 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2e, 0x55, 0x52, 0x4c, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x48, 0x00, 0x52, - 0x09, 0x75, 0x72, 0x6c, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x0a, 0x63, 0x61, - 0x6c, 0x6c, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x61, 0x6c, 0x6c, 0x42, 0x75, 0x74, 0x74, 0x6f, - 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x63, 0x61, 0x6c, 0x6c, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x42, - 0x08, 0x0a, 0x06, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x22, 0x74, 0x0a, 0x08, 0x4c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0f, 0x64, 0x65, 0x67, 0x72, 0x65, 0x65, 0x73, - 0x4c, 0x61, 0x74, 0x69, 0x74, 0x75, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0f, - 0x64, 0x65, 0x67, 0x72, 0x65, 0x65, 0x73, 0x4c, 0x61, 0x74, 0x69, 0x74, 0x75, 0x64, 0x65, 0x12, - 0x2a, 0x0a, 0x10, 0x64, 0x65, 0x67, 0x72, 0x65, 0x65, 0x73, 0x4c, 0x6f, 0x6e, 0x67, 0x69, 0x74, - 0x75, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x10, 0x64, 0x65, 0x67, 0x72, 0x65, - 0x65, 0x73, 0x4c, 0x6f, 0x6e, 0x67, 0x69, 0x74, 0x75, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, - 0x67, 0x0a, 0x05, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x78, 0x44, 0x65, 0x70, - 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x78, - 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x79, 0x44, - 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0b, 0x79, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x0c, 0x0a, 0x01, - 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x01, 0x78, 0x12, 0x0c, 0x0a, 0x01, 0x79, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x01, 0x79, 0x22, 0x88, 0x01, 0x0a, 0x15, 0x49, 0x6e, 0x74, - 0x65, 0x72, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x0f, 0x70, 0x6f, 0x6c, 0x79, 0x67, 0x6f, 0x6e, 0x56, 0x65, 0x72, - 0x74, 0x69, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x0f, 0x70, 0x6f, 0x6c, 0x79, 0x67, - 0x6f, 0x6e, 0x56, 0x65, 0x72, 0x74, 0x69, 0x63, 0x65, 0x73, 0x12, 0x2d, 0x0a, 0x08, 0x6c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, - 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0x0a, 0x06, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x22, 0xc0, 0x01, 0x0a, 0x12, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x69, - 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x24, 0x0a, 0x0d, 0x73, 0x65, - 0x6e, 0x64, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x48, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x0d, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x48, 0x61, 0x73, 0x68, - 0x12, 0x28, 0x0a, 0x0f, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x73, 0x65, 0x6e, 0x64, 0x65, - 0x72, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x2a, 0x0a, 0x10, 0x72, 0x65, - 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x48, 0x61, 0x73, 0x68, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x0c, 0x52, 0x10, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x4b, - 0x65, 0x79, 0x48, 0x61, 0x73, 0x68, 0x12, 0x2e, 0x0a, 0x12, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, - 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x12, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x5f, 0x0a, 0x12, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x49, 0x0a, 0x12, - 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x52, 0x12, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0xf4, 0x01, 0x0a, 0x0b, 0x41, 0x64, 0x52, 0x65, - 0x70, 0x6c, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x26, 0x0a, 0x0e, 0x61, 0x64, 0x76, 0x65, 0x72, - 0x74, 0x69, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0e, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x45, 0x0a, 0x09, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x64, 0x52, 0x65, 0x70, - 0x6c, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x41, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x49, 0x6e, - 0x66, 0x6f, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x6d, 0x65, 0x64, - 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x6a, 0x70, 0x65, 0x67, 0x54, 0x68, - 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x6a, - 0x70, 0x65, 0x67, 0x54, 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x12, 0x18, 0x0a, 0x07, - 0x63, 0x61, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, - 0x61, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x36, 0x0a, 0x14, 0x41, 0x64, 0x52, 0x65, 0x70, 0x6c, - 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x08, - 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x49, 0x4d, 0x41, 0x47, - 0x45, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x56, 0x49, 0x44, 0x45, 0x4f, 0x10, 0x02, 0x22, 0x8e, - 0x03, 0x0a, 0x13, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x41, 0x64, 0x52, 0x65, 0x70, - 0x6c, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, - 0x62, 0x6f, 0x64, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, - 0x12, 0x55, 0x0a, 0x09, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x65, - 0x72, 0x6e, 0x61, 0x6c, 0x41, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x2e, - 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x41, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x49, - 0x6e, 0x66, 0x6f, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x6d, 0x65, - 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x74, 0x68, 0x75, 0x6d, 0x62, - 0x6e, 0x61, 0x69, 0x6c, 0x55, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x74, - 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x55, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x6d, - 0x65, 0x64, 0x69, 0x61, 0x55, 0x72, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, - 0x65, 0x64, 0x69, 0x61, 0x55, 0x72, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x68, 0x75, 0x6d, 0x62, - 0x6e, 0x61, 0x69, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x74, 0x68, 0x75, 0x6d, - 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, - 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, - 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, - 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x55, 0x72, 0x6c, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x55, 0x72, 0x6c, 0x22, - 0x3e, 0x0a, 0x1c, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x41, 0x64, 0x52, 0x65, 0x70, - 0x6c, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x49, 0x4d, 0x41, - 0x47, 0x45, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x56, 0x49, 0x44, 0x45, 0x4f, 0x10, 0x02, 0x22, - 0xe0, 0x05, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, - 0x1a, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x6e, 0x7a, 0x61, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x73, 0x74, 0x61, 0x6e, 0x7a, 0x61, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x70, - 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x12, 0x34, 0x0a, - 0x0d, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x52, 0x0d, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x4a, 0x69, 0x64, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x4a, 0x69, - 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x6d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x65, 0x64, 0x4a, 0x69, - 0x64, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x6d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, - 0x65, 0x64, 0x4a, 0x69, 0x64, 0x12, 0x2a, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x10, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x44, - 0x61, 0x74, 0x61, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x36, 0x0a, 0x16, 0x63, 0x6f, 0x6e, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x53, 0x65, 0x63, 0x6f, - 0x6e, 0x64, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x16, 0x63, 0x6f, 0x6e, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, - 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x53, - 0x63, 0x6f, 0x72, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x66, 0x6f, 0x72, 0x77, - 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x69, - 0x73, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x64, 0x18, 0x16, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x0b, 0x69, 0x73, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x64, 0x12, 0x2e, 0x0a, - 0x08, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x64, 0x41, 0x64, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x12, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x64, 0x41, 0x64, 0x12, 0x39, 0x0a, - 0x0e, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x68, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x18, - 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x4b, 0x65, 0x79, 0x52, 0x0e, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x68, - 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x65, 0x78, - 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3c, 0x0a, 0x19, 0x65, 0x70, 0x68, 0x65, - 0x6d, 0x65, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x19, 0x65, 0x70, 0x68, - 0x65, 0x6d, 0x65, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x34, 0x0a, 0x15, 0x65, 0x70, 0x68, 0x65, 0x6d, 0x65, - 0x72, 0x61, 0x6c, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, - 0x1b, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x15, 0x65, 0x70, 0x68, 0x65, 0x6d, 0x65, 0x72, 0x61, 0x6c, - 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x44, 0x0a, 0x0f, - 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x41, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x18, - 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x78, - 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x41, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x0f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x41, 0x64, 0x52, 0x65, 0x70, - 0x6c, 0x79, 0x22, 0x8a, 0x01, 0x0a, 0x1c, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x4b, 0x65, 0x79, - 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x50, 0x0a, - 0x23, 0x61, 0x78, 0x6f, 0x6c, 0x6f, 0x74, 0x6c, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x4b, 0x65, - 0x79, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x23, 0x61, 0x78, 0x6f, 0x6c, - 0x6f, 0x74, 0x6c, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x44, 0x69, 0x73, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, - 0xe6, 0x07, 0x0a, 0x0c, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, - 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x69, 0x6d, 0x65, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x69, 0x6d, 0x65, 0x74, 0x79, 0x70, 0x65, 0x12, 0x18, - 0x0a, 0x07, 0x63, 0x61, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x63, 0x61, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x6c, 0x65, - 0x53, 0x68, 0x61, 0x32, 0x35, 0x36, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x66, 0x69, - 0x6c, 0x65, 0x53, 0x68, 0x61, 0x32, 0x35, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x6c, 0x65, - 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x66, 0x69, - 0x6c, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, - 0x12, 0x14, 0x0a, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x4b, - 0x65, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x4b, - 0x65, 0x79, 0x12, 0x24, 0x0a, 0x0d, 0x66, 0x69, 0x6c, 0x65, 0x45, 0x6e, 0x63, 0x53, 0x68, 0x61, - 0x32, 0x35, 0x36, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x66, 0x69, 0x6c, 0x65, 0x45, - 0x6e, 0x63, 0x53, 0x68, 0x61, 0x32, 0x35, 0x36, 0x12, 0x54, 0x0a, 0x16, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x41, 0x6e, 0x6e, 0x6f, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x16, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x61, 0x63, 0x74, - 0x69, 0x76, 0x65, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1e, - 0x0a, 0x0a, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x50, 0x61, 0x74, 0x68, 0x18, 0x0b, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x50, 0x61, 0x74, 0x68, 0x12, 0x2c, - 0x0a, 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x4b, 0x65, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, - 0x4b, 0x65, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x24, 0x0a, 0x0d, - 0x6a, 0x70, 0x65, 0x67, 0x54, 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x18, 0x10, 0x20, - 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x6a, 0x70, 0x65, 0x67, 0x54, 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, - 0x69, 0x6c, 0x12, 0x34, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x66, - 0x6f, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, - 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x63, 0x6f, 0x6e, - 0x74, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2a, 0x0a, 0x10, 0x66, 0x69, 0x72, 0x73, - 0x74, 0x53, 0x63, 0x61, 0x6e, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x18, 0x12, 0x20, 0x01, - 0x28, 0x0c, 0x52, 0x10, 0x66, 0x69, 0x72, 0x73, 0x74, 0x53, 0x63, 0x61, 0x6e, 0x53, 0x69, 0x64, - 0x65, 0x63, 0x61, 0x72, 0x12, 0x28, 0x0a, 0x0f, 0x66, 0x69, 0x72, 0x73, 0x74, 0x53, 0x63, 0x61, - 0x6e, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x66, - 0x69, 0x72, 0x73, 0x74, 0x53, 0x63, 0x61, 0x6e, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x2c, - 0x0a, 0x11, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x49, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x65, 0x78, 0x70, 0x65, 0x72, - 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, - 0x73, 0x63, 0x61, 0x6e, 0x73, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x18, 0x15, 0x20, 0x01, - 0x28, 0x0c, 0x52, 0x0c, 0x73, 0x63, 0x61, 0x6e, 0x73, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, - 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x63, 0x61, 0x6e, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x73, 0x18, - 0x16, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0b, 0x73, 0x63, 0x61, 0x6e, 0x4c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x73, 0x12, 0x32, 0x0a, 0x14, 0x6d, 0x69, 0x64, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, - 0x46, 0x69, 0x6c, 0x65, 0x53, 0x68, 0x61, 0x32, 0x35, 0x36, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0c, - 0x52, 0x14, 0x6d, 0x69, 0x64, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x46, 0x69, 0x6c, 0x65, - 0x53, 0x68, 0x61, 0x32, 0x35, 0x36, 0x12, 0x38, 0x0a, 0x17, 0x6d, 0x69, 0x64, 0x51, 0x75, 0x61, - 0x6c, 0x69, 0x74, 0x79, 0x46, 0x69, 0x6c, 0x65, 0x45, 0x6e, 0x63, 0x53, 0x68, 0x61, 0x32, 0x35, - 0x36, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x17, 0x6d, 0x69, 0x64, 0x51, 0x75, 0x61, 0x6c, - 0x69, 0x74, 0x79, 0x46, 0x69, 0x6c, 0x65, 0x45, 0x6e, 0x63, 0x53, 0x68, 0x61, 0x32, 0x35, 0x36, - 0x12, 0x1a, 0x0a, 0x08, 0x76, 0x69, 0x65, 0x77, 0x4f, 0x6e, 0x63, 0x65, 0x18, 0x19, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x08, 0x76, 0x69, 0x65, 0x77, 0x4f, 0x6e, 0x63, 0x65, 0x12, 0x30, 0x0a, 0x13, - 0x74, 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x50, - 0x61, 0x74, 0x68, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x74, 0x68, 0x75, 0x6d, 0x62, - 0x6e, 0x61, 0x69, 0x6c, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x50, 0x61, 0x74, 0x68, 0x12, 0x28, - 0x0a, 0x0f, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x53, 0x68, 0x61, 0x32, 0x35, - 0x36, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, - 0x69, 0x6c, 0x53, 0x68, 0x61, 0x32, 0x35, 0x36, 0x12, 0x2e, 0x0a, 0x12, 0x74, 0x68, 0x75, 0x6d, - 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x45, 0x6e, 0x63, 0x53, 0x68, 0x61, 0x32, 0x35, 0x36, 0x18, 0x1c, - 0x20, 0x01, 0x28, 0x0c, 0x52, 0x12, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x45, - 0x6e, 0x63, 0x53, 0x68, 0x61, 0x32, 0x35, 0x36, 0x22, 0xc8, 0x04, 0x0a, 0x0e, 0x49, 0x6e, 0x76, - 0x6f, 0x69, 0x63, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x6f, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x74, 0x65, 0x12, - 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x5a, 0x0a, 0x0e, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, - 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x32, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x49, 0x6e, 0x76, 0x6f, 0x69, 0x63, 0x65, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x2e, 0x49, 0x6e, 0x76, 0x6f, 0x69, 0x63, 0x65, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, - 0x65, 0x52, 0x0e, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x2e, 0x0a, 0x12, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x4d, - 0x69, 0x6d, 0x65, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x61, - 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x69, 0x6d, 0x65, 0x74, 0x79, 0x70, - 0x65, 0x12, 0x2e, 0x0a, 0x12, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x4d, - 0x65, 0x64, 0x69, 0x61, 0x4b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x12, 0x61, - 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x4b, 0x65, - 0x79, 0x12, 0x40, 0x0a, 0x1b, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x4d, - 0x65, 0x64, 0x69, 0x61, 0x4b, 0x65, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x1b, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, - 0x6e, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x4b, 0x65, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x12, 0x32, 0x0a, 0x14, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, - 0x74, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x68, 0x61, 0x32, 0x35, 0x36, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x14, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x46, 0x69, 0x6c, - 0x65, 0x53, 0x68, 0x61, 0x32, 0x35, 0x36, 0x12, 0x38, 0x0a, 0x17, 0x61, 0x74, 0x74, 0x61, 0x63, - 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x45, 0x6e, 0x63, 0x53, 0x68, 0x61, 0x32, - 0x35, 0x36, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x17, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, - 0x6d, 0x65, 0x6e, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x45, 0x6e, 0x63, 0x53, 0x68, 0x61, 0x32, 0x35, - 0x36, 0x12, 0x32, 0x0a, 0x14, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x44, - 0x69, 0x72, 0x65, 0x63, 0x74, 0x50, 0x61, 0x74, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x14, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, - 0x74, 0x50, 0x61, 0x74, 0x68, 0x12, 0x38, 0x0a, 0x17, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, - 0x65, 0x6e, 0x74, 0x4a, 0x70, 0x65, 0x67, 0x54, 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x17, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, - 0x6e, 0x74, 0x4a, 0x70, 0x65, 0x67, 0x54, 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x22, - 0x32, 0x0a, 0x1c, 0x49, 0x6e, 0x76, 0x6f, 0x69, 0x63, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x09, 0x0a, 0x05, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x50, 0x44, - 0x46, 0x10, 0x01, 0x22, 0x7e, 0x0a, 0x0e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, - 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, - 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x63, 0x61, 0x72, 0x64, - 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x63, 0x61, 0x72, 0x64, 0x12, 0x34, 0x0a, - 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x11, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, - 0x78, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x49, - 0x6e, 0x66, 0x6f, 0x22, 0xcf, 0x03, 0x0a, 0x0f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x64, 0x65, 0x67, 0x72, 0x65, - 0x65, 0x73, 0x4c, 0x61, 0x74, 0x69, 0x74, 0x75, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, - 0x52, 0x0f, 0x64, 0x65, 0x67, 0x72, 0x65, 0x65, 0x73, 0x4c, 0x61, 0x74, 0x69, 0x74, 0x75, 0x64, - 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x64, 0x65, 0x67, 0x72, 0x65, 0x65, 0x73, 0x4c, 0x6f, 0x6e, 0x67, - 0x69, 0x74, 0x75, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x10, 0x64, 0x65, 0x67, - 0x72, 0x65, 0x65, 0x73, 0x4c, 0x6f, 0x6e, 0x67, 0x69, 0x74, 0x75, 0x64, 0x65, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x75, - 0x72, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x16, 0x0a, - 0x06, 0x69, 0x73, 0x4c, 0x69, 0x76, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x69, - 0x73, 0x4c, 0x69, 0x76, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x61, 0x63, 0x63, 0x75, 0x72, 0x61, 0x63, - 0x79, 0x49, 0x6e, 0x4d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x10, 0x61, 0x63, 0x63, 0x75, 0x72, 0x61, 0x63, 0x79, 0x49, 0x6e, 0x4d, 0x65, 0x74, 0x65, 0x72, - 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x70, 0x65, 0x65, 0x64, 0x49, 0x6e, 0x4d, 0x70, 0x73, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x73, 0x70, 0x65, 0x65, 0x64, 0x49, 0x6e, 0x4d, 0x70, - 0x73, 0x12, 0x4c, 0x0a, 0x21, 0x64, 0x65, 0x67, 0x72, 0x65, 0x65, 0x73, 0x43, 0x6c, 0x6f, 0x63, - 0x6b, 0x77, 0x69, 0x73, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x61, 0x67, 0x6e, 0x65, 0x74, 0x69, - 0x63, 0x4e, 0x6f, 0x72, 0x74, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x21, 0x64, 0x65, - 0x67, 0x72, 0x65, 0x65, 0x73, 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x77, 0x69, 0x73, 0x65, 0x46, 0x72, - 0x6f, 0x6d, 0x4d, 0x61, 0x67, 0x6e, 0x65, 0x74, 0x69, 0x63, 0x4e, 0x6f, 0x72, 0x74, 0x68, 0x12, - 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x6a, 0x70, 0x65, - 0x67, 0x54, 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0c, - 0x52, 0x0d, 0x6a, 0x70, 0x65, 0x67, 0x54, 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x12, - 0x34, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x11, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6e, - 0x74, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, - 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xdd, 0x05, 0x0a, 0x13, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, - 0x65, 0x64, 0x54, 0x65, 0x78, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, - 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, - 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x54, 0x65, 0x78, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x54, - 0x65, 0x78, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, - 0x55, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x61, 0x6e, 0x6f, 0x6e, - 0x69, 0x63, 0x61, 0x6c, 0x55, 0x72, 0x6c, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, - 0x1a, 0x0a, 0x08, 0x74, 0x65, 0x78, 0x74, 0x41, 0x72, 0x67, 0x62, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x07, 0x52, 0x08, 0x74, 0x65, 0x78, 0x74, 0x41, 0x72, 0x67, 0x62, 0x12, 0x26, 0x0a, 0x0e, 0x62, - 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x41, 0x72, 0x67, 0x62, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x07, 0x52, 0x0e, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x41, - 0x72, 0x67, 0x62, 0x12, 0x4a, 0x0a, 0x04, 0x66, 0x6f, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x36, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, - 0x65, 0x64, 0x54, 0x65, 0x78, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x45, 0x78, - 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x54, 0x65, 0x78, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x46, 0x6f, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x66, 0x6f, 0x6e, 0x74, 0x12, - 0x5b, 0x0a, 0x0b, 0x70, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x39, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x78, 0x74, - 0x65, 0x6e, 0x64, 0x65, 0x64, 0x54, 0x65, 0x78, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x54, 0x65, 0x78, 0x74, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x54, 0x79, 0x70, 0x65, 0x52, - 0x0b, 0x70, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x54, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x0d, - 0x6a, 0x70, 0x65, 0x67, 0x54, 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x18, 0x10, 0x20, - 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x6a, 0x70, 0x65, 0x67, 0x54, 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, - 0x69, 0x6c, 0x12, 0x34, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x66, - 0x6f, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, - 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x63, 0x6f, 0x6e, - 0x74, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x28, 0x0a, 0x0f, 0x64, 0x6f, 0x4e, 0x6f, - 0x74, 0x50, 0x6c, 0x61, 0x79, 0x49, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0f, 0x64, 0x6f, 0x4e, 0x6f, 0x74, 0x50, 0x6c, 0x61, 0x79, 0x49, 0x6e, 0x6c, 0x69, - 0x6e, 0x65, 0x22, 0x89, 0x01, 0x0a, 0x1b, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x54, - 0x65, 0x78, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x46, 0x6f, 0x6e, 0x74, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x41, 0x4e, 0x53, 0x5f, 0x53, 0x45, 0x52, 0x49, 0x46, - 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x45, 0x52, 0x49, 0x46, 0x10, 0x01, 0x12, 0x13, 0x0a, - 0x0f, 0x4e, 0x4f, 0x52, 0x49, 0x43, 0x41, 0x4e, 0x5f, 0x52, 0x45, 0x47, 0x55, 0x4c, 0x41, 0x52, - 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x42, 0x52, 0x59, 0x4e, 0x44, 0x41, 0x4e, 0x5f, 0x57, 0x52, - 0x49, 0x54, 0x45, 0x10, 0x03, 0x12, 0x15, 0x0a, 0x11, 0x42, 0x45, 0x42, 0x41, 0x53, 0x4e, 0x45, - 0x55, 0x45, 0x5f, 0x52, 0x45, 0x47, 0x55, 0x4c, 0x41, 0x52, 0x10, 0x04, 0x12, 0x10, 0x0a, 0x0c, - 0x4f, 0x53, 0x57, 0x41, 0x4c, 0x44, 0x5f, 0x48, 0x45, 0x41, 0x56, 0x59, 0x10, 0x05, 0x22, 0x35, - 0x0a, 0x1e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x54, 0x65, 0x78, 0x74, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x56, 0x49, - 0x44, 0x45, 0x4f, 0x10, 0x01, 0x22, 0xbd, 0x05, 0x0a, 0x0f, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, - 0x6e, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x6d, - 0x69, 0x6d, 0x65, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, - 0x69, 0x6d, 0x65, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1e, 0x0a, - 0x0a, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x68, 0x61, 0x32, 0x35, 0x36, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x0a, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x68, 0x61, 0x32, 0x35, 0x36, 0x12, 0x1e, 0x0a, - 0x0a, 0x66, 0x69, 0x6c, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x0a, 0x66, 0x69, 0x6c, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x1c, 0x0a, - 0x09, 0x70, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6d, - 0x65, 0x64, 0x69, 0x61, 0x4b, 0x65, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6d, - 0x65, 0x64, 0x69, 0x61, 0x4b, 0x65, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x4e, - 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x66, 0x69, 0x6c, 0x65, 0x45, 0x6e, 0x63, 0x53, 0x68, - 0x61, 0x32, 0x35, 0x36, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x66, 0x69, 0x6c, 0x65, - 0x45, 0x6e, 0x63, 0x53, 0x68, 0x61, 0x32, 0x35, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x69, 0x72, - 0x65, 0x63, 0x74, 0x50, 0x61, 0x74, 0x68, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, - 0x69, 0x72, 0x65, 0x63, 0x74, 0x50, 0x61, 0x74, 0x68, 0x12, 0x2c, 0x0a, 0x11, 0x6d, 0x65, 0x64, - 0x69, 0x61, 0x4b, 0x65, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x0b, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x4b, 0x65, 0x79, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x61, - 0x63, 0x74, 0x56, 0x63, 0x61, 0x72, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x63, - 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x56, 0x63, 0x61, 0x72, 0x64, 0x12, 0x30, 0x0a, 0x13, 0x74, - 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x50, 0x61, - 0x74, 0x68, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x6e, - 0x61, 0x69, 0x6c, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x50, 0x61, 0x74, 0x68, 0x12, 0x28, 0x0a, - 0x0f, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x53, 0x68, 0x61, 0x32, 0x35, 0x36, - 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, - 0x6c, 0x53, 0x68, 0x61, 0x32, 0x35, 0x36, 0x12, 0x2e, 0x0a, 0x12, 0x74, 0x68, 0x75, 0x6d, 0x62, - 0x6e, 0x61, 0x69, 0x6c, 0x45, 0x6e, 0x63, 0x53, 0x68, 0x61, 0x32, 0x35, 0x36, 0x18, 0x0f, 0x20, - 0x01, 0x28, 0x0c, 0x52, 0x12, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x45, 0x6e, - 0x63, 0x53, 0x68, 0x61, 0x32, 0x35, 0x36, 0x12, 0x24, 0x0a, 0x0d, 0x6a, 0x70, 0x65, 0x67, 0x54, - 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, - 0x6a, 0x70, 0x65, 0x67, 0x54, 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x12, 0x34, 0x0a, - 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x11, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, - 0x78, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x49, - 0x6e, 0x66, 0x6f, 0x12, 0x28, 0x0a, 0x0f, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, - 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x68, - 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x26, 0x0a, - 0x0e, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x57, 0x69, 0x64, 0x74, 0x68, 0x18, - 0x13, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, - 0x57, 0x69, 0x64, 0x74, 0x68, 0x22, 0x9a, 0x03, 0x0a, 0x0c, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x69, 0x6d, 0x65, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x69, 0x6d, 0x65, - 0x74, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x68, 0x61, 0x32, - 0x35, 0x36, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x68, - 0x61, 0x32, 0x35, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x6c, 0x65, 0x4c, 0x65, 0x6e, 0x67, - 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x66, 0x69, 0x6c, 0x65, 0x4c, 0x65, - 0x6e, 0x67, 0x74, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x10, - 0x0a, 0x03, 0x70, 0x74, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x70, 0x74, 0x74, - 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x4b, 0x65, 0x79, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x0c, 0x52, 0x08, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x4b, 0x65, 0x79, 0x12, 0x24, 0x0a, 0x0d, - 0x66, 0x69, 0x6c, 0x65, 0x45, 0x6e, 0x63, 0x53, 0x68, 0x61, 0x32, 0x35, 0x36, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x66, 0x69, 0x6c, 0x65, 0x45, 0x6e, 0x63, 0x53, 0x68, 0x61, 0x32, - 0x35, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x50, 0x61, 0x74, 0x68, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x50, 0x61, - 0x74, 0x68, 0x12, 0x2c, 0x0a, 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x4b, 0x65, 0x79, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x6d, - 0x65, 0x64, 0x69, 0x61, 0x4b, 0x65, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x12, 0x34, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x18, - 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, - 0x6e, 0x74, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, - 0x78, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2a, 0x0a, 0x10, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x69, 0x6e, 0x67, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0c, - 0x52, 0x10, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x53, 0x69, 0x64, 0x65, 0x63, - 0x61, 0x72, 0x22, 0xa6, 0x07, 0x0a, 0x0c, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x69, 0x6d, 0x65, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x69, 0x6d, 0x65, 0x74, 0x79, 0x70, - 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x68, 0x61, 0x32, 0x35, 0x36, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x68, 0x61, 0x32, 0x35, - 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x6c, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x66, 0x69, 0x6c, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x07, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6d, - 0x65, 0x64, 0x69, 0x61, 0x4b, 0x65, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6d, - 0x65, 0x64, 0x69, 0x61, 0x4b, 0x65, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x61, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x61, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x67, 0x69, 0x66, 0x50, 0x6c, 0x61, 0x79, 0x62, 0x61, 0x63, 0x6b, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x67, 0x69, 0x66, 0x50, 0x6c, 0x61, 0x79, 0x62, - 0x61, 0x63, 0x6b, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x77, - 0x69, 0x64, 0x74, 0x68, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x77, 0x69, 0x64, 0x74, - 0x68, 0x12, 0x24, 0x0a, 0x0d, 0x66, 0x69, 0x6c, 0x65, 0x45, 0x6e, 0x63, 0x53, 0x68, 0x61, 0x32, - 0x35, 0x36, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x66, 0x69, 0x6c, 0x65, 0x45, 0x6e, - 0x63, 0x53, 0x68, 0x61, 0x32, 0x35, 0x36, 0x12, 0x54, 0x0a, 0x16, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, - 0x49, 0x6e, 0x74, 0x65, 0x72, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x41, 0x6e, 0x6e, 0x6f, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x16, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x61, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1e, 0x0a, - 0x0a, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x50, 0x61, 0x74, 0x68, 0x18, 0x0d, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x50, 0x61, 0x74, 0x68, 0x12, 0x2c, 0x0a, - 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x4b, 0x65, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x4b, - 0x65, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x24, 0x0a, 0x0d, 0x6a, - 0x70, 0x65, 0x67, 0x54, 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x18, 0x10, 0x20, 0x01, - 0x28, 0x0c, 0x52, 0x0d, 0x6a, 0x70, 0x65, 0x67, 0x54, 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, - 0x6c, 0x12, 0x34, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x66, 0x6f, - 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, - 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, - 0x65, 0x78, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2a, 0x0a, 0x10, 0x73, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x69, 0x6e, 0x67, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x18, 0x12, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x10, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x53, 0x69, 0x64, 0x65, - 0x63, 0x61, 0x72, 0x12, 0x53, 0x0a, 0x0e, 0x67, 0x69, 0x66, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2e, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x2e, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x41, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x67, 0x69, 0x66, 0x41, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x76, 0x69, 0x65, 0x77, - 0x4f, 0x6e, 0x63, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x76, 0x69, 0x65, 0x77, - 0x4f, 0x6e, 0x63, 0x65, 0x12, 0x30, 0x0a, 0x13, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, - 0x6c, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x50, 0x61, 0x74, 0x68, 0x18, 0x15, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x13, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x44, 0x69, 0x72, 0x65, - 0x63, 0x74, 0x50, 0x61, 0x74, 0x68, 0x12, 0x28, 0x0a, 0x0f, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x6e, - 0x61, 0x69, 0x6c, 0x53, 0x68, 0x61, 0x32, 0x35, 0x36, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0c, 0x52, - 0x0f, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x53, 0x68, 0x61, 0x32, 0x35, 0x36, - 0x12, 0x2e, 0x0a, 0x12, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x45, 0x6e, 0x63, - 0x53, 0x68, 0x61, 0x32, 0x35, 0x36, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x12, 0x74, 0x68, - 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x45, 0x6e, 0x63, 0x53, 0x68, 0x61, 0x32, 0x35, 0x36, - 0x22, 0x39, 0x0a, 0x17, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x08, 0x0a, 0x04, 0x4e, - 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x47, 0x49, 0x50, 0x48, 0x59, 0x10, 0x01, - 0x12, 0x09, 0x0a, 0x05, 0x54, 0x45, 0x4e, 0x4f, 0x52, 0x10, 0x02, 0x22, 0x20, 0x0a, 0x04, 0x43, - 0x61, 0x6c, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x61, 0x6c, 0x6c, 0x4b, 0x65, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x63, 0x61, 0x6c, 0x6c, 0x4b, 0x65, 0x79, 0x22, 0x38, 0x0a, - 0x04, 0x43, 0x68, 0x61, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, - 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, - 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x9d, 0x08, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x23, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4b, 0x65, 0x79, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x12, 0x3e, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x12, 0x30, 0x0a, 0x13, 0x65, 0x70, 0x68, 0x65, 0x6d, 0x65, 0x72, 0x61, 0x6c, 0x45, 0x78, 0x70, - 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x13, 0x65, - 0x70, 0x68, 0x65, 0x6d, 0x65, 0x72, 0x61, 0x6c, 0x45, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x3c, 0x0a, 0x19, 0x65, 0x70, 0x68, 0x65, 0x6d, 0x65, 0x72, 0x61, 0x6c, 0x53, - 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x19, 0x65, 0x70, 0x68, 0x65, 0x6d, 0x65, 0x72, 0x61, 0x6c, - 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x12, 0x58, 0x0a, 0x17, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x79, 0x6e, 0x63, 0x4e, - 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, - 0x79, 0x53, 0x79, 0x6e, 0x63, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x17, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x79, 0x6e, 0x63, 0x4e, 0x6f, - 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4f, 0x0a, 0x14, 0x61, 0x70, - 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x4b, 0x65, 0x79, 0x53, 0x68, 0x61, - 0x72, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x41, 0x70, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x4b, 0x65, 0x79, - 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, 0x14, 0x61, 0x70, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x53, - 0x79, 0x6e, 0x63, 0x4b, 0x65, 0x79, 0x53, 0x68, 0x61, 0x72, 0x65, 0x12, 0x55, 0x0a, 0x16, 0x61, - 0x70, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x4b, 0x65, 0x79, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x70, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x53, 0x79, 0x6e, 0x63, - 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x16, 0x61, 0x70, 0x70, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x85, 0x01, 0x0a, 0x26, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x53, 0x65, - 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x79, 0x6e, 0x63, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x49, 0x6e, 0x69, 0x74, - 0x69, 0x61, 0x6c, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x4e, 0x6f, 0x74, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x79, - 0x6e, 0x63, 0x52, 0x26, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x53, 0x65, 0x63, 0x75, 0x72, - 0x69, 0x74, 0x79, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, - 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x79, 0x6e, 0x63, 0x12, 0x79, 0x0a, 0x22, 0x61, 0x70, - 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x46, 0x61, 0x74, 0x61, 0x6c, 0x45, 0x78, 0x63, 0x65, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, - 0x70, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x46, 0x61, 0x74, 0x61, 0x6c, 0x45, 0x78, 0x63, 0x65, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x22, 0x61, 0x70, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x46, 0x61, 0x74, 0x61, 0x6c, - 0x45, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xaf, 0x02, 0x0a, 0x13, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, - 0x6f, 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0a, 0x0a, - 0x06, 0x52, 0x45, 0x56, 0x4f, 0x4b, 0x45, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x45, 0x50, 0x48, - 0x45, 0x4d, 0x45, 0x52, 0x41, 0x4c, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x03, - 0x12, 0x1b, 0x0a, 0x17, 0x45, 0x50, 0x48, 0x45, 0x4d, 0x45, 0x52, 0x41, 0x4c, 0x5f, 0x53, 0x59, - 0x4e, 0x43, 0x5f, 0x52, 0x45, 0x53, 0x50, 0x4f, 0x4e, 0x53, 0x45, 0x10, 0x04, 0x12, 0x1d, 0x0a, - 0x19, 0x48, 0x49, 0x53, 0x54, 0x4f, 0x52, 0x59, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x4e, 0x4f, - 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x05, 0x12, 0x1c, 0x0a, 0x18, - 0x41, 0x50, 0x50, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x4b, - 0x45, 0x59, 0x5f, 0x53, 0x48, 0x41, 0x52, 0x45, 0x10, 0x06, 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x50, - 0x50, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x4b, 0x45, 0x59, - 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0x07, 0x12, 0x1f, 0x0a, 0x1b, 0x4d, 0x53, - 0x47, 0x5f, 0x46, 0x41, 0x4e, 0x4f, 0x55, 0x54, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x46, 0x49, 0x4c, - 0x4c, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0x08, 0x12, 0x2e, 0x0a, 0x2a, 0x49, - 0x4e, 0x49, 0x54, 0x49, 0x41, 0x4c, 0x5f, 0x53, 0x45, 0x43, 0x55, 0x52, 0x49, 0x54, 0x59, 0x5f, - 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x54, - 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x10, 0x09, 0x12, 0x2a, 0x0a, 0x26, 0x41, - 0x50, 0x50, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x46, 0x41, 0x54, 0x41, 0x4c, 0x5f, 0x45, - 0x58, 0x43, 0x45, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49, 0x43, - 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x0a, 0x22, 0xe9, 0x03, 0x0a, 0x17, 0x48, 0x69, 0x73, 0x74, - 0x6f, 0x72, 0x79, 0x53, 0x79, 0x6e, 0x63, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x68, 0x61, 0x32, 0x35, - 0x36, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x68, 0x61, - 0x32, 0x35, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x6c, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x66, 0x69, 0x6c, 0x65, 0x4c, 0x65, 0x6e, - 0x67, 0x74, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x4b, 0x65, 0x79, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x4b, 0x65, 0x79, 0x12, - 0x24, 0x0a, 0x0d, 0x66, 0x69, 0x6c, 0x65, 0x45, 0x6e, 0x63, 0x53, 0x68, 0x61, 0x32, 0x35, 0x36, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x66, 0x69, 0x6c, 0x65, 0x45, 0x6e, 0x63, 0x53, - 0x68, 0x61, 0x32, 0x35, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x50, - 0x61, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x69, 0x72, 0x65, 0x63, - 0x74, 0x50, 0x61, 0x74, 0x68, 0x12, 0x61, 0x0a, 0x08, 0x73, 0x79, 0x6e, 0x63, 0x54, 0x79, 0x70, - 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x45, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, - 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x79, 0x6e, 0x63, 0x4e, 0x6f, 0x74, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x53, - 0x79, 0x6e, 0x63, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, - 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x79, 0x6e, 0x63, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, - 0x73, 0x79, 0x6e, 0x63, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x68, 0x75, 0x6e, - 0x6b, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x63, 0x68, - 0x75, 0x6e, 0x6b, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x2c, 0x0a, 0x11, 0x6f, 0x72, 0x69, 0x67, - 0x69, 0x6e, 0x61, 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x11, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x22, 0x7b, 0x0a, 0x26, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, - 0x79, 0x53, 0x79, 0x6e, 0x63, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x79, 0x6e, 0x63, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x15, 0x0a, 0x11, 0x49, 0x4e, 0x49, 0x54, 0x49, 0x41, 0x4c, 0x5f, 0x42, 0x4f, 0x4f, 0x54, - 0x53, 0x54, 0x52, 0x41, 0x50, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x49, 0x4e, 0x49, 0x54, 0x49, - 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x56, 0x33, 0x10, 0x01, 0x12, 0x08, - 0x0a, 0x04, 0x46, 0x55, 0x4c, 0x4c, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x45, 0x43, 0x45, - 0x4e, 0x54, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x50, 0x55, 0x53, 0x48, 0x5f, 0x4e, 0x41, 0x4d, - 0x45, 0x10, 0x04, 0x22, 0x77, 0x0a, 0x0f, 0x41, 0x70, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x53, - 0x79, 0x6e, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x2e, 0x0a, 0x05, 0x6b, 0x65, 0x79, 0x49, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x70, - 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x52, - 0x05, 0x6b, 0x65, 0x79, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x44, 0x61, 0x74, - 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, - 0x41, 0x70, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x4b, 0x65, 0x79, 0x44, - 0x61, 0x74, 0x61, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x44, 0x61, 0x74, 0x61, 0x22, 0x29, 0x0a, 0x11, - 0x41, 0x70, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x4b, 0x65, 0x79, 0x49, - 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6b, 0x65, 0x79, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, - 0x52, 0x05, 0x6b, 0x65, 0x79, 0x49, 0x64, 0x22, 0x80, 0x01, 0x0a, 0x1a, 0x41, 0x70, 0x70, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x4b, 0x65, 0x79, 0x46, 0x69, 0x6e, 0x67, 0x65, - 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x61, 0x77, 0x49, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x72, 0x61, 0x77, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, - 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x0c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, - 0x12, 0x28, 0x0a, 0x0d, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x65, - 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0d, 0x64, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x73, 0x22, 0x92, 0x01, 0x0a, 0x13, 0x41, - 0x70, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x4b, 0x65, 0x79, 0x44, 0x61, - 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0c, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x44, 0x61, 0x74, 0x61, 0x12, 0x43, 0x0a, 0x0b, - 0x66, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x21, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x70, 0x70, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x4b, 0x65, 0x79, 0x46, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, - 0x72, 0x69, 0x6e, 0x74, 0x52, 0x0b, 0x66, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, - 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, - 0x42, 0x0a, 0x14, 0x41, 0x70, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x4b, - 0x65, 0x79, 0x53, 0x68, 0x61, 0x72, 0x65, 0x12, 0x2a, 0x0a, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x70, - 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x4b, 0x65, 0x79, 0x52, 0x04, 0x6b, - 0x65, 0x79, 0x73, 0x22, 0x4a, 0x0a, 0x16, 0x41, 0x70, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x53, - 0x79, 0x6e, 0x63, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x30, 0x0a, - 0x06, 0x6b, 0x65, 0x79, 0x49, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x70, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x53, 0x79, - 0x6e, 0x63, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x52, 0x06, 0x6b, 0x65, 0x79, 0x49, 0x64, 0x73, 0x22, - 0x6c, 0x0a, 0x22, 0x41, 0x70, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x46, 0x61, 0x74, 0x61, 0x6c, - 0x45, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, - 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, - 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x6a, 0x0a, - 0x26, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, - 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x53, 0x79, 0x6e, 0x63, 0x12, 0x40, 0x0a, 0x1b, 0x73, 0x65, 0x63, 0x75, 0x72, - 0x69, 0x74, 0x79, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1b, 0x73, 0x65, - 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0xa1, 0x01, 0x0a, 0x14, 0x43, 0x6f, - 0x6e, 0x74, 0x61, 0x63, 0x74, 0x73, 0x41, 0x72, 0x72, 0x61, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x31, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, - 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x08, 0x63, - 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x73, 0x12, 0x34, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, - 0x78, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x66, 0x6f, - 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x51, 0x0a, - 0x0b, 0x48, 0x53, 0x4d, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x22, 0x0a, 0x0c, - 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x43, 0x6f, 0x64, 0x65, - 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x31, 0x30, 0x30, 0x30, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x31, 0x30, 0x30, 0x30, - 0x22, 0x88, 0x04, 0x0a, 0x14, 0x48, 0x53, 0x4d, 0x44, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, - 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x12, 0x5b, 0x0a, 0x09, 0x64, 0x61, 0x79, - 0x4f, 0x66, 0x57, 0x65, 0x65, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3d, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x48, 0x53, 0x4d, 0x44, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, - 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x2e, 0x48, 0x53, 0x4d, 0x44, 0x61, 0x74, - 0x65, 0x54, 0x69, 0x6d, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x44, 0x61, - 0x79, 0x4f, 0x66, 0x57, 0x65, 0x65, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x64, 0x61, 0x79, - 0x4f, 0x66, 0x57, 0x65, 0x65, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x79, 0x65, 0x61, 0x72, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x79, 0x65, 0x61, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x6f, - 0x6e, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6d, 0x6f, 0x6e, 0x74, 0x68, - 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x61, 0x79, 0x4f, 0x66, 0x4d, 0x6f, 0x6e, 0x74, 0x68, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x64, 0x61, 0x79, 0x4f, 0x66, 0x4d, 0x6f, 0x6e, 0x74, 0x68, - 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x75, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, - 0x68, 0x6f, 0x75, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x12, 0x58, 0x0a, 0x08, - 0x63, 0x61, 0x6c, 0x65, 0x6e, 0x64, 0x61, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3c, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x48, 0x53, 0x4d, 0x44, 0x61, 0x74, 0x65, 0x54, 0x69, - 0x6d, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x2e, 0x48, 0x53, 0x4d, 0x44, - 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, - 0x43, 0x61, 0x6c, 0x65, 0x6e, 0x64, 0x61, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x63, 0x61, - 0x6c, 0x65, 0x6e, 0x64, 0x61, 0x72, 0x22, 0x7f, 0x0a, 0x21, 0x48, 0x53, 0x4d, 0x44, 0x61, 0x74, - 0x65, 0x54, 0x69, 0x6d, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x44, 0x61, - 0x79, 0x4f, 0x66, 0x57, 0x65, 0x65, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x4d, - 0x4f, 0x4e, 0x44, 0x41, 0x59, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x55, 0x45, 0x53, 0x44, - 0x41, 0x59, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x57, 0x45, 0x44, 0x4e, 0x45, 0x53, 0x44, 0x41, - 0x59, 0x10, 0x03, 0x12, 0x0c, 0x0a, 0x08, 0x54, 0x48, 0x55, 0x52, 0x53, 0x44, 0x41, 0x59, 0x10, - 0x04, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x52, 0x49, 0x44, 0x41, 0x59, 0x10, 0x05, 0x12, 0x0c, 0x0a, - 0x08, 0x53, 0x41, 0x54, 0x55, 0x52, 0x44, 0x41, 0x59, 0x10, 0x06, 0x12, 0x0a, 0x0a, 0x06, 0x53, - 0x55, 0x4e, 0x44, 0x41, 0x59, 0x10, 0x07, 0x22, 0x42, 0x0a, 0x20, 0x48, 0x53, 0x4d, 0x44, 0x61, - 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x43, - 0x61, 0x6c, 0x65, 0x6e, 0x64, 0x61, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0d, 0x0a, 0x09, 0x47, - 0x52, 0x45, 0x47, 0x4f, 0x52, 0x49, 0x41, 0x4e, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x4f, - 0x4c, 0x41, 0x52, 0x5f, 0x48, 0x49, 0x4a, 0x52, 0x49, 0x10, 0x02, 0x22, 0x34, 0x0a, 0x14, 0x48, - 0x53, 0x4d, 0x44, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x78, 0x45, 0x70, - 0x6f, 0x63, 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x22, 0x98, 0x01, 0x0a, 0x0b, 0x48, 0x53, 0x4d, 0x44, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, - 0x65, 0x12, 0x3b, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x48, 0x53, 0x4d, - 0x44, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, - 0x74, 0x48, 0x00, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x12, 0x3b, - 0x0a, 0x09, 0x75, 0x6e, 0x69, 0x78, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x48, 0x53, 0x4d, 0x44, 0x61, 0x74, - 0x65, 0x54, 0x69, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x78, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x48, 0x00, - 0x52, 0x09, 0x75, 0x6e, 0x69, 0x78, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x42, 0x0f, 0x0a, 0x0d, 0x64, - 0x61, 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x22, 0xa5, 0x01, 0x0a, - 0x17, 0x48, 0x53, 0x4d, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x62, 0x6c, 0x65, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, - 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, - 0x6c, 0x74, 0x12, 0x30, 0x0a, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x48, 0x53, 0x4d, - 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x48, 0x00, 0x52, 0x08, 0x63, 0x75, 0x72, 0x72, - 0x65, 0x6e, 0x63, 0x79, 0x12, 0x30, 0x0a, 0x08, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x48, - 0x53, 0x4d, 0x44, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x48, 0x00, 0x52, 0x08, 0x64, 0x61, - 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x4f, - 0x6e, 0x65, 0x6f, 0x66, 0x22, 0x8d, 0x03, 0x0a, 0x17, 0x48, 0x69, 0x67, 0x68, 0x6c, 0x79, 0x53, - 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x20, - 0x0a, 0x0b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x61, 0x6c, 0x6c, - 0x62, 0x61, 0x63, 0x6b, 0x4c, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x61, - 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x4c, 0x67, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x61, 0x6c, 0x6c, - 0x62, 0x61, 0x63, 0x6b, 0x4c, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x61, - 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x4c, 0x63, 0x12, 0x4c, 0x0a, 0x11, 0x6c, 0x6f, 0x63, 0x61, - 0x6c, 0x69, 0x7a, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x06, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x48, 0x53, 0x4d, 0x4c, - 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, - 0x74, 0x65, 0x72, 0x52, 0x11, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x62, 0x6c, 0x65, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, - 0x69, 0x6e, 0x69, 0x73, 0x74, 0x69, 0x63, 0x4c, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0f, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x69, 0x73, 0x74, 0x69, 0x63, 0x4c, 0x67, - 0x12, 0x28, 0x0a, 0x0f, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x69, 0x73, 0x74, 0x69, - 0x63, 0x4c, 0x63, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x65, 0x74, 0x65, 0x72, - 0x6d, 0x69, 0x6e, 0x69, 0x73, 0x74, 0x69, 0x63, 0x4c, 0x63, 0x12, 0x38, 0x0a, 0x0b, 0x68, 0x79, - 0x64, 0x72, 0x61, 0x74, 0x65, 0x64, 0x48, 0x73, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0b, 0x68, 0x79, 0x64, 0x72, 0x61, 0x74, 0x65, - 0x64, 0x48, 0x73, 0x6d, 0x22, 0x87, 0x01, 0x0a, 0x12, 0x53, 0x65, 0x6e, 0x64, 0x50, 0x61, 0x79, - 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x30, 0x0a, 0x0b, 0x6e, - 0x6f, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x0e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x52, 0x0b, 0x6e, 0x6f, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x3f, 0x0a, - 0x11, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4b, - 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4b, 0x65, 0x79, 0x52, 0x11, 0x72, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4b, 0x65, 0x79, 0x22, 0x94, - 0x02, 0x0a, 0x15, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, - 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x30, 0x0a, 0x0b, 0x6e, 0x6f, 0x74, 0x65, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0b, 0x6e, - 0x6f, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x30, 0x0a, 0x13, 0x63, 0x75, - 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x73, 0x6f, 0x34, 0x32, 0x31, - 0x37, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, - 0x79, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x73, 0x6f, 0x34, 0x32, 0x31, 0x37, 0x12, 0x1e, 0x0a, 0x0a, - 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x31, 0x30, 0x30, 0x30, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x0a, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x31, 0x30, 0x30, 0x30, 0x12, 0x20, 0x0a, 0x0b, - 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x46, 0x72, 0x6f, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x46, 0x72, 0x6f, 0x6d, 0x12, 0x28, - 0x0a, 0x0f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x79, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x2b, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, - 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x06, 0x61, - 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x43, 0x0a, 0x1c, 0x44, 0x65, 0x63, 0x6c, 0x69, 0x6e, 0x65, - 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x23, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x4b, 0x65, 0x79, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0x42, 0x0a, 0x1b, 0x43, 0x61, - 0x6e, 0x63, 0x65, 0x6c, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x23, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4b, 0x65, 0x79, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0xc3, - 0x03, 0x0a, 0x13, 0x4c, 0x69, 0x76, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x64, 0x65, 0x67, 0x72, 0x65, 0x65, - 0x73, 0x4c, 0x61, 0x74, 0x69, 0x74, 0x75, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, - 0x0f, 0x64, 0x65, 0x67, 0x72, 0x65, 0x65, 0x73, 0x4c, 0x61, 0x74, 0x69, 0x74, 0x75, 0x64, 0x65, - 0x12, 0x2a, 0x0a, 0x10, 0x64, 0x65, 0x67, 0x72, 0x65, 0x65, 0x73, 0x4c, 0x6f, 0x6e, 0x67, 0x69, - 0x74, 0x75, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x10, 0x64, 0x65, 0x67, 0x72, - 0x65, 0x65, 0x73, 0x4c, 0x6f, 0x6e, 0x67, 0x69, 0x74, 0x75, 0x64, 0x65, 0x12, 0x2a, 0x0a, 0x10, - 0x61, 0x63, 0x63, 0x75, 0x72, 0x61, 0x63, 0x79, 0x49, 0x6e, 0x4d, 0x65, 0x74, 0x65, 0x72, 0x73, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x61, 0x63, 0x63, 0x75, 0x72, 0x61, 0x63, 0x79, - 0x49, 0x6e, 0x4d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x70, 0x65, 0x65, - 0x64, 0x49, 0x6e, 0x4d, 0x70, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x73, 0x70, - 0x65, 0x65, 0x64, 0x49, 0x6e, 0x4d, 0x70, 0x73, 0x12, 0x4c, 0x0a, 0x21, 0x64, 0x65, 0x67, 0x72, - 0x65, 0x65, 0x73, 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x77, 0x69, 0x73, 0x65, 0x46, 0x72, 0x6f, 0x6d, - 0x4d, 0x61, 0x67, 0x6e, 0x65, 0x74, 0x69, 0x63, 0x4e, 0x6f, 0x72, 0x74, 0x68, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x21, 0x64, 0x65, 0x67, 0x72, 0x65, 0x65, 0x73, 0x43, 0x6c, 0x6f, 0x63, - 0x6b, 0x77, 0x69, 0x73, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x61, 0x67, 0x6e, 0x65, 0x74, 0x69, - 0x63, 0x4e, 0x6f, 0x72, 0x74, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x61, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x61, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x26, 0x0a, 0x0e, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, - 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x69, 0x6d, 0x65, - 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x69, - 0x6d, 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x6a, 0x70, 0x65, 0x67, - 0x54, 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0c, 0x52, - 0x0d, 0x6a, 0x70, 0x65, 0x67, 0x54, 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x12, 0x34, - 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x11, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6e, 0x74, - 0x65, 0x78, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, - 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x90, 0x04, 0x0a, 0x0e, 0x53, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x72, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x6c, - 0x65, 0x53, 0x68, 0x61, 0x32, 0x35, 0x36, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x66, - 0x69, 0x6c, 0x65, 0x53, 0x68, 0x61, 0x32, 0x35, 0x36, 0x12, 0x24, 0x0a, 0x0d, 0x66, 0x69, 0x6c, - 0x65, 0x45, 0x6e, 0x63, 0x53, 0x68, 0x61, 0x32, 0x35, 0x36, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, - 0x52, 0x0d, 0x66, 0x69, 0x6c, 0x65, 0x45, 0x6e, 0x63, 0x53, 0x68, 0x61, 0x32, 0x35, 0x36, 0x12, - 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x4b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x08, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x4b, 0x65, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x6d, - 0x69, 0x6d, 0x65, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, - 0x69, 0x6d, 0x65, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, - 0x14, 0x0a, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, - 0x77, 0x69, 0x64, 0x74, 0x68, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x50, - 0x61, 0x74, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x69, 0x72, 0x65, 0x63, - 0x74, 0x50, 0x61, 0x74, 0x68, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x6c, 0x65, 0x4c, 0x65, 0x6e, - 0x67, 0x74, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x66, 0x69, 0x6c, 0x65, 0x4c, - 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x2c, 0x0a, 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x4b, 0x65, - 0x79, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x4b, 0x65, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x12, 0x2a, 0x0a, 0x10, 0x66, 0x69, 0x72, 0x73, 0x74, 0x46, 0x72, 0x61, 0x6d, - 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x66, - 0x69, 0x72, 0x73, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, - 0x2c, 0x0a, 0x11, 0x66, 0x69, 0x72, 0x73, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x53, 0x69, 0x64, - 0x65, 0x63, 0x61, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x11, 0x66, 0x69, 0x72, 0x73, - 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x53, 0x69, 0x64, 0x65, 0x63, 0x61, 0x72, 0x12, 0x1e, 0x0a, - 0x0a, 0x69, 0x73, 0x41, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0a, 0x69, 0x73, 0x41, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x12, 0x22, 0x0a, - 0x0c, 0x70, 0x6e, 0x67, 0x54, 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x18, 0x10, 0x20, - 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x70, 0x6e, 0x67, 0x54, 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, - 0x6c, 0x12, 0x34, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x66, 0x6f, - 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, - 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, - 0x65, 0x78, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x97, 0x04, 0x0a, 0x0f, 0x46, 0x6f, 0x75, 0x72, - 0x52, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x38, 0x0a, 0x07, 0x63, - 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x48, 0x69, 0x67, 0x68, 0x6c, 0x79, 0x53, 0x74, 0x72, 0x75, 0x63, - 0x74, 0x75, 0x72, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x07, 0x63, 0x6f, - 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x36, 0x0a, 0x06, 0x66, 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x48, 0x69, - 0x67, 0x68, 0x6c, 0x79, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x06, 0x66, 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x12, 0x2f, 0x0a, - 0x07, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, - 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x52, 0x07, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x73, 0x12, 0x42, - 0x0a, 0x0f, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, - 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, - 0x00, 0x52, 0x0f, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x12, 0x5a, 0x0a, 0x17, 0x68, 0x69, 0x67, 0x68, 0x6c, 0x79, 0x53, 0x74, 0x72, 0x75, - 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x48, 0x69, 0x67, 0x68, - 0x6c, 0x79, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x17, 0x68, 0x69, 0x67, 0x68, 0x6c, 0x79, 0x53, 0x74, 0x72, - 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x39, - 0x0a, 0x0c, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x49, 0x6d, 0x61, - 0x67, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x0c, 0x69, 0x6d, 0x61, - 0x67, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x39, 0x0a, 0x0c, 0x76, 0x69, 0x64, - 0x65, 0x6f, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x0c, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x12, 0x42, 0x0a, 0x0f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x0f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, - 0x65, 0x22, 0x9b, 0x04, 0x0a, 0x17, 0x48, 0x79, 0x64, 0x72, 0x61, 0x74, 0x65, 0x64, 0x46, 0x6f, - 0x75, 0x72, 0x52, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x30, 0x0a, - 0x13, 0x68, 0x79, 0x64, 0x72, 0x61, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x54, 0x65, 0x78, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x68, 0x79, 0x64, 0x72, - 0x61, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x65, 0x78, 0x74, 0x12, - 0x2e, 0x0a, 0x12, 0x68, 0x79, 0x64, 0x72, 0x61, 0x74, 0x65, 0x64, 0x46, 0x6f, 0x6f, 0x74, 0x65, - 0x72, 0x54, 0x65, 0x78, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x68, 0x79, 0x64, - 0x72, 0x61, 0x74, 0x65, 0x64, 0x46, 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x54, 0x65, 0x78, 0x74, 0x12, - 0x47, 0x0a, 0x0f, 0x68, 0x79, 0x64, 0x72, 0x61, 0x74, 0x65, 0x64, 0x42, 0x75, 0x74, 0x74, 0x6f, - 0x6e, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x48, 0x79, 0x64, 0x72, 0x61, 0x74, 0x65, 0x64, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x52, 0x0f, 0x68, 0x79, 0x64, 0x72, 0x61, 0x74, 0x65, - 0x64, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, 0x12, 0x42, 0x0a, 0x0f, 0x64, 0x6f, 0x63, 0x75, - 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, - 0x6e, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x0f, 0x64, 0x6f, 0x63, - 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2e, 0x0a, 0x11, - 0x68, 0x79, 0x64, 0x72, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x54, 0x65, 0x78, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x11, 0x68, 0x79, 0x64, 0x72, 0x61, - 0x74, 0x65, 0x64, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x54, 0x65, 0x78, 0x74, 0x12, 0x39, 0x0a, 0x0c, - 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x0c, 0x69, 0x6d, 0x61, 0x67, 0x65, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x39, 0x0a, 0x0c, 0x76, 0x69, 0x64, 0x65, 0x6f, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x48, 0x00, 0x52, 0x0c, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x12, 0x42, 0x0a, 0x0f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x0f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x22, - 0xbd, 0x02, 0x0a, 0x0f, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x12, 0x34, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x49, 0x6e, - 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x63, 0x6f, - 0x6e, 0x74, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x4a, 0x0a, 0x10, 0x68, 0x79, 0x64, - 0x72, 0x61, 0x74, 0x65, 0x64, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x48, 0x79, 0x64, 0x72, - 0x61, 0x74, 0x65, 0x64, 0x46, 0x6f, 0x75, 0x72, 0x52, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x52, 0x10, 0x68, 0x79, 0x64, 0x72, 0x61, 0x74, 0x65, 0x64, 0x54, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x42, 0x0a, 0x0f, 0x66, 0x6f, 0x75, 0x72, 0x52, 0x6f, 0x77, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x46, 0x6f, 0x75, 0x72, 0x52, 0x6f, 0x77, 0x54, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x0f, 0x66, 0x6f, 0x75, 0x72, 0x52, 0x6f, - 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x5a, 0x0a, 0x17, 0x68, 0x79, 0x64, - 0x72, 0x61, 0x74, 0x65, 0x64, 0x46, 0x6f, 0x75, 0x72, 0x52, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2e, 0x48, 0x79, 0x64, 0x72, 0x61, 0x74, 0x65, 0x64, 0x46, 0x6f, 0x75, 0x72, 0x52, - 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x17, 0x68, 0x79, - 0x64, 0x72, 0x61, 0x74, 0x65, 0x64, 0x46, 0x6f, 0x75, 0x72, 0x52, 0x6f, 0x77, 0x54, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, - 0xca, 0x01, 0x0a, 0x1a, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x75, 0x74, 0x74, - 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1e, - 0x0a, 0x0a, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x49, 0x64, 0x12, 0x30, - 0x0a, 0x13, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, - 0x79, 0x54, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x73, 0x65, 0x6c, - 0x65, 0x63, 0x74, 0x65, 0x64, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x54, 0x65, 0x78, 0x74, - 0x12, 0x34, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, - 0x6e, 0x74, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, - 0x78, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x24, 0x0a, 0x0d, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, - 0x65, 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x73, - 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x82, 0x01, 0x0a, - 0x0f, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, - 0x12, 0x37, 0x0a, 0x0c, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x49, 0x6d, 0x61, 0x67, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x49, - 0x6d, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0c, 0x63, 0x61, 0x74, - 0x61, 0x6c, 0x6f, 0x67, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, - 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x22, 0xf2, 0x02, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x6e, 0x61, - 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x37, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, - 0x49, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x1c, - 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, - 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, - 0x43, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x75, 0x72, 0x72, - 0x65, 0x6e, 0x63, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x70, 0x72, 0x69, 0x63, - 0x65, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x31, 0x30, 0x30, 0x30, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x0f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x31, 0x30, - 0x30, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x72, 0x49, 0x64, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x72, - 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x75, 0x72, 0x6c, 0x12, 0x2c, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, - 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x11, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x66, 0x69, 0x72, 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, - 0x49, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x69, 0x72, 0x73, 0x74, 0x49, - 0x6d, 0x61, 0x67, 0x65, 0x49, 0x64, 0x22, 0xd6, 0x01, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x64, 0x75, - 0x63, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x30, 0x0a, 0x07, 0x70, 0x72, 0x6f, - 0x64, 0x75, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, - 0x6f, 0x74, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x62, - 0x75, 0x73, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x4a, 0x69, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x62, 0x75, 0x73, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x4f, - 0x77, 0x6e, 0x65, 0x72, 0x4a, 0x69, 0x64, 0x12, 0x30, 0x0a, 0x07, 0x63, 0x61, 0x74, 0x61, 0x6c, - 0x6f, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, - 0x52, 0x07, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x12, 0x34, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, - 0x74, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x49, 0x6e, - 0x66, 0x6f, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x22, - 0xbe, 0x04, 0x0a, 0x0c, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x68, - 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x74, - 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x74, 0x65, 0x6d, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x69, 0x74, 0x65, - 0x6d, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x43, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4f, - 0x72, 0x64, 0x65, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x4f, 0x72, 0x64, 0x65, - 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x46, 0x0a, 0x07, 0x73, - 0x75, 0x72, 0x66, 0x61, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x72, - 0x64, 0x65, 0x72, 0x53, 0x75, 0x72, 0x66, 0x61, 0x63, 0x65, 0x52, 0x07, 0x73, 0x75, 0x72, 0x66, - 0x61, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1e, 0x0a, - 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1c, 0x0a, - 0x09, 0x73, 0x65, 0x6c, 0x6c, 0x65, 0x72, 0x4a, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x73, 0x65, 0x6c, 0x6c, 0x65, 0x72, 0x4a, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, - 0x6e, 0x12, 0x28, 0x0a, 0x0f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, - 0x31, 0x30, 0x30, 0x30, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x74, 0x6f, 0x74, 0x61, - 0x6c, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x31, 0x30, 0x30, 0x30, 0x12, 0x2c, 0x0a, 0x11, 0x74, - 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x43, 0x6f, 0x64, 0x65, - 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x75, 0x72, - 0x72, 0x65, 0x6e, 0x63, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x34, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, - 0x74, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x49, 0x6e, - 0x66, 0x6f, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x22, - 0x26, 0x0a, 0x17, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, - 0x72, 0x64, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0b, 0x0a, 0x07, 0x49, 0x4e, - 0x51, 0x55, 0x49, 0x52, 0x59, 0x10, 0x01, 0x22, 0x27, 0x0a, 0x18, 0x4f, 0x72, 0x64, 0x65, 0x72, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x75, 0x72, 0x66, - 0x61, 0x63, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x41, 0x54, 0x41, 0x4c, 0x4f, 0x47, 0x10, 0x01, - 0x22, 0x53, 0x0a, 0x03, 0x52, 0x6f, 0x77, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x20, 0x0a, - 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x14, 0x0a, 0x05, 0x72, 0x6f, 0x77, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x72, 0x6f, 0x77, 0x49, 0x64, 0x22, 0x3f, 0x0a, 0x07, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1e, 0x0a, 0x04, 0x72, 0x6f, 0x77, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x6f, 0x77, - 0x52, 0x04, 0x72, 0x6f, 0x77, 0x73, 0x22, 0x8c, 0x02, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, - 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, - 0x0a, 0x0a, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x54, 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x54, 0x65, 0x78, 0x74, 0x12, 0x42, - 0x0a, 0x08, 0x6c, 0x69, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x26, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x4c, 0x69, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x6c, 0x69, 0x73, 0x74, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x08, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x35, - 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4c, 0x69, 0x73, - 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, - 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x49, 0x4e, 0x47, 0x4c, 0x45, 0x5f, 0x53, 0x45, 0x4c, - 0x45, 0x43, 0x54, 0x10, 0x01, 0x22, 0x39, 0x0a, 0x11, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x53, - 0x65, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x24, 0x0a, 0x0d, 0x73, 0x65, - 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x52, 0x6f, 0x77, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0d, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x52, 0x6f, 0x77, 0x49, 0x64, - 0x22, 0xde, 0x02, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x52, - 0x0a, 0x08, 0x6c, 0x69, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x36, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x4c, 0x69, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x6c, 0x69, 0x73, 0x74, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x46, 0x0a, 0x11, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x53, 0x65, 0x6c, 0x65, - 0x63, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x53, 0x65, 0x6c, 0x65, - 0x63, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x11, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x53, - 0x65, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x34, 0x0a, 0x0b, 0x63, 0x6f, - 0x6e, 0x74, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x12, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x66, 0x6f, - 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x22, 0x3d, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x11, - 0x0a, 0x0d, 0x53, 0x49, 0x4e, 0x47, 0x4c, 0x45, 0x5f, 0x53, 0x45, 0x4c, 0x45, 0x43, 0x54, 0x10, - 0x01, 0x22, 0x90, 0x02, 0x0a, 0x12, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, - 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x4a, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x4a, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x43, 0x6f, - 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, - 0x43, 0x6f, 0x64, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x45, 0x78, - 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, - 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x45, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x1c, 0x0a, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24, - 0x0a, 0x0d, 0x6a, 0x70, 0x65, 0x67, 0x54, 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x6a, 0x70, 0x65, 0x67, 0x54, 0x68, 0x75, 0x6d, 0x62, - 0x6e, 0x61, 0x69, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x61, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x61, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x34, - 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6e, 0x74, - 0x65, 0x78, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, - 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x9c, 0x01, 0x0a, 0x10, 0x45, 0x70, 0x68, 0x65, 0x6d, 0x65, 0x72, - 0x61, 0x6c, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x68, 0x61, - 0x74, 0x4a, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x68, 0x61, 0x74, - 0x4a, 0x69, 0x64, 0x12, 0x30, 0x0a, 0x13, 0x65, 0x70, 0x68, 0x65, 0x6d, 0x65, 0x72, 0x61, 0x6c, - 0x45, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x13, 0x65, 0x70, 0x68, 0x65, 0x6d, 0x65, 0x72, 0x61, 0x6c, 0x45, 0x78, 0x70, 0x69, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3c, 0x0a, 0x19, 0x65, 0x70, 0x68, 0x65, 0x6d, 0x65, 0x72, - 0x61, 0x6c, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x19, 0x65, 0x70, 0x68, 0x65, 0x6d, 0x65, - 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x22, 0xd4, 0x01, 0x0a, 0x11, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x65, - 0x6e, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x64, 0x65, 0x73, - 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4a, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0e, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4a, 0x69, - 0x64, 0x12, 0x28, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, - 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x68, 0x61, 0x73, - 0x68, 0x12, 0x57, 0x0a, 0x1a, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x45, 0x70, - 0x68, 0x65, 0x6d, 0x65, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, - 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x70, - 0x68, 0x65, 0x6d, 0x65, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x1a, - 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x45, 0x70, 0x68, 0x65, 0x6d, 0x65, 0x72, - 0x61, 0x6c, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x3e, 0x0a, 0x12, 0x46, 0x75, - 0x74, 0x75, 0x72, 0x65, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x12, 0x28, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x2e, 0x0a, 0x0a, 0x42, 0x75, - 0x74, 0x74, 0x6f, 0x6e, 0x54, 0x65, 0x78, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x70, - 0x6c, 0x61, 0x79, 0x54, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, - 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x54, 0x65, 0x78, 0x74, 0x22, 0xae, 0x01, 0x0a, 0x06, 0x42, - 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x49, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x49, - 0x64, 0x12, 0x31, 0x0a, 0x0a, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x54, 0x65, 0x78, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x42, 0x75, - 0x74, 0x74, 0x6f, 0x6e, 0x54, 0x65, 0x78, 0x74, 0x52, 0x0a, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, - 0x54, 0x65, 0x78, 0x74, 0x12, 0x2c, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x42, 0x75, 0x74, 0x74, 0x6f, - 0x6e, 0x2e, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x22, 0x27, 0x0a, 0x0a, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0c, 0x0a, - 0x08, 0x52, 0x45, 0x53, 0x50, 0x4f, 0x4e, 0x53, 0x45, 0x10, 0x01, 0x22, 0x8f, 0x05, 0x0a, 0x0e, - 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x20, - 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x65, 0x78, 0x74, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x65, 0x78, 0x74, - 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x54, 0x65, 0x78, 0x74, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x54, 0x65, 0x78, 0x74, - 0x12, 0x34, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, - 0x6e, 0x74, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, - 0x78, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x27, 0x0a, 0x07, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, - 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, - 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x52, 0x07, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x73, 0x12, - 0x4e, 0x0a, 0x0a, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x42, 0x75, 0x74, 0x74, - 0x6f, 0x6e, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x42, 0x75, 0x74, 0x74, 0x6f, - 0x6e, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x54, - 0x79, 0x70, 0x65, 0x52, 0x0a, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x14, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, - 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, 0x42, 0x0a, 0x0f, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, - 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x0f, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, - 0x6e, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x39, 0x0a, 0x0c, 0x69, 0x6d, 0x61, - 0x67, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x0c, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x12, 0x39, 0x0a, 0x0c, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2e, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, - 0x00, 0x52, 0x0c, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, - 0x42, 0x0a, 0x0f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x48, 0x00, 0x52, 0x0f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x22, 0x6e, 0x0a, 0x18, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x73, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, - 0x45, 0x4d, 0x50, 0x54, 0x59, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x54, 0x45, 0x58, 0x54, 0x10, - 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x4f, 0x43, 0x55, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x03, 0x12, - 0x09, 0x0a, 0x05, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x10, 0x04, 0x12, 0x09, 0x0a, 0x05, 0x56, 0x49, - 0x44, 0x45, 0x4f, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x4c, 0x4f, 0x43, 0x41, 0x54, 0x49, 0x4f, - 0x4e, 0x10, 0x06, 0x42, 0x08, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x22, 0xc5, 0x02, - 0x0a, 0x16, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x73, 0x65, 0x6c, 0x65, - 0x63, 0x74, 0x65, 0x64, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x10, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x42, 0x75, 0x74, 0x74, - 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x49, - 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x63, - 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x4c, 0x0a, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, - 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x32, 0x0a, 0x13, 0x73, 0x65, 0x6c, 0x65, - 0x63, 0x74, 0x65, 0x64, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x54, 0x65, 0x78, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x13, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, - 0x64, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x54, 0x65, 0x78, 0x74, 0x22, 0x3b, 0x0a, 0x1a, - 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, - 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x49, 0x53, 0x50, 0x4c, - 0x41, 0x59, 0x5f, 0x54, 0x45, 0x58, 0x54, 0x10, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x72, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe2, 0x13, 0x0a, 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x67, 0x0a, 0x1c, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x4b, - 0x65, 0x79, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x44, 0x69, 0x73, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x52, 0x1c, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x44, 0x69, 0x73, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x37, - 0x0a, 0x0c, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x49, 0x6d, 0x61, - 0x67, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0c, 0x69, 0x6d, 0x61, 0x67, 0x65, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x3d, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, - 0x63, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x40, 0x0a, 0x0f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x4c, 0x0a, 0x13, 0x65, 0x78, 0x74, 0x65, - 0x6e, 0x64, 0x65, 0x64, 0x54, 0x65, 0x78, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x78, - 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x54, 0x65, 0x78, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x52, 0x13, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x54, 0x65, 0x78, 0x74, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x40, 0x0a, 0x0f, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, - 0x6e, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0f, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, - 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x37, 0x0a, 0x0c, 0x61, 0x75, 0x64, 0x69, - 0x6f, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x52, 0x0c, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x12, 0x37, 0x0a, 0x0c, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, - 0x56, 0x69, 0x64, 0x65, 0x6f, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0c, 0x76, 0x69, - 0x64, 0x65, 0x6f, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x04, 0x63, 0x61, - 0x6c, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x04, 0x63, 0x61, 0x6c, 0x6c, 0x12, 0x1f, 0x0a, 0x04, 0x63, - 0x68, 0x61, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x52, 0x04, 0x63, 0x68, 0x61, 0x74, 0x12, 0x40, 0x0a, 0x0f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, - 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x72, - 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0f, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x4f, - 0x0a, 0x14, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x73, 0x41, 0x72, 0x72, 0x61, 0x79, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x73, 0x41, 0x72, 0x72, - 0x61, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x14, 0x63, 0x6f, 0x6e, 0x74, 0x61, - 0x63, 0x74, 0x73, 0x41, 0x72, 0x72, 0x61, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, - 0x58, 0x0a, 0x17, 0x68, 0x69, 0x67, 0x68, 0x6c, 0x79, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, - 0x72, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x48, 0x69, 0x67, 0x68, 0x6c, 0x79, 0x53, - 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x52, 0x17, 0x68, 0x69, 0x67, 0x68, 0x6c, 0x79, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, - 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x2a, 0x66, 0x61, - 0x73, 0x74, 0x52, 0x61, 0x74, 0x63, 0x68, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6e, 0x64, - 0x65, 0x72, 0x4b, 0x65, 0x79, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x4b, 0x65, 0x79, - 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x52, 0x2a, 0x66, 0x61, 0x73, 0x74, 0x52, 0x61, 0x74, 0x63, 0x68, 0x65, 0x74, - 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x44, 0x69, 0x73, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, - 0x49, 0x0a, 0x12, 0x73, 0x65, 0x6e, 0x64, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x12, 0x73, 0x65, 0x6e, 0x64, 0x50, 0x61, 0x79, 0x6d, - 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x4c, 0x0a, 0x13, 0x6c, 0x69, - 0x76, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, - 0x4c, 0x69, 0x76, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x52, 0x13, 0x6c, 0x69, 0x76, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x52, 0x0a, 0x15, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x15, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, - 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x67, 0x0a, 0x1c, - 0x64, 0x65, 0x63, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x17, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x65, 0x63, 0x6c, 0x69, - 0x6e, 0x65, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x1c, 0x64, 0x65, 0x63, 0x6c, 0x69, 0x6e, 0x65, - 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x64, 0x0a, 0x1b, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x50, - 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2e, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x1b, - 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x40, 0x0a, 0x0f, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x19, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0f, 0x74, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x3d, 0x0a, - 0x0e, 0x73, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, - 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x74, - 0x69, 0x63, 0x6b, 0x65, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0e, 0x73, 0x74, - 0x69, 0x63, 0x6b, 0x65, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x49, 0x0a, 0x12, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x52, 0x12, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x61, 0x0a, 0x1a, 0x74, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x75, 0x74, 0x74, - 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x1a, - 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x52, 0x65, - 0x70, 0x6c, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x3d, 0x0a, 0x0e, 0x70, 0x72, - 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x1e, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, - 0x63, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x64, 0x75, - 0x63, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x46, 0x0a, 0x11, 0x64, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x53, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x1f, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x53, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x11, - 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x12, 0x49, 0x0a, 0x12, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x74, - 0x65, 0x78, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x23, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, - 0x74, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x12, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x34, 0x0a, 0x0b, - 0x6c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x24, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0b, 0x6c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x12, 0x43, 0x0a, 0x0f, 0x76, 0x69, 0x65, 0x77, 0x4f, 0x6e, 0x63, 0x65, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x25, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2e, 0x46, 0x75, 0x74, 0x75, 0x72, 0x65, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0f, 0x76, 0x69, 0x65, 0x77, 0x4f, 0x6e, 0x63, 0x65, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x37, 0x0a, 0x0c, 0x6f, 0x72, 0x64, 0x65, 0x72, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x26, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x52, 0x0c, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x12, 0x4c, 0x0a, 0x13, 0x6c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x27, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x13, 0x6c, 0x69, 0x73, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x45, - 0x0a, 0x10, 0x65, 0x70, 0x68, 0x65, 0x6d, 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x18, 0x28, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x46, 0x75, 0x74, 0x75, 0x72, 0x65, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x52, 0x10, 0x65, 0x70, 0x68, 0x65, 0x6d, 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x3d, 0x0a, 0x0e, 0x69, 0x6e, 0x76, 0x6f, 0x69, 0x63, 0x65, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x49, 0x6e, 0x76, 0x6f, 0x69, 0x63, 0x65, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x52, 0x0e, 0x69, 0x6e, 0x76, 0x6f, 0x69, 0x63, 0x65, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x12, 0x3d, 0x0a, 0x0e, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x73, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x73, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x52, 0x0e, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x73, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x12, 0x55, 0x0a, 0x16, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x2b, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x42, 0x75, 0x74, 0x74, - 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x52, 0x16, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x74, 0x0a, 0x0a, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x6d, 0x6f, - 0x74, 0x65, 0x4a, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x6d, - 0x6f, 0x74, 0x65, 0x4a, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x72, 0x6f, 0x6d, 0x4d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x66, 0x72, 0x6f, 0x6d, 0x4d, 0x65, 0x12, 0x0e, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x20, - 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, - 0x22, 0xc5, 0x19, 0x0a, 0x0b, 0x57, 0x65, 0x62, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, - 0x12, 0x48, 0x0a, 0x0d, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, - 0x57, 0x65, 0x62, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x57, 0x65, 0x62, 0x46, - 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x0d, 0x6c, 0x61, 0x62, - 0x65, 0x6c, 0x73, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x12, 0x5a, 0x0a, 0x16, 0x76, 0x6f, - 0x69, 0x70, 0x49, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x4f, 0x75, 0x74, 0x67, - 0x6f, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x57, - 0x65, 0x62, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x16, - 0x76, 0x6f, 0x69, 0x70, 0x49, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x4f, 0x75, - 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x12, 0x3e, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, - 0x56, 0x33, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x57, 0x65, 0x62, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x57, 0x65, 0x62, - 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x08, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x73, 0x56, 0x33, 0x12, 0x4a, 0x0a, 0x0e, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, - 0x56, 0x33, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x73, 0x2e, 0x57, 0x65, 0x62, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x46, 0x6c, - 0x61, 0x67, 0x52, 0x0e, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x56, 0x33, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x12, 0x4a, 0x0a, 0x0e, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x56, 0x32, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x57, - 0x65, 0x62, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x0e, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x56, 0x32, 0x12, 0x5a, - 0x0a, 0x16, 0x71, 0x75, 0x65, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x56, 0x33, 0x54, - 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x73, 0x2e, 0x57, 0x65, 0x62, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x46, 0x6c, - 0x61, 0x67, 0x52, 0x16, 0x71, 0x75, 0x65, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x56, - 0x33, 0x54, 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x12, 0x48, 0x0a, 0x0d, 0x6c, 0x69, - 0x76, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x46, 0x65, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x57, 0x65, 0x62, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, - 0x73, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x0d, 0x6c, 0x69, 0x76, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x42, 0x0a, 0x0a, 0x71, 0x75, 0x65, 0x72, 0x79, 0x56, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x57, 0x65, 0x62, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x57, 0x65, 0x62, - 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x0a, 0x71, 0x75, - 0x65, 0x72, 0x79, 0x56, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x5a, 0x0a, 0x16, 0x76, 0x6f, 0x69, 0x70, - 0x49, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x49, 0x6e, 0x63, 0x6f, 0x6d, 0x69, - 0x6e, 0x67, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x57, 0x65, 0x62, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x57, 0x65, 0x62, - 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x16, 0x76, 0x6f, - 0x69, 0x70, 0x49, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x49, 0x6e, 0x63, 0x6f, - 0x6d, 0x69, 0x6e, 0x67, 0x12, 0x50, 0x0a, 0x11, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x52, 0x65, 0x70, - 0x6c, 0x69, 0x65, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x46, 0x65, 0x61, 0x74, 0x75, - 0x72, 0x65, 0x73, 0x2e, 0x57, 0x65, 0x62, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x46, - 0x6c, 0x61, 0x67, 0x52, 0x11, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x65, - 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x3e, 0x0a, 0x08, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, - 0x74, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x57, 0x65, 0x62, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x57, 0x65, 0x62, - 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x08, 0x70, 0x61, - 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x4e, 0x0a, 0x10, 0x73, 0x74, 0x69, 0x63, 0x6b, 0x65, - 0x72, 0x50, 0x61, 0x63, 0x6b, 0x51, 0x75, 0x65, 0x72, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x46, 0x65, 0x61, 0x74, - 0x75, 0x72, 0x65, 0x73, 0x2e, 0x57, 0x65, 0x62, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, - 0x46, 0x6c, 0x61, 0x67, 0x52, 0x10, 0x73, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x50, 0x61, 0x63, - 0x6b, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x52, 0x0a, 0x12, 0x6c, 0x69, 0x76, 0x65, 0x4c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x18, 0x0d, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x46, 0x65, - 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x57, 0x65, 0x62, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x12, 0x6c, 0x69, 0x76, 0x65, 0x4c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x12, 0x42, 0x0a, 0x0a, 0x6c, 0x61, - 0x62, 0x65, 0x6c, 0x73, 0x45, 0x64, 0x69, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x73, 0x2e, 0x57, 0x65, 0x62, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x46, 0x6c, - 0x61, 0x67, 0x52, 0x0a, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x64, 0x69, 0x74, 0x12, 0x44, - 0x0a, 0x0b, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x0f, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x46, - 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x57, 0x65, 0x62, 0x46, 0x65, 0x61, 0x74, 0x75, - 0x72, 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x0b, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x55, 0x70, - 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x64, 0x0a, 0x1b, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x55, 0x70, 0x6c, - 0x6f, 0x61, 0x64, 0x52, 0x69, 0x63, 0x68, 0x51, 0x75, 0x69, 0x63, 0x6b, 0x52, 0x65, 0x70, 0x6c, - 0x69, 0x65, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x57, 0x65, - 0x62, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x1b, 0x6d, - 0x65, 0x64, 0x69, 0x61, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x69, 0x63, 0x68, 0x51, 0x75, - 0x69, 0x63, 0x6b, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x65, 0x73, 0x12, 0x3c, 0x0a, 0x07, 0x76, 0x6e, - 0x61, 0x6d, 0x65, 0x56, 0x32, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, - 0x57, 0x65, 0x62, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x52, - 0x07, 0x76, 0x6e, 0x61, 0x6d, 0x65, 0x56, 0x32, 0x12, 0x4e, 0x0a, 0x10, 0x76, 0x69, 0x64, 0x65, - 0x6f, 0x50, 0x6c, 0x61, 0x79, 0x62, 0x61, 0x63, 0x6b, 0x55, 0x72, 0x6c, 0x18, 0x14, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x46, 0x65, - 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x57, 0x65, 0x62, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x10, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x50, 0x6c, 0x61, - 0x79, 0x62, 0x61, 0x63, 0x6b, 0x55, 0x72, 0x6c, 0x12, 0x48, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x52, 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x46, 0x65, 0x61, 0x74, 0x75, - 0x72, 0x65, 0x73, 0x2e, 0x57, 0x65, 0x62, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x46, - 0x6c, 0x61, 0x67, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x61, 0x6e, 0x6b, 0x69, - 0x6e, 0x67, 0x12, 0x54, 0x0a, 0x13, 0x76, 0x6f, 0x69, 0x70, 0x49, 0x6e, 0x64, 0x69, 0x76, 0x69, - 0x64, 0x75, 0x61, 0x6c, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x46, 0x65, 0x61, 0x74, 0x75, - 0x72, 0x65, 0x73, 0x2e, 0x57, 0x65, 0x62, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x46, - 0x6c, 0x61, 0x67, 0x52, 0x13, 0x76, 0x6f, 0x69, 0x70, 0x49, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, - 0x75, 0x61, 0x6c, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x12, 0x52, 0x0a, 0x12, 0x74, 0x68, 0x69, 0x72, - 0x64, 0x50, 0x61, 0x72, 0x74, 0x79, 0x53, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x73, 0x18, 0x17, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, - 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x57, 0x65, 0x62, 0x46, 0x65, 0x61, 0x74, - 0x75, 0x72, 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x12, 0x74, 0x68, 0x69, 0x72, 0x64, 0x50, - 0x61, 0x72, 0x74, 0x79, 0x53, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x73, 0x12, 0x62, 0x0a, 0x1a, - 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x6c, 0x79, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, - 0x64, 0x65, 0x64, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x46, 0x65, 0x61, 0x74, - 0x75, 0x72, 0x65, 0x73, 0x2e, 0x57, 0x65, 0x62, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, - 0x46, 0x6c, 0x61, 0x67, 0x52, 0x1a, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x6c, 0x79, - 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x64, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, - 0x12, 0x5a, 0x0a, 0x16, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x56, 0x34, 0x4a, 0x6f, 0x69, 0x6e, - 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x46, 0x65, 0x61, 0x74, - 0x75, 0x72, 0x65, 0x73, 0x2e, 0x57, 0x65, 0x62, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, - 0x46, 0x6c, 0x61, 0x67, 0x52, 0x16, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x56, 0x34, 0x4a, 0x6f, - 0x69, 0x6e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x4a, 0x0a, 0x0e, - 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x73, 0x18, 0x1a, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, - 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x57, 0x65, 0x62, 0x46, 0x65, 0x61, 0x74, - 0x75, 0x72, 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x0e, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, - 0x53, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x73, 0x12, 0x3c, 0x0a, 0x07, 0x63, 0x61, 0x74, 0x61, - 0x6c, 0x6f, 0x67, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x57, 0x65, - 0x62, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x07, 0x63, - 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x12, 0x4c, 0x0a, 0x0f, 0x73, 0x74, 0x61, 0x72, 0x72, 0x65, - 0x64, 0x53, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x73, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x46, 0x65, 0x61, 0x74, 0x75, - 0x72, 0x65, 0x73, 0x2e, 0x57, 0x65, 0x62, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x46, - 0x6c, 0x61, 0x67, 0x52, 0x0f, 0x73, 0x74, 0x61, 0x72, 0x72, 0x65, 0x64, 0x53, 0x74, 0x69, 0x63, - 0x6b, 0x65, 0x72, 0x73, 0x12, 0x48, 0x0a, 0x0d, 0x76, 0x6f, 0x69, 0x70, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x43, 0x61, 0x6c, 0x6c, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, - 0x57, 0x65, 0x62, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x52, - 0x0d, 0x76, 0x6f, 0x69, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x61, 0x6c, 0x6c, 0x12, 0x4c, - 0x0a, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, - 0x57, 0x65, 0x62, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x57, 0x65, 0x62, 0x46, - 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x0f, 0x74, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x66, 0x0a, 0x1c, - 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, - 0x6e, 0x74, 0x65, 0x72, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x18, 0x1f, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x46, 0x65, - 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x57, 0x65, 0x62, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x1c, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x61, 0x63, 0x74, 0x69, - 0x76, 0x69, 0x74, 0x79, 0x12, 0x50, 0x0a, 0x11, 0x65, 0x70, 0x68, 0x65, 0x6d, 0x65, 0x72, 0x61, - 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x46, 0x65, 0x61, 0x74, 0x75, - 0x72, 0x65, 0x73, 0x2e, 0x57, 0x65, 0x62, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x46, - 0x6c, 0x61, 0x67, 0x52, 0x11, 0x65, 0x70, 0x68, 0x65, 0x6d, 0x65, 0x72, 0x61, 0x6c, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x54, 0x0a, 0x13, 0x65, 0x32, 0x45, 0x4e, 0x6f, 0x74, - 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x79, 0x6e, 0x63, 0x18, 0x21, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x46, - 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x57, 0x65, 0x62, 0x46, 0x65, 0x61, 0x74, 0x75, - 0x72, 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x13, 0x65, 0x32, 0x45, 0x4e, 0x6f, 0x74, 0x69, - 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x79, 0x6e, 0x63, 0x12, 0x4e, 0x0a, 0x10, - 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x73, 0x56, 0x32, - 0x18, 0x22, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, - 0x65, 0x62, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x57, 0x65, 0x62, 0x46, 0x65, - 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x10, 0x72, 0x65, 0x63, 0x65, - 0x6e, 0x74, 0x53, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x73, 0x56, 0x32, 0x12, 0x48, 0x0a, 0x0d, - 0x73, 0x79, 0x6e, 0x63, 0x64, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x31, 0x18, 0x23, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x46, - 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x57, 0x65, 0x62, 0x46, 0x65, 0x61, 0x74, 0x75, - 0x72, 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x0d, 0x73, 0x79, 0x6e, 0x63, 0x64, 0x52, 0x65, - 0x6c, 0x65, 0x61, 0x73, 0x65, 0x31, 0x12, 0x4e, 0x0a, 0x10, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, - 0x53, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x73, 0x56, 0x33, 0x18, 0x24, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x46, 0x65, 0x61, 0x74, - 0x75, 0x72, 0x65, 0x73, 0x2e, 0x57, 0x65, 0x62, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, - 0x46, 0x6c, 0x61, 0x67, 0x52, 0x10, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x69, 0x63, - 0x6b, 0x65, 0x72, 0x73, 0x56, 0x33, 0x12, 0x42, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x6f, - 0x74, 0x69, 0x63, 0x65, 0x18, 0x25, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x57, - 0x65, 0x62, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x0a, - 0x75, 0x73, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x12, 0x4a, 0x0a, 0x0e, 0x73, 0x79, - 0x6e, 0x63, 0x64, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x31, 0x31, 0x18, 0x26, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x46, 0x65, - 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x57, 0x65, 0x62, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x0e, 0x73, 0x79, 0x6e, 0x63, 0x64, 0x52, 0x65, 0x6c, - 0x65, 0x61, 0x73, 0x65, 0x31, 0x31, 0x12, 0x3c, 0x0a, 0x07, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, - 0x74, 0x18, 0x27, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, - 0x57, 0x65, 0x62, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x57, 0x65, 0x62, 0x46, - 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x07, 0x73, 0x75, 0x70, - 0x70, 0x6f, 0x72, 0x74, 0x12, 0x4c, 0x0a, 0x0f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x55, 0x69, 0x69, - 0x43, 0x6c, 0x65, 0x61, 0x6e, 0x75, 0x70, 0x18, 0x28, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, - 0x73, 0x2e, 0x57, 0x65, 0x62, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x46, 0x6c, 0x61, - 0x67, 0x52, 0x0f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x55, 0x69, 0x69, 0x43, 0x6c, 0x65, 0x61, 0x6e, - 0x75, 0x70, 0x12, 0x64, 0x0a, 0x1b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x6f, 0x67, 0x66, 0x6f, - 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x4f, 0x6e, 0x6c, - 0x79, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, - 0x57, 0x65, 0x62, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x57, 0x65, 0x62, 0x46, - 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x1b, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x44, 0x6f, 0x67, 0x66, 0x6f, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x74, 0x65, - 0x72, 0x6e, 0x61, 0x6c, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x46, 0x0a, 0x0c, 0x73, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x73, 0x53, 0x79, 0x6e, 0x63, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x73, 0x2e, 0x57, 0x65, 0x62, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x46, 0x6c, - 0x61, 0x67, 0x52, 0x0c, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x53, 0x79, 0x6e, 0x63, - 0x22, 0x56, 0x0a, 0x0f, 0x57, 0x65, 0x62, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x46, - 0x6c, 0x61, 0x67, 0x12, 0x0f, 0x0a, 0x0b, 0x4e, 0x4f, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, - 0x45, 0x44, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x46, 0x4f, 0x52, 0x43, 0x45, 0x5f, 0x55, 0x50, - 0x47, 0x52, 0x41, 0x44, 0x45, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x44, 0x45, 0x56, 0x45, 0x4c, - 0x4f, 0x50, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x50, 0x52, 0x4f, 0x44, - 0x55, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x03, 0x22, 0xb6, 0x01, 0x0a, 0x17, 0x4e, 0x6f, 0x74, - 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x23, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x4b, 0x65, 0x79, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x28, 0x0a, 0x07, 0x6d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x6d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, - 0x20, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, - 0x74, 0x22, 0xc5, 0x01, 0x0a, 0x14, 0x57, 0x65, 0x62, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x20, 0x0a, 0x0b, 0x75, 0x6e, 0x72, 0x65, - 0x61, 0x64, 0x43, 0x68, 0x61, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x75, - 0x6e, 0x72, 0x65, 0x61, 0x64, 0x43, 0x68, 0x61, 0x74, 0x73, 0x12, 0x2e, 0x0a, 0x12, 0x6e, 0x6f, - 0x74, 0x69, 0x66, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3d, 0x0a, 0x0e, 0x6e, 0x6f, - 0x74, 0x69, 0x66, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0e, 0x6e, 0x6f, 0x74, 0x69, 0x66, - 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x22, 0x9b, 0x0c, 0x0a, 0x0b, 0x50, 0x61, - 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x56, 0x0a, 0x12, 0x63, 0x75, 0x72, - 0x72, 0x65, 0x6e, 0x63, 0x79, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x61, - 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, - 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x52, 0x12, 0x63, - 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, - 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x31, 0x30, 0x30, 0x30, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x31, 0x30, 0x30, - 0x30, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x4a, 0x69, 0x64, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, - 0x4a, 0x69, 0x64, 0x12, 0x3c, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x61, 0x79, 0x6d, - 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x49, - 0x6e, 0x66, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x12, 0x32, 0x0a, 0x14, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x14, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x3f, 0x0a, 0x11, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4b, 0x65, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x4b, 0x65, 0x79, 0x52, 0x11, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x28, 0x0a, 0x0f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x79, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x0f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x12, 0x24, 0x0a, 0x0d, 0x66, 0x75, 0x74, 0x75, 0x72, 0x65, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x65, - 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x66, 0x75, 0x74, 0x75, 0x72, 0x65, 0x70, - 0x72, 0x6f, 0x6f, 0x66, 0x65, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, - 0x63, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, - 0x63, 0x79, 0x12, 0x45, 0x0a, 0x09, 0x74, 0x78, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x61, - 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, - 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x78, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x09, - 0x74, 0x78, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2c, 0x0a, 0x11, 0x75, 0x73, 0x65, - 0x4e, 0x6f, 0x76, 0x69, 0x46, 0x69, 0x61, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x0b, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x75, 0x73, 0x65, 0x4e, 0x6f, 0x76, 0x69, 0x46, 0x69, 0x61, - 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x39, 0x0a, 0x0d, 0x70, 0x72, 0x69, 0x6d, 0x61, - 0x72, 0x79, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x6f, - 0x6e, 0x65, 0x79, 0x52, 0x0d, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x41, 0x6d, 0x6f, 0x75, - 0x6e, 0x74, 0x12, 0x3b, 0x0a, 0x0e, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x41, 0x6d, - 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2e, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, - 0x0e, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, - 0x34, 0x0a, 0x13, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x43, 0x75, - 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x14, 0x0a, 0x10, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, - 0x4e, 0x5f, 0x43, 0x55, 0x52, 0x52, 0x45, 0x4e, 0x43, 0x59, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, - 0x49, 0x4e, 0x52, 0x10, 0x01, 0x22, 0xd7, 0x01, 0x0a, 0x11, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, - 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x0e, 0x55, - 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x10, 0x00, 0x12, - 0x0e, 0x0a, 0x0a, 0x50, 0x52, 0x4f, 0x43, 0x45, 0x53, 0x53, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, - 0x08, 0x0a, 0x04, 0x53, 0x45, 0x4e, 0x54, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x4e, 0x45, 0x45, - 0x44, 0x5f, 0x54, 0x4f, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x50, 0x54, 0x10, 0x03, 0x12, 0x0c, 0x0a, - 0x08, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x04, 0x12, 0x16, 0x0a, 0x12, 0x43, - 0x4f, 0x55, 0x4c, 0x44, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, - 0x45, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x52, 0x45, 0x46, 0x55, 0x4e, 0x44, 0x45, 0x44, 0x10, - 0x06, 0x12, 0x0b, 0x0a, 0x07, 0x45, 0x58, 0x50, 0x49, 0x52, 0x45, 0x44, 0x10, 0x07, 0x12, 0x0c, - 0x0a, 0x08, 0x52, 0x45, 0x4a, 0x45, 0x43, 0x54, 0x45, 0x44, 0x10, 0x08, 0x12, 0x0d, 0x0a, 0x09, - 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0x09, 0x12, 0x15, 0x0a, 0x11, 0x57, - 0x41, 0x49, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x46, 0x4f, 0x52, 0x5f, 0x50, 0x41, 0x59, 0x45, 0x52, - 0x10, 0x0a, 0x12, 0x0b, 0x0a, 0x07, 0x57, 0x41, 0x49, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x0b, 0x22, - 0xd5, 0x04, 0x0a, 0x14, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x54, - 0x78, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, - 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, - 0x5f, 0x53, 0x45, 0x54, 0x55, 0x50, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x45, 0x4e, 0x44, - 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x43, 0x45, 0x49, 0x56, 0x45, 0x52, 0x5f, 0x53, 0x45, 0x54, - 0x55, 0x50, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x49, 0x4e, 0x49, 0x54, 0x10, 0x03, 0x12, 0x0b, - 0x0a, 0x07, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x43, - 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x05, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x41, - 0x49, 0x4c, 0x45, 0x44, 0x10, 0x06, 0x12, 0x0f, 0x0a, 0x0b, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, - 0x5f, 0x52, 0x49, 0x53, 0x4b, 0x10, 0x07, 0x12, 0x15, 0x0a, 0x11, 0x46, 0x41, 0x49, 0x4c, 0x45, - 0x44, 0x5f, 0x50, 0x52, 0x4f, 0x43, 0x45, 0x53, 0x53, 0x49, 0x4e, 0x47, 0x10, 0x08, 0x12, 0x1e, - 0x0a, 0x1a, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x5f, 0x52, 0x45, 0x43, 0x45, 0x49, 0x56, 0x45, - 0x52, 0x5f, 0x50, 0x52, 0x4f, 0x43, 0x45, 0x53, 0x53, 0x49, 0x4e, 0x47, 0x10, 0x09, 0x12, 0x0d, - 0x0a, 0x09, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x5f, 0x44, 0x41, 0x10, 0x0a, 0x12, 0x13, 0x0a, - 0x0f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x5f, 0x44, 0x41, 0x5f, 0x46, 0x49, 0x4e, 0x41, 0x4c, - 0x10, 0x0b, 0x12, 0x10, 0x0a, 0x0c, 0x52, 0x45, 0x46, 0x55, 0x4e, 0x44, 0x45, 0x44, 0x5f, 0x54, - 0x58, 0x4e, 0x10, 0x0c, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x45, 0x46, 0x55, 0x4e, 0x44, 0x5f, 0x46, - 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x0d, 0x12, 0x1c, 0x0a, 0x18, 0x52, 0x45, 0x46, 0x55, 0x4e, - 0x44, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x5f, 0x50, 0x52, 0x4f, 0x43, 0x45, 0x53, 0x53, - 0x49, 0x4e, 0x47, 0x10, 0x0e, 0x12, 0x14, 0x0a, 0x10, 0x52, 0x45, 0x46, 0x55, 0x4e, 0x44, 0x5f, - 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x5f, 0x44, 0x41, 0x10, 0x0f, 0x12, 0x0f, 0x0a, 0x0b, 0x45, - 0x58, 0x50, 0x49, 0x52, 0x45, 0x44, 0x5f, 0x54, 0x58, 0x4e, 0x10, 0x10, 0x12, 0x11, 0x0a, 0x0d, - 0x41, 0x55, 0x54, 0x48, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x45, 0x44, 0x10, 0x11, 0x12, - 0x21, 0x0a, 0x1d, 0x41, 0x55, 0x54, 0x48, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x5f, 0x46, - 0x41, 0x49, 0x4c, 0x45, 0x44, 0x5f, 0x50, 0x52, 0x4f, 0x43, 0x45, 0x53, 0x53, 0x49, 0x4e, 0x47, - 0x10, 0x12, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x55, 0x54, 0x48, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, - 0x4c, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x13, 0x12, 0x10, 0x0a, 0x0c, 0x43, 0x4f, - 0x4c, 0x4c, 0x45, 0x43, 0x54, 0x5f, 0x49, 0x4e, 0x49, 0x54, 0x10, 0x14, 0x12, 0x13, 0x0a, 0x0f, - 0x43, 0x4f, 0x4c, 0x4c, 0x45, 0x43, 0x54, 0x5f, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, - 0x15, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x4f, 0x4c, 0x4c, 0x45, 0x43, 0x54, 0x5f, 0x46, 0x41, 0x49, - 0x4c, 0x45, 0x44, 0x10, 0x16, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x4f, 0x4c, 0x4c, 0x45, 0x43, 0x54, - 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x5f, 0x52, 0x49, 0x53, 0x4b, 0x10, 0x17, 0x12, 0x14, - 0x0a, 0x10, 0x43, 0x4f, 0x4c, 0x4c, 0x45, 0x43, 0x54, 0x5f, 0x52, 0x45, 0x4a, 0x45, 0x43, 0x54, - 0x45, 0x44, 0x10, 0x18, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x4f, 0x4c, 0x4c, 0x45, 0x43, 0x54, 0x5f, - 0x45, 0x58, 0x50, 0x49, 0x52, 0x45, 0x44, 0x10, 0x19, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x4f, 0x4c, - 0x4c, 0x45, 0x43, 0x54, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x45, 0x44, 0x10, 0x1a, 0x12, - 0x16, 0x0a, 0x12, 0x43, 0x4f, 0x4c, 0x4c, 0x45, 0x43, 0x54, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, - 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x10, 0x1b, 0x22, 0x81, 0x2c, 0x0a, 0x0e, 0x57, 0x65, 0x62, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x23, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4b, 0x65, 0x79, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, - 0x28, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x0e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x6d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x10, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x42, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, - 0x62, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x57, 0x65, 0x62, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x61, 0x72, - 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x69, - 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x69, 0x67, 0x6e, - 0x6f, 0x72, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x74, 0x61, 0x72, 0x72, 0x65, 0x64, 0x18, 0x11, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x74, 0x61, 0x72, 0x72, 0x65, 0x64, 0x12, 0x1c, 0x0a, - 0x09, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x09, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, - 0x75, 0x73, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, - 0x75, 0x73, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x34, 0x0a, 0x15, 0x6d, 0x65, 0x64, 0x69, 0x61, - 0x43, 0x69, 0x70, 0x68, 0x65, 0x72, 0x74, 0x65, 0x78, 0x74, 0x53, 0x68, 0x61, 0x32, 0x35, 0x36, - 0x18, 0x14, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x15, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x43, 0x69, 0x70, - 0x68, 0x65, 0x72, 0x74, 0x65, 0x78, 0x74, 0x53, 0x68, 0x61, 0x32, 0x35, 0x36, 0x12, 0x1c, 0x0a, - 0x09, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x09, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x75, - 0x72, 0x6c, 0x54, 0x65, 0x78, 0x74, 0x18, 0x16, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x75, 0x72, - 0x6c, 0x54, 0x65, 0x78, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x75, 0x72, 0x6c, 0x4e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x18, 0x17, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x75, 0x72, 0x6c, 0x4e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x12, 0x56, 0x0a, 0x0f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x74, - 0x75, 0x62, 0x54, 0x79, 0x70, 0x65, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, - 0x6e, 0x66, 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x6e, - 0x66, 0x6f, 0x53, 0x74, 0x75, 0x62, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0f, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x53, 0x74, 0x75, 0x62, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, - 0x6c, 0x65, 0x61, 0x72, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x18, 0x19, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0a, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x12, 0x34, 0x0a, 0x15, 0x6d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x74, 0x75, 0x62, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, - 0x74, 0x65, 0x72, 0x73, 0x18, 0x1a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x53, 0x74, 0x75, 0x62, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, - 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x1b, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, - 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x1c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x6c, - 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x34, 0x0a, 0x0b, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, - 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2e, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, - 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x48, 0x0a, 0x11, 0x66, - 0x69, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x76, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, - 0x69, 0x76, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x52, 0x11, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x76, 0x65, 0x4c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x11, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x64, 0x50, - 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x12, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x11, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x64, 0x50, 0x61, 0x79, 0x6d, - 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x38, 0x0a, 0x17, 0x65, 0x70, 0x68, 0x65, 0x6d, - 0x65, 0x72, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x18, 0x20, 0x20, 0x01, 0x28, 0x04, 0x52, 0x17, 0x65, 0x70, 0x68, 0x65, 0x6d, 0x65, - 0x72, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x12, 0x2c, 0x0a, 0x11, 0x65, 0x70, 0x68, 0x65, 0x6d, 0x65, 0x72, 0x61, 0x6c, 0x44, 0x75, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x21, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x65, 0x70, - 0x68, 0x65, 0x6d, 0x65, 0x72, 0x61, 0x6c, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x2a, 0x0a, 0x10, 0x65, 0x70, 0x68, 0x65, 0x6d, 0x65, 0x72, 0x61, 0x6c, 0x4f, 0x66, 0x66, 0x54, - 0x6f, 0x4f, 0x6e, 0x18, 0x22, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x65, 0x70, 0x68, 0x65, 0x6d, - 0x65, 0x72, 0x61, 0x6c, 0x4f, 0x66, 0x66, 0x54, 0x6f, 0x4f, 0x6e, 0x12, 0x2e, 0x0a, 0x12, 0x65, - 0x70, 0x68, 0x65, 0x6d, 0x65, 0x72, 0x61, 0x6c, 0x4f, 0x75, 0x74, 0x4f, 0x66, 0x53, 0x79, 0x6e, - 0x63, 0x18, 0x23, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x65, 0x70, 0x68, 0x65, 0x6d, 0x65, 0x72, - 0x61, 0x6c, 0x4f, 0x75, 0x74, 0x4f, 0x66, 0x53, 0x79, 0x6e, 0x63, 0x12, 0x60, 0x0a, 0x10, 0x62, - 0x69, 0x7a, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, - 0x24, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, - 0x62, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x57, 0x65, 0x62, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x69, 0x7a, 0x50, 0x72, - 0x69, 0x76, 0x61, 0x63, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x10, 0x62, 0x69, 0x7a, - 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x28, 0x0a, - 0x0f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x42, 0x69, 0x7a, 0x4e, 0x61, 0x6d, 0x65, - 0x18, 0x25, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, - 0x42, 0x69, 0x7a, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x66, 0x0a, 0x14, 0x57, 0x65, 0x62, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, - 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x45, - 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x45, 0x52, 0x56, 0x45, - 0x52, 0x5f, 0x41, 0x43, 0x4b, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x45, 0x4c, 0x49, 0x56, - 0x45, 0x52, 0x59, 0x5f, 0x41, 0x43, 0x4b, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x52, 0x45, 0x41, - 0x44, 0x10, 0x04, 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x44, 0x10, 0x05, 0x22, - 0xec, 0x20, 0x0a, 0x16, 0x57, 0x65, 0x62, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x6e, - 0x66, 0x6f, 0x53, 0x74, 0x75, 0x62, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, - 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x45, 0x56, 0x4f, 0x4b, - 0x45, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x49, 0x50, 0x48, 0x45, 0x52, 0x54, 0x45, 0x58, - 0x54, 0x10, 0x02, 0x12, 0x0f, 0x0a, 0x0b, 0x46, 0x55, 0x54, 0x55, 0x52, 0x45, 0x50, 0x52, 0x4f, - 0x4f, 0x46, 0x10, 0x03, 0x12, 0x1b, 0x0a, 0x17, 0x4e, 0x4f, 0x4e, 0x5f, 0x56, 0x45, 0x52, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x10, - 0x04, 0x12, 0x19, 0x0a, 0x15, 0x55, 0x4e, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x5f, - 0x54, 0x52, 0x41, 0x4e, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x05, 0x12, 0x17, 0x0a, 0x13, - 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x49, 0x54, - 0x49, 0x4f, 0x4e, 0x10, 0x06, 0x12, 0x18, 0x0a, 0x14, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, - 0x44, 0x5f, 0x4c, 0x4f, 0x57, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x07, 0x12, - 0x11, 0x0a, 0x0d, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x5f, 0x48, 0x49, 0x47, 0x48, - 0x10, 0x08, 0x12, 0x1c, 0x0a, 0x18, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x5f, 0x49, - 0x4e, 0x49, 0x54, 0x49, 0x41, 0x4c, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x09, - 0x12, 0x18, 0x0a, 0x14, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x5f, 0x49, 0x4e, 0x49, - 0x54, 0x49, 0x41, 0x4c, 0x5f, 0x4c, 0x4f, 0x57, 0x10, 0x0a, 0x12, 0x19, 0x0a, 0x15, 0x56, 0x45, - 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x5f, 0x49, 0x4e, 0x49, 0x54, 0x49, 0x41, 0x4c, 0x5f, 0x48, - 0x49, 0x47, 0x48, 0x10, 0x0b, 0x12, 0x23, 0x0a, 0x1f, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, - 0x44, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x4e, 0x59, - 0x5f, 0x54, 0x4f, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x0c, 0x12, 0x23, 0x0a, 0x1f, 0x56, 0x45, - 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x49, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x41, 0x4e, 0x59, 0x5f, 0x54, 0x4f, 0x5f, 0x48, 0x49, 0x47, 0x48, 0x10, 0x0d, 0x12, - 0x23, 0x0a, 0x1f, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x5f, 0x54, 0x52, 0x41, 0x4e, - 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x48, 0x49, 0x47, 0x48, 0x5f, 0x54, 0x4f, 0x5f, 0x4c, - 0x4f, 0x57, 0x10, 0x0e, 0x12, 0x27, 0x0a, 0x23, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, - 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x48, 0x49, 0x47, 0x48, - 0x5f, 0x54, 0x4f, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x0f, 0x12, 0x26, 0x0a, - 0x22, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x49, - 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x54, 0x4f, 0x5f, - 0x4c, 0x4f, 0x57, 0x10, 0x10, 0x12, 0x26, 0x0a, 0x22, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, - 0x44, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x4f, 0x57, - 0x5f, 0x54, 0x4f, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x11, 0x12, 0x23, 0x0a, - 0x1f, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x49, - 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x5f, 0x54, 0x4f, 0x5f, 0x4c, 0x4f, 0x57, - 0x10, 0x12, 0x12, 0x27, 0x0a, 0x23, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x5f, 0x54, - 0x52, 0x41, 0x4e, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x5f, 0x54, - 0x4f, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x13, 0x12, 0x10, 0x0a, 0x0c, 0x47, - 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0x14, 0x12, 0x18, 0x0a, - 0x14, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x53, 0x55, - 0x42, 0x4a, 0x45, 0x43, 0x54, 0x10, 0x15, 0x12, 0x15, 0x0a, 0x11, 0x47, 0x52, 0x4f, 0x55, 0x50, - 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x49, 0x43, 0x4f, 0x4e, 0x10, 0x16, 0x12, 0x1c, - 0x0a, 0x18, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x49, - 0x4e, 0x56, 0x49, 0x54, 0x45, 0x5f, 0x4c, 0x49, 0x4e, 0x4b, 0x10, 0x17, 0x12, 0x1c, 0x0a, 0x18, - 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x44, 0x45, 0x53, - 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x18, 0x12, 0x19, 0x0a, 0x15, 0x47, 0x52, - 0x4f, 0x55, 0x50, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x52, - 0x49, 0x43, 0x54, 0x10, 0x19, 0x12, 0x19, 0x0a, 0x15, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x43, - 0x48, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x41, 0x4e, 0x4e, 0x4f, 0x55, 0x4e, 0x43, 0x45, 0x10, 0x1a, - 0x12, 0x19, 0x0a, 0x15, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x50, 0x41, 0x52, 0x54, 0x49, 0x43, - 0x49, 0x50, 0x41, 0x4e, 0x54, 0x5f, 0x41, 0x44, 0x44, 0x10, 0x1b, 0x12, 0x1c, 0x0a, 0x18, 0x47, - 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x50, 0x41, 0x52, 0x54, 0x49, 0x43, 0x49, 0x50, 0x41, 0x4e, 0x54, - 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x10, 0x1c, 0x12, 0x1d, 0x0a, 0x19, 0x47, 0x52, 0x4f, - 0x55, 0x50, 0x5f, 0x50, 0x41, 0x52, 0x54, 0x49, 0x43, 0x49, 0x50, 0x41, 0x4e, 0x54, 0x5f, 0x50, - 0x52, 0x4f, 0x4d, 0x4f, 0x54, 0x45, 0x10, 0x1d, 0x12, 0x1c, 0x0a, 0x18, 0x47, 0x52, 0x4f, 0x55, - 0x50, 0x5f, 0x50, 0x41, 0x52, 0x54, 0x49, 0x43, 0x49, 0x50, 0x41, 0x4e, 0x54, 0x5f, 0x44, 0x45, - 0x4d, 0x4f, 0x54, 0x45, 0x10, 0x1e, 0x12, 0x1c, 0x0a, 0x18, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, - 0x50, 0x41, 0x52, 0x54, 0x49, 0x43, 0x49, 0x50, 0x41, 0x4e, 0x54, 0x5f, 0x49, 0x4e, 0x56, 0x49, - 0x54, 0x45, 0x10, 0x1f, 0x12, 0x1b, 0x0a, 0x17, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x50, 0x41, - 0x52, 0x54, 0x49, 0x43, 0x49, 0x50, 0x41, 0x4e, 0x54, 0x5f, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x10, - 0x20, 0x12, 0x23, 0x0a, 0x1f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x50, 0x41, 0x52, 0x54, 0x49, - 0x43, 0x49, 0x50, 0x41, 0x4e, 0x54, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x4e, 0x55, - 0x4d, 0x42, 0x45, 0x52, 0x10, 0x21, 0x12, 0x14, 0x0a, 0x10, 0x42, 0x52, 0x4f, 0x41, 0x44, 0x43, - 0x41, 0x53, 0x54, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0x22, 0x12, 0x11, 0x0a, 0x0d, - 0x42, 0x52, 0x4f, 0x41, 0x44, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x41, 0x44, 0x44, 0x10, 0x23, 0x12, - 0x14, 0x0a, 0x10, 0x42, 0x52, 0x4f, 0x41, 0x44, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x52, 0x45, 0x4d, - 0x4f, 0x56, 0x45, 0x10, 0x24, 0x12, 0x18, 0x0a, 0x14, 0x47, 0x45, 0x4e, 0x45, 0x52, 0x49, 0x43, - 0x5f, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x25, 0x12, - 0x18, 0x0a, 0x14, 0x45, 0x32, 0x45, 0x5f, 0x49, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, - 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0x26, 0x12, 0x11, 0x0a, 0x0d, 0x45, 0x32, 0x45, - 0x5f, 0x45, 0x4e, 0x43, 0x52, 0x59, 0x50, 0x54, 0x45, 0x44, 0x10, 0x27, 0x12, 0x15, 0x0a, 0x11, - 0x43, 0x41, 0x4c, 0x4c, 0x5f, 0x4d, 0x49, 0x53, 0x53, 0x45, 0x44, 0x5f, 0x56, 0x4f, 0x49, 0x43, - 0x45, 0x10, 0x28, 0x12, 0x15, 0x0a, 0x11, 0x43, 0x41, 0x4c, 0x4c, 0x5f, 0x4d, 0x49, 0x53, 0x53, - 0x45, 0x44, 0x5f, 0x56, 0x49, 0x44, 0x45, 0x4f, 0x10, 0x29, 0x12, 0x1c, 0x0a, 0x18, 0x49, 0x4e, - 0x44, 0x49, 0x56, 0x49, 0x44, 0x55, 0x41, 0x4c, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x5f, - 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x10, 0x2a, 0x12, 0x10, 0x0a, 0x0c, 0x47, 0x52, 0x4f, 0x55, - 0x50, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x2b, 0x12, 0x26, 0x0a, 0x22, 0x47, 0x52, - 0x4f, 0x55, 0x50, 0x5f, 0x41, 0x4e, 0x4e, 0x4f, 0x55, 0x4e, 0x43, 0x45, 0x5f, 0x4d, 0x4f, 0x44, - 0x45, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x42, 0x4f, 0x55, 0x4e, 0x43, 0x45, - 0x10, 0x2c, 0x12, 0x1b, 0x0a, 0x17, 0x43, 0x41, 0x4c, 0x4c, 0x5f, 0x4d, 0x49, 0x53, 0x53, 0x45, - 0x44, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x56, 0x4f, 0x49, 0x43, 0x45, 0x10, 0x2d, 0x12, - 0x1b, 0x0a, 0x17, 0x43, 0x41, 0x4c, 0x4c, 0x5f, 0x4d, 0x49, 0x53, 0x53, 0x45, 0x44, 0x5f, 0x47, - 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x56, 0x49, 0x44, 0x45, 0x4f, 0x10, 0x2e, 0x12, 0x16, 0x0a, 0x12, - 0x50, 0x41, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x43, 0x49, 0x50, 0x48, 0x45, 0x52, 0x54, 0x45, - 0x58, 0x54, 0x10, 0x2f, 0x12, 0x17, 0x0a, 0x13, 0x50, 0x41, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, - 0x46, 0x55, 0x54, 0x55, 0x52, 0x45, 0x50, 0x52, 0x4f, 0x4f, 0x46, 0x10, 0x30, 0x12, 0x2c, 0x0a, - 0x28, 0x50, 0x41, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x41, 0x43, - 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x50, 0x44, 0x41, - 0x54, 0x45, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x31, 0x12, 0x2e, 0x0a, 0x2a, 0x50, - 0x41, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x41, 0x43, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, - 0x5f, 0x52, 0x45, 0x46, 0x55, 0x4e, 0x44, 0x45, 0x44, 0x10, 0x32, 0x12, 0x33, 0x0a, 0x2f, 0x50, - 0x41, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x41, 0x43, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, - 0x5f, 0x52, 0x45, 0x46, 0x55, 0x4e, 0x44, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x33, - 0x12, 0x35, 0x0a, 0x31, 0x50, 0x41, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x52, 0x41, 0x4e, - 0x53, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x52, - 0x45, 0x43, 0x45, 0x49, 0x56, 0x45, 0x52, 0x5f, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x5f, - 0x53, 0x45, 0x54, 0x55, 0x50, 0x10, 0x34, 0x12, 0x3c, 0x0a, 0x38, 0x50, 0x41, 0x59, 0x4d, 0x45, - 0x4e, 0x54, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x52, 0x45, 0x43, 0x45, 0x49, 0x56, 0x45, 0x52, 0x5f, 0x53, - 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x5f, 0x41, 0x46, 0x54, 0x45, 0x52, 0x5f, 0x48, 0x49, 0x43, - 0x43, 0x55, 0x50, 0x10, 0x35, 0x12, 0x29, 0x0a, 0x25, 0x50, 0x41, 0x59, 0x4d, 0x45, 0x4e, 0x54, - 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, - 0x53, 0x45, 0x54, 0x55, 0x50, 0x5f, 0x52, 0x45, 0x4d, 0x49, 0x4e, 0x44, 0x45, 0x52, 0x10, 0x36, - 0x12, 0x28, 0x0a, 0x24, 0x50, 0x41, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x4e, 0x44, 0x5f, 0x50, 0x41, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, - 0x52, 0x45, 0x4d, 0x49, 0x4e, 0x44, 0x45, 0x52, 0x10, 0x37, 0x12, 0x2a, 0x0a, 0x26, 0x50, 0x41, - 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x4e, - 0x44, 0x5f, 0x50, 0x41, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x49, 0x4e, 0x56, 0x49, 0x54, 0x41, - 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x38, 0x12, 0x23, 0x0a, 0x1f, 0x50, 0x41, 0x59, 0x4d, 0x45, 0x4e, - 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, - 0x5f, 0x44, 0x45, 0x43, 0x4c, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x39, 0x12, 0x22, 0x0a, 0x1e, 0x50, - 0x41, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, - 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x45, 0x58, 0x50, 0x49, 0x52, 0x45, 0x44, 0x10, 0x3a, 0x12, - 0x24, 0x0a, 0x20, 0x50, 0x41, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, - 0x4c, 0x45, 0x44, 0x10, 0x3b, 0x12, 0x29, 0x0a, 0x25, 0x42, 0x49, 0x5a, 0x5f, 0x56, 0x45, 0x52, - 0x49, 0x46, 0x49, 0x45, 0x44, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, - 0x5f, 0x54, 0x4f, 0x50, 0x5f, 0x54, 0x4f, 0x5f, 0x42, 0x4f, 0x54, 0x54, 0x4f, 0x4d, 0x10, 0x3c, - 0x12, 0x29, 0x0a, 0x25, 0x42, 0x49, 0x5a, 0x5f, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, - 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x42, 0x4f, 0x54, 0x54, - 0x4f, 0x4d, 0x5f, 0x54, 0x4f, 0x5f, 0x54, 0x4f, 0x50, 0x10, 0x3d, 0x12, 0x11, 0x0a, 0x0d, 0x42, - 0x49, 0x5a, 0x5f, 0x49, 0x4e, 0x54, 0x52, 0x4f, 0x5f, 0x54, 0x4f, 0x50, 0x10, 0x3e, 0x12, 0x14, - 0x0a, 0x10, 0x42, 0x49, 0x5a, 0x5f, 0x49, 0x4e, 0x54, 0x52, 0x4f, 0x5f, 0x42, 0x4f, 0x54, 0x54, - 0x4f, 0x4d, 0x10, 0x3f, 0x12, 0x13, 0x0a, 0x0f, 0x42, 0x49, 0x5a, 0x5f, 0x4e, 0x41, 0x4d, 0x45, - 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x40, 0x12, 0x1c, 0x0a, 0x18, 0x42, 0x49, 0x5a, - 0x5f, 0x4d, 0x4f, 0x56, 0x45, 0x5f, 0x54, 0x4f, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x55, 0x4d, 0x45, - 0x52, 0x5f, 0x41, 0x50, 0x50, 0x10, 0x41, 0x12, 0x1e, 0x0a, 0x1a, 0x42, 0x49, 0x5a, 0x5f, 0x54, - 0x57, 0x4f, 0x5f, 0x54, 0x49, 0x45, 0x52, 0x5f, 0x4d, 0x49, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x54, 0x4f, 0x50, 0x10, 0x42, 0x12, 0x21, 0x0a, 0x1d, 0x42, 0x49, 0x5a, 0x5f, 0x54, - 0x57, 0x4f, 0x5f, 0x54, 0x49, 0x45, 0x52, 0x5f, 0x4d, 0x49, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x42, 0x4f, 0x54, 0x54, 0x4f, 0x4d, 0x10, 0x43, 0x12, 0x0d, 0x0a, 0x09, 0x4f, 0x56, - 0x45, 0x52, 0x53, 0x49, 0x5a, 0x45, 0x44, 0x10, 0x44, 0x12, 0x28, 0x0a, 0x24, 0x47, 0x52, 0x4f, - 0x55, 0x50, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x4e, 0x4f, 0x5f, 0x46, 0x52, 0x45, - 0x51, 0x55, 0x45, 0x4e, 0x54, 0x4c, 0x59, 0x5f, 0x46, 0x4f, 0x52, 0x57, 0x41, 0x52, 0x44, 0x45, - 0x44, 0x10, 0x45, 0x12, 0x1c, 0x0a, 0x18, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x56, 0x34, 0x5f, - 0x41, 0x44, 0x44, 0x5f, 0x49, 0x4e, 0x56, 0x49, 0x54, 0x45, 0x5f, 0x53, 0x45, 0x4e, 0x54, 0x10, - 0x46, 0x12, 0x26, 0x0a, 0x22, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x50, 0x41, 0x52, 0x54, 0x49, - 0x43, 0x49, 0x50, 0x41, 0x4e, 0x54, 0x5f, 0x41, 0x44, 0x44, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, - 0x53, 0x54, 0x5f, 0x4a, 0x4f, 0x49, 0x4e, 0x10, 0x47, 0x12, 0x1c, 0x0a, 0x18, 0x43, 0x48, 0x41, - 0x4e, 0x47, 0x45, 0x5f, 0x45, 0x50, 0x48, 0x45, 0x4d, 0x45, 0x52, 0x41, 0x4c, 0x5f, 0x53, 0x45, - 0x54, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x48, 0x12, 0x16, 0x0a, 0x12, 0x45, 0x32, 0x45, 0x5f, 0x44, - 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0x49, 0x12, - 0x0f, 0x0a, 0x0b, 0x56, 0x49, 0x45, 0x57, 0x45, 0x44, 0x5f, 0x4f, 0x4e, 0x43, 0x45, 0x10, 0x4a, - 0x12, 0x15, 0x0a, 0x11, 0x45, 0x32, 0x45, 0x5f, 0x45, 0x4e, 0x43, 0x52, 0x59, 0x50, 0x54, 0x45, - 0x44, 0x5f, 0x4e, 0x4f, 0x57, 0x10, 0x4b, 0x12, 0x22, 0x0a, 0x1e, 0x42, 0x4c, 0x55, 0x45, 0x5f, - 0x4d, 0x53, 0x47, 0x5f, 0x42, 0x53, 0x50, 0x5f, 0x46, 0x42, 0x5f, 0x54, 0x4f, 0x5f, 0x42, 0x53, - 0x50, 0x5f, 0x50, 0x52, 0x45, 0x4d, 0x49, 0x53, 0x45, 0x10, 0x4c, 0x12, 0x1e, 0x0a, 0x1a, 0x42, - 0x4c, 0x55, 0x45, 0x5f, 0x4d, 0x53, 0x47, 0x5f, 0x42, 0x53, 0x50, 0x5f, 0x46, 0x42, 0x5f, 0x54, - 0x4f, 0x5f, 0x53, 0x45, 0x4c, 0x46, 0x5f, 0x46, 0x42, 0x10, 0x4d, 0x12, 0x23, 0x0a, 0x1f, 0x42, - 0x4c, 0x55, 0x45, 0x5f, 0x4d, 0x53, 0x47, 0x5f, 0x42, 0x53, 0x50, 0x5f, 0x46, 0x42, 0x5f, 0x54, - 0x4f, 0x5f, 0x53, 0x45, 0x4c, 0x46, 0x5f, 0x50, 0x52, 0x45, 0x4d, 0x49, 0x53, 0x45, 0x10, 0x4e, - 0x12, 0x1e, 0x0a, 0x1a, 0x42, 0x4c, 0x55, 0x45, 0x5f, 0x4d, 0x53, 0x47, 0x5f, 0x42, 0x53, 0x50, - 0x5f, 0x46, 0x42, 0x5f, 0x55, 0x4e, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x4f, - 0x12, 0x37, 0x0a, 0x33, 0x42, 0x4c, 0x55, 0x45, 0x5f, 0x4d, 0x53, 0x47, 0x5f, 0x42, 0x53, 0x50, - 0x5f, 0x46, 0x42, 0x5f, 0x55, 0x4e, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x5f, 0x54, - 0x4f, 0x5f, 0x53, 0x45, 0x4c, 0x46, 0x5f, 0x50, 0x52, 0x45, 0x4d, 0x49, 0x53, 0x45, 0x5f, 0x56, - 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x50, 0x12, 0x1c, 0x0a, 0x18, 0x42, 0x4c, 0x55, - 0x45, 0x5f, 0x4d, 0x53, 0x47, 0x5f, 0x42, 0x53, 0x50, 0x5f, 0x46, 0x42, 0x5f, 0x56, 0x45, 0x52, - 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x51, 0x12, 0x37, 0x0a, 0x33, 0x42, 0x4c, 0x55, 0x45, 0x5f, - 0x4d, 0x53, 0x47, 0x5f, 0x42, 0x53, 0x50, 0x5f, 0x46, 0x42, 0x5f, 0x56, 0x45, 0x52, 0x49, 0x46, - 0x49, 0x45, 0x44, 0x5f, 0x54, 0x4f, 0x5f, 0x53, 0x45, 0x4c, 0x46, 0x5f, 0x50, 0x52, 0x45, 0x4d, - 0x49, 0x53, 0x45, 0x5f, 0x55, 0x4e, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x52, - 0x12, 0x28, 0x0a, 0x24, 0x42, 0x4c, 0x55, 0x45, 0x5f, 0x4d, 0x53, 0x47, 0x5f, 0x42, 0x53, 0x50, - 0x5f, 0x50, 0x52, 0x45, 0x4d, 0x49, 0x53, 0x45, 0x5f, 0x54, 0x4f, 0x5f, 0x53, 0x45, 0x4c, 0x46, - 0x5f, 0x50, 0x52, 0x45, 0x4d, 0x49, 0x53, 0x45, 0x10, 0x53, 0x12, 0x23, 0x0a, 0x1f, 0x42, 0x4c, - 0x55, 0x45, 0x5f, 0x4d, 0x53, 0x47, 0x5f, 0x42, 0x53, 0x50, 0x5f, 0x50, 0x52, 0x45, 0x4d, 0x49, - 0x53, 0x45, 0x5f, 0x55, 0x4e, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x54, 0x12, - 0x3c, 0x0a, 0x38, 0x42, 0x4c, 0x55, 0x45, 0x5f, 0x4d, 0x53, 0x47, 0x5f, 0x42, 0x53, 0x50, 0x5f, - 0x50, 0x52, 0x45, 0x4d, 0x49, 0x53, 0x45, 0x5f, 0x55, 0x4e, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, - 0x45, 0x44, 0x5f, 0x54, 0x4f, 0x5f, 0x53, 0x45, 0x4c, 0x46, 0x5f, 0x50, 0x52, 0x45, 0x4d, 0x49, - 0x53, 0x45, 0x5f, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x55, 0x12, 0x21, 0x0a, - 0x1d, 0x42, 0x4c, 0x55, 0x45, 0x5f, 0x4d, 0x53, 0x47, 0x5f, 0x42, 0x53, 0x50, 0x5f, 0x50, 0x52, - 0x45, 0x4d, 0x49, 0x53, 0x45, 0x5f, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x56, - 0x12, 0x3c, 0x0a, 0x38, 0x42, 0x4c, 0x55, 0x45, 0x5f, 0x4d, 0x53, 0x47, 0x5f, 0x42, 0x53, 0x50, - 0x5f, 0x50, 0x52, 0x45, 0x4d, 0x49, 0x53, 0x45, 0x5f, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, - 0x44, 0x5f, 0x54, 0x4f, 0x5f, 0x53, 0x45, 0x4c, 0x46, 0x5f, 0x50, 0x52, 0x45, 0x4d, 0x49, 0x53, - 0x45, 0x5f, 0x55, 0x4e, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x57, 0x12, 0x2a, - 0x0a, 0x26, 0x42, 0x4c, 0x55, 0x45, 0x5f, 0x4d, 0x53, 0x47, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x55, - 0x4d, 0x45, 0x52, 0x5f, 0x54, 0x4f, 0x5f, 0x42, 0x53, 0x50, 0x5f, 0x46, 0x42, 0x5f, 0x55, 0x4e, - 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x58, 0x12, 0x2f, 0x0a, 0x2b, 0x42, 0x4c, - 0x55, 0x45, 0x5f, 0x4d, 0x53, 0x47, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x55, 0x4d, 0x45, 0x52, 0x5f, - 0x54, 0x4f, 0x5f, 0x42, 0x53, 0x50, 0x5f, 0x50, 0x52, 0x45, 0x4d, 0x49, 0x53, 0x45, 0x5f, 0x55, - 0x4e, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x59, 0x12, 0x2b, 0x0a, 0x27, 0x42, - 0x4c, 0x55, 0x45, 0x5f, 0x4d, 0x53, 0x47, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x55, 0x4d, 0x45, 0x52, - 0x5f, 0x54, 0x4f, 0x5f, 0x53, 0x45, 0x4c, 0x46, 0x5f, 0x46, 0x42, 0x5f, 0x55, 0x4e, 0x56, 0x45, - 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x5a, 0x12, 0x30, 0x0a, 0x2c, 0x42, 0x4c, 0x55, 0x45, - 0x5f, 0x4d, 0x53, 0x47, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x55, 0x4d, 0x45, 0x52, 0x5f, 0x54, 0x4f, - 0x5f, 0x53, 0x45, 0x4c, 0x46, 0x5f, 0x50, 0x52, 0x45, 0x4d, 0x49, 0x53, 0x45, 0x5f, 0x55, 0x4e, - 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x5b, 0x12, 0x23, 0x0a, 0x1f, 0x42, 0x4c, - 0x55, 0x45, 0x5f, 0x4d, 0x53, 0x47, 0x5f, 0x53, 0x45, 0x4c, 0x46, 0x5f, 0x46, 0x42, 0x5f, 0x54, - 0x4f, 0x5f, 0x42, 0x53, 0x50, 0x5f, 0x50, 0x52, 0x45, 0x4d, 0x49, 0x53, 0x45, 0x10, 0x5c, 0x12, - 0x24, 0x0a, 0x20, 0x42, 0x4c, 0x55, 0x45, 0x5f, 0x4d, 0x53, 0x47, 0x5f, 0x53, 0x45, 0x4c, 0x46, - 0x5f, 0x46, 0x42, 0x5f, 0x54, 0x4f, 0x5f, 0x53, 0x45, 0x4c, 0x46, 0x5f, 0x50, 0x52, 0x45, 0x4d, - 0x49, 0x53, 0x45, 0x10, 0x5d, 0x12, 0x1f, 0x0a, 0x1b, 0x42, 0x4c, 0x55, 0x45, 0x5f, 0x4d, 0x53, - 0x47, 0x5f, 0x53, 0x45, 0x4c, 0x46, 0x5f, 0x46, 0x42, 0x5f, 0x55, 0x4e, 0x56, 0x45, 0x52, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x10, 0x5e, 0x12, 0x38, 0x0a, 0x34, 0x42, 0x4c, 0x55, 0x45, 0x5f, 0x4d, - 0x53, 0x47, 0x5f, 0x53, 0x45, 0x4c, 0x46, 0x5f, 0x46, 0x42, 0x5f, 0x55, 0x4e, 0x56, 0x45, 0x52, - 0x49, 0x46, 0x49, 0x45, 0x44, 0x5f, 0x54, 0x4f, 0x5f, 0x53, 0x45, 0x4c, 0x46, 0x5f, 0x50, 0x52, - 0x45, 0x4d, 0x49, 0x53, 0x45, 0x5f, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x5f, - 0x12, 0x1d, 0x0a, 0x19, 0x42, 0x4c, 0x55, 0x45, 0x5f, 0x4d, 0x53, 0x47, 0x5f, 0x53, 0x45, 0x4c, - 0x46, 0x5f, 0x46, 0x42, 0x5f, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x60, 0x12, - 0x38, 0x0a, 0x34, 0x42, 0x4c, 0x55, 0x45, 0x5f, 0x4d, 0x53, 0x47, 0x5f, 0x53, 0x45, 0x4c, 0x46, - 0x5f, 0x46, 0x42, 0x5f, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x5f, 0x54, 0x4f, 0x5f, - 0x53, 0x45, 0x4c, 0x46, 0x5f, 0x50, 0x52, 0x45, 0x4d, 0x49, 0x53, 0x45, 0x5f, 0x55, 0x4e, 0x56, - 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x61, 0x12, 0x28, 0x0a, 0x24, 0x42, 0x4c, 0x55, - 0x45, 0x5f, 0x4d, 0x53, 0x47, 0x5f, 0x53, 0x45, 0x4c, 0x46, 0x5f, 0x50, 0x52, 0x45, 0x4d, 0x49, - 0x53, 0x45, 0x5f, 0x54, 0x4f, 0x5f, 0x42, 0x53, 0x50, 0x5f, 0x50, 0x52, 0x45, 0x4d, 0x49, 0x53, - 0x45, 0x10, 0x62, 0x12, 0x24, 0x0a, 0x20, 0x42, 0x4c, 0x55, 0x45, 0x5f, 0x4d, 0x53, 0x47, 0x5f, - 0x53, 0x45, 0x4c, 0x46, 0x5f, 0x50, 0x52, 0x45, 0x4d, 0x49, 0x53, 0x45, 0x5f, 0x55, 0x4e, 0x56, - 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x63, 0x12, 0x22, 0x0a, 0x1e, 0x42, 0x4c, 0x55, - 0x45, 0x5f, 0x4d, 0x53, 0x47, 0x5f, 0x53, 0x45, 0x4c, 0x46, 0x5f, 0x50, 0x52, 0x45, 0x4d, 0x49, - 0x53, 0x45, 0x5f, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x64, 0x12, 0x16, 0x0a, - 0x12, 0x42, 0x4c, 0x55, 0x45, 0x5f, 0x4d, 0x53, 0x47, 0x5f, 0x54, 0x4f, 0x5f, 0x42, 0x53, 0x50, - 0x5f, 0x46, 0x42, 0x10, 0x65, 0x12, 0x18, 0x0a, 0x14, 0x42, 0x4c, 0x55, 0x45, 0x5f, 0x4d, 0x53, - 0x47, 0x5f, 0x54, 0x4f, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x55, 0x4d, 0x45, 0x52, 0x10, 0x66, 0x12, - 0x17, 0x0a, 0x13, 0x42, 0x4c, 0x55, 0x45, 0x5f, 0x4d, 0x53, 0x47, 0x5f, 0x54, 0x4f, 0x5f, 0x53, - 0x45, 0x4c, 0x46, 0x5f, 0x46, 0x42, 0x10, 0x67, 0x12, 0x2a, 0x0a, 0x26, 0x42, 0x4c, 0x55, 0x45, - 0x5f, 0x4d, 0x53, 0x47, 0x5f, 0x55, 0x4e, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x5f, - 0x54, 0x4f, 0x5f, 0x42, 0x53, 0x50, 0x5f, 0x46, 0x42, 0x5f, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, - 0x45, 0x44, 0x10, 0x68, 0x12, 0x2f, 0x0a, 0x2b, 0x42, 0x4c, 0x55, 0x45, 0x5f, 0x4d, 0x53, 0x47, - 0x5f, 0x55, 0x4e, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x5f, 0x54, 0x4f, 0x5f, 0x42, - 0x53, 0x50, 0x5f, 0x50, 0x52, 0x45, 0x4d, 0x49, 0x53, 0x45, 0x5f, 0x56, 0x45, 0x52, 0x49, 0x46, - 0x49, 0x45, 0x44, 0x10, 0x69, 0x12, 0x2b, 0x0a, 0x27, 0x42, 0x4c, 0x55, 0x45, 0x5f, 0x4d, 0x53, - 0x47, 0x5f, 0x55, 0x4e, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x5f, 0x54, 0x4f, 0x5f, - 0x53, 0x45, 0x4c, 0x46, 0x5f, 0x46, 0x42, 0x5f, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, - 0x10, 0x6a, 0x12, 0x23, 0x0a, 0x1f, 0x42, 0x4c, 0x55, 0x45, 0x5f, 0x4d, 0x53, 0x47, 0x5f, 0x55, - 0x4e, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x5f, 0x54, 0x4f, 0x5f, 0x56, 0x45, 0x52, - 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x6b, 0x12, 0x2a, 0x0a, 0x26, 0x42, 0x4c, 0x55, 0x45, 0x5f, - 0x4d, 0x53, 0x47, 0x5f, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x5f, 0x54, 0x4f, 0x5f, - 0x42, 0x53, 0x50, 0x5f, 0x46, 0x42, 0x5f, 0x55, 0x4e, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, - 0x44, 0x10, 0x6c, 0x12, 0x2f, 0x0a, 0x2b, 0x42, 0x4c, 0x55, 0x45, 0x5f, 0x4d, 0x53, 0x47, 0x5f, - 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x5f, 0x54, 0x4f, 0x5f, 0x42, 0x53, 0x50, 0x5f, - 0x50, 0x52, 0x45, 0x4d, 0x49, 0x53, 0x45, 0x5f, 0x55, 0x4e, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, - 0x45, 0x44, 0x10, 0x6d, 0x12, 0x2b, 0x0a, 0x27, 0x42, 0x4c, 0x55, 0x45, 0x5f, 0x4d, 0x53, 0x47, - 0x5f, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x5f, 0x54, 0x4f, 0x5f, 0x53, 0x45, 0x4c, - 0x46, 0x5f, 0x46, 0x42, 0x5f, 0x55, 0x4e, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, - 0x6e, 0x12, 0x23, 0x0a, 0x1f, 0x42, 0x4c, 0x55, 0x45, 0x5f, 0x4d, 0x53, 0x47, 0x5f, 0x56, 0x45, - 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x5f, 0x54, 0x4f, 0x5f, 0x55, 0x4e, 0x56, 0x45, 0x52, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x10, 0x6f, 0x12, 0x36, 0x0a, 0x32, 0x42, 0x4c, 0x55, 0x45, 0x5f, 0x4d, - 0x53, 0x47, 0x5f, 0x42, 0x53, 0x50, 0x5f, 0x46, 0x42, 0x5f, 0x55, 0x4e, 0x56, 0x45, 0x52, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x5f, 0x54, 0x4f, 0x5f, 0x42, 0x53, 0x50, 0x5f, 0x50, 0x52, 0x45, 0x4d, - 0x49, 0x53, 0x45, 0x5f, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x70, 0x12, 0x32, - 0x0a, 0x2e, 0x42, 0x4c, 0x55, 0x45, 0x5f, 0x4d, 0x53, 0x47, 0x5f, 0x42, 0x53, 0x50, 0x5f, 0x46, - 0x42, 0x5f, 0x55, 0x4e, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x5f, 0x54, 0x4f, 0x5f, - 0x53, 0x45, 0x4c, 0x46, 0x5f, 0x46, 0x42, 0x5f, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, - 0x10, 0x71, 0x12, 0x36, 0x0a, 0x32, 0x42, 0x4c, 0x55, 0x45, 0x5f, 0x4d, 0x53, 0x47, 0x5f, 0x42, - 0x53, 0x50, 0x5f, 0x46, 0x42, 0x5f, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x5f, 0x54, - 0x4f, 0x5f, 0x42, 0x53, 0x50, 0x5f, 0x50, 0x52, 0x45, 0x4d, 0x49, 0x53, 0x45, 0x5f, 0x55, 0x4e, - 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x72, 0x12, 0x32, 0x0a, 0x2e, 0x42, 0x4c, - 0x55, 0x45, 0x5f, 0x4d, 0x53, 0x47, 0x5f, 0x42, 0x53, 0x50, 0x5f, 0x46, 0x42, 0x5f, 0x56, 0x45, - 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x5f, 0x54, 0x4f, 0x5f, 0x53, 0x45, 0x4c, 0x46, 0x5f, 0x46, - 0x42, 0x5f, 0x55, 0x4e, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x73, 0x12, 0x37, - 0x0a, 0x33, 0x42, 0x4c, 0x55, 0x45, 0x5f, 0x4d, 0x53, 0x47, 0x5f, 0x53, 0x45, 0x4c, 0x46, 0x5f, - 0x46, 0x42, 0x5f, 0x55, 0x4e, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x5f, 0x54, 0x4f, - 0x5f, 0x42, 0x53, 0x50, 0x5f, 0x50, 0x52, 0x45, 0x4d, 0x49, 0x53, 0x45, 0x5f, 0x56, 0x45, 0x52, - 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x74, 0x12, 0x37, 0x0a, 0x33, 0x42, 0x4c, 0x55, 0x45, 0x5f, - 0x4d, 0x53, 0x47, 0x5f, 0x53, 0x45, 0x4c, 0x46, 0x5f, 0x46, 0x42, 0x5f, 0x56, 0x45, 0x52, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x5f, 0x54, 0x4f, 0x5f, 0x42, 0x53, 0x50, 0x5f, 0x50, 0x52, 0x45, 0x4d, - 0x49, 0x53, 0x45, 0x5f, 0x55, 0x4e, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x75, - 0x12, 0x1c, 0x0a, 0x18, 0x45, 0x32, 0x45, 0x5f, 0x49, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, - 0x5f, 0x55, 0x4e, 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x76, 0x22, 0x4b, - 0x0a, 0x1e, 0x57, 0x65, 0x62, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, - 0x42, 0x69, 0x7a, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x12, 0x08, 0x0a, 0x04, 0x45, 0x32, 0x45, 0x45, 0x10, 0x00, 0x12, 0x06, 0x0a, 0x02, 0x46, 0x42, - 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x42, 0x53, 0x50, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x42, - 0x53, 0x50, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x46, 0x42, 0x10, 0x03, -} - -var ( - file_def_proto_rawDescOnce sync.Once - file_def_proto_rawDescData = file_def_proto_rawDesc -) - -func file_def_proto_rawDescGZIP() []byte { - file_def_proto_rawDescOnce.Do(func() { - file_def_proto_rawDescData = protoimpl.X.CompressGZIP(file_def_proto_rawDescData) - }) - return file_def_proto_rawDescData -} - -var file_def_proto_enumTypes = make([]protoimpl.EnumInfo, 24) -var file_def_proto_msgTypes = make([]protoimpl.MessageInfo, 79) -var file_def_proto_goTypes = []interface{}{ - (AdReplyInfo_AdReplyInfoMediaType)(0), // 0: proto.AdReplyInfo.AdReplyInfoMediaType - (ExternalAdReplyInfo_ExternalAdReplyInfoMediaType)(0), // 1: proto.ExternalAdReplyInfo.ExternalAdReplyInfoMediaType - (InvoiceMessage_InvoiceMessageAttachmentType)(0), // 2: proto.InvoiceMessage.InvoiceMessageAttachmentType - (ExtendedTextMessage_ExtendedTextMessageFontType)(0), // 3: proto.ExtendedTextMessage.ExtendedTextMessageFontType - (ExtendedTextMessage_ExtendedTextMessagePreviewType)(0), // 4: proto.ExtendedTextMessage.ExtendedTextMessagePreviewType - (VideoMessage_VideoMessageAttribution)(0), // 5: proto.VideoMessage.VideoMessageAttribution - (ProtocolMessage_ProtocolMessageType)(0), // 6: proto.ProtocolMessage.ProtocolMessageType - (HistorySyncNotification_HistorySyncNotificationHistorySyncType)(0), // 7: proto.HistorySyncNotification.HistorySyncNotificationHistorySyncType - (HSMDateTimeComponent_HSMDateTimeComponentDayOfWeekType)(0), // 8: proto.HSMDateTimeComponent.HSMDateTimeComponentDayOfWeekType - (HSMDateTimeComponent_HSMDateTimeComponentCalendarType)(0), // 9: proto.HSMDateTimeComponent.HSMDateTimeComponentCalendarType - (OrderMessage_OrderMessageOrderStatus)(0), // 10: proto.OrderMessage.OrderMessageOrderStatus - (OrderMessage_OrderMessageOrderSurface)(0), // 11: proto.OrderMessage.OrderMessageOrderSurface - (ListMessage_ListMessageListType)(0), // 12: proto.ListMessage.ListMessageListType - (ListResponseMessage_ListResponseMessageListType)(0), // 13: proto.ListResponseMessage.ListResponseMessageListType - (Button_ButtonType)(0), // 14: proto.Button.ButtonType - (ButtonsMessage_ButtonsMessageHeaderType)(0), // 15: proto.ButtonsMessage.ButtonsMessageHeaderType - (ButtonsResponseMessage_ButtonsResponseMessageType)(0), // 16: proto.ButtonsResponseMessage.ButtonsResponseMessageType - (WebFeatures_WebFeaturesFlag)(0), // 17: proto.WebFeatures.WebFeaturesFlag - (PaymentInfo_PaymentInfoCurrency)(0), // 18: proto.PaymentInfo.PaymentInfoCurrency - (PaymentInfo_PaymentInfoStatus)(0), // 19: proto.PaymentInfo.PaymentInfoStatus - (PaymentInfo_PaymentInfoTxnStatus)(0), // 20: proto.PaymentInfo.PaymentInfoTxnStatus - (WebMessageInfo_WebMessageInfoStatus)(0), // 21: proto.WebMessageInfo.WebMessageInfoStatus - (WebMessageInfo_WebMessageInfoStubType)(0), // 22: proto.WebMessageInfo.WebMessageInfoStubType - (WebMessageInfo_WebMessageInfoBizPrivacyStatus)(0), // 23: proto.WebMessageInfo.WebMessageInfoBizPrivacyStatus - (*PaymentMoney)(nil), // 24: proto.PaymentMoney - (*HydratedQuickReplyButton)(nil), // 25: proto.HydratedQuickReplyButton - (*HydratedURLButton)(nil), // 26: proto.HydratedURLButton - (*HydratedCallButton)(nil), // 27: proto.HydratedCallButton - (*HydratedTemplateButton)(nil), // 28: proto.HydratedTemplateButton - (*QuickReplyButton)(nil), // 29: proto.QuickReplyButton - (*URLButton)(nil), // 30: proto.URLButton - (*CallButton)(nil), // 31: proto.CallButton - (*TemplateButton)(nil), // 32: proto.TemplateButton - (*Location)(nil), // 33: proto.Location - (*Point)(nil), // 34: proto.Point - (*InteractiveAnnotation)(nil), // 35: proto.InteractiveAnnotation - (*DeviceListMetadata)(nil), // 36: proto.DeviceListMetadata - (*MessageContextInfo)(nil), // 37: proto.MessageContextInfo - (*AdReplyInfo)(nil), // 38: proto.AdReplyInfo - (*ExternalAdReplyInfo)(nil), // 39: proto.ExternalAdReplyInfo - (*ContextInfo)(nil), // 40: proto.ContextInfo - (*SenderKeyDistributionMessage)(nil), // 41: proto.SenderKeyDistributionMessage - (*ImageMessage)(nil), // 42: proto.ImageMessage - (*InvoiceMessage)(nil), // 43: proto.InvoiceMessage - (*ContactMessage)(nil), // 44: proto.ContactMessage - (*LocationMessage)(nil), // 45: proto.LocationMessage - (*ExtendedTextMessage)(nil), // 46: proto.ExtendedTextMessage - (*DocumentMessage)(nil), // 47: proto.DocumentMessage - (*AudioMessage)(nil), // 48: proto.AudioMessage - (*VideoMessage)(nil), // 49: proto.VideoMessage - (*Call)(nil), // 50: proto.Call - (*Chat)(nil), // 51: proto.Chat - (*ProtocolMessage)(nil), // 52: proto.ProtocolMessage - (*HistorySyncNotification)(nil), // 53: proto.HistorySyncNotification - (*AppStateSyncKey)(nil), // 54: proto.AppStateSyncKey - (*AppStateSyncKeyId)(nil), // 55: proto.AppStateSyncKeyId - (*AppStateSyncKeyFingerprint)(nil), // 56: proto.AppStateSyncKeyFingerprint - (*AppStateSyncKeyData)(nil), // 57: proto.AppStateSyncKeyData - (*AppStateSyncKeyShare)(nil), // 58: proto.AppStateSyncKeyShare - (*AppStateSyncKeyRequest)(nil), // 59: proto.AppStateSyncKeyRequest - (*AppStateFatalExceptionNotification)(nil), // 60: proto.AppStateFatalExceptionNotification - (*InitialSecurityNotificationSettingSync)(nil), // 61: proto.InitialSecurityNotificationSettingSync - (*ContactsArrayMessage)(nil), // 62: proto.ContactsArrayMessage - (*HSMCurrency)(nil), // 63: proto.HSMCurrency - (*HSMDateTimeComponent)(nil), // 64: proto.HSMDateTimeComponent - (*HSMDateTimeUnixEpoch)(nil), // 65: proto.HSMDateTimeUnixEpoch - (*HSMDateTime)(nil), // 66: proto.HSMDateTime - (*HSMLocalizableParameter)(nil), // 67: proto.HSMLocalizableParameter - (*HighlyStructuredMessage)(nil), // 68: proto.HighlyStructuredMessage - (*SendPaymentMessage)(nil), // 69: proto.SendPaymentMessage - (*RequestPaymentMessage)(nil), // 70: proto.RequestPaymentMessage - (*DeclinePaymentRequestMessage)(nil), // 71: proto.DeclinePaymentRequestMessage - (*CancelPaymentRequestMessage)(nil), // 72: proto.CancelPaymentRequestMessage - (*LiveLocationMessage)(nil), // 73: proto.LiveLocationMessage - (*StickerMessage)(nil), // 74: proto.StickerMessage - (*FourRowTemplate)(nil), // 75: proto.FourRowTemplate - (*HydratedFourRowTemplate)(nil), // 76: proto.HydratedFourRowTemplate - (*TemplateMessage)(nil), // 77: proto.TemplateMessage - (*TemplateButtonReplyMessage)(nil), // 78: proto.TemplateButtonReplyMessage - (*CatalogSnapshot)(nil), // 79: proto.CatalogSnapshot - (*ProductSnapshot)(nil), // 80: proto.ProductSnapshot - (*ProductMessage)(nil), // 81: proto.ProductMessage - (*OrderMessage)(nil), // 82: proto.OrderMessage - (*Row)(nil), // 83: proto.Row - (*Section)(nil), // 84: proto.Section - (*ListMessage)(nil), // 85: proto.ListMessage - (*SingleSelectReply)(nil), // 86: proto.SingleSelectReply - (*ListResponseMessage)(nil), // 87: proto.ListResponseMessage - (*GroupInviteMessage)(nil), // 88: proto.GroupInviteMessage - (*EphemeralSetting)(nil), // 89: proto.EphemeralSetting - (*DeviceSentMessage)(nil), // 90: proto.DeviceSentMessage - (*FutureProofMessage)(nil), // 91: proto.FutureProofMessage - (*ButtonText)(nil), // 92: proto.ButtonText - (*Button)(nil), // 93: proto.Button - (*ButtonsMessage)(nil), // 94: proto.ButtonsMessage - (*ButtonsResponseMessage)(nil), // 95: proto.ButtonsResponseMessage - (*Message)(nil), // 96: proto.Message - (*MessageKey)(nil), // 97: proto.MessageKey - (*WebFeatures)(nil), // 98: proto.WebFeatures - (*NotificationMessageInfo)(nil), // 99: proto.NotificationMessageInfo - (*WebNotificationsInfo)(nil), // 100: proto.WebNotificationsInfo - (*PaymentInfo)(nil), // 101: proto.PaymentInfo - (*WebMessageInfo)(nil), // 102: proto.WebMessageInfo -} -var file_def_proto_depIdxs = []int32{ - 25, // 0: proto.HydratedTemplateButton.quickReplyButton:type_name -> proto.HydratedQuickReplyButton - 26, // 1: proto.HydratedTemplateButton.urlButton:type_name -> proto.HydratedURLButton - 27, // 2: proto.HydratedTemplateButton.callButton:type_name -> proto.HydratedCallButton - 68, // 3: proto.QuickReplyButton.displayText:type_name -> proto.HighlyStructuredMessage - 68, // 4: proto.URLButton.displayText:type_name -> proto.HighlyStructuredMessage - 68, // 5: proto.URLButton.url:type_name -> proto.HighlyStructuredMessage - 68, // 6: proto.CallButton.displayText:type_name -> proto.HighlyStructuredMessage - 68, // 7: proto.CallButton.phoneNumber:type_name -> proto.HighlyStructuredMessage - 29, // 8: proto.TemplateButton.quickReplyButton:type_name -> proto.QuickReplyButton - 30, // 9: proto.TemplateButton.urlButton:type_name -> proto.URLButton - 31, // 10: proto.TemplateButton.callButton:type_name -> proto.CallButton - 34, // 11: proto.InteractiveAnnotation.polygonVertices:type_name -> proto.Point - 33, // 12: proto.InteractiveAnnotation.location:type_name -> proto.Location - 36, // 13: proto.MessageContextInfo.deviceListMetadata:type_name -> proto.DeviceListMetadata - 0, // 14: proto.AdReplyInfo.mediaType:type_name -> proto.AdReplyInfo.AdReplyInfoMediaType - 1, // 15: proto.ExternalAdReplyInfo.mediaType:type_name -> proto.ExternalAdReplyInfo.ExternalAdReplyInfoMediaType - 96, // 16: proto.ContextInfo.quotedMessage:type_name -> proto.Message - 38, // 17: proto.ContextInfo.quotedAd:type_name -> proto.AdReplyInfo - 97, // 18: proto.ContextInfo.placeholderKey:type_name -> proto.MessageKey - 39, // 19: proto.ContextInfo.externalAdReply:type_name -> proto.ExternalAdReplyInfo - 35, // 20: proto.ImageMessage.interactiveAnnotations:type_name -> proto.InteractiveAnnotation - 40, // 21: proto.ImageMessage.contextInfo:type_name -> proto.ContextInfo - 2, // 22: proto.InvoiceMessage.attachmentType:type_name -> proto.InvoiceMessage.InvoiceMessageAttachmentType - 40, // 23: proto.ContactMessage.contextInfo:type_name -> proto.ContextInfo - 40, // 24: proto.LocationMessage.contextInfo:type_name -> proto.ContextInfo - 3, // 25: proto.ExtendedTextMessage.font:type_name -> proto.ExtendedTextMessage.ExtendedTextMessageFontType - 4, // 26: proto.ExtendedTextMessage.previewType:type_name -> proto.ExtendedTextMessage.ExtendedTextMessagePreviewType - 40, // 27: proto.ExtendedTextMessage.contextInfo:type_name -> proto.ContextInfo - 40, // 28: proto.DocumentMessage.contextInfo:type_name -> proto.ContextInfo - 40, // 29: proto.AudioMessage.contextInfo:type_name -> proto.ContextInfo - 35, // 30: proto.VideoMessage.interactiveAnnotations:type_name -> proto.InteractiveAnnotation - 40, // 31: proto.VideoMessage.contextInfo:type_name -> proto.ContextInfo - 5, // 32: proto.VideoMessage.gifAttribution:type_name -> proto.VideoMessage.VideoMessageAttribution - 97, // 33: proto.ProtocolMessage.key:type_name -> proto.MessageKey - 6, // 34: proto.ProtocolMessage.type:type_name -> proto.ProtocolMessage.ProtocolMessageType - 53, // 35: proto.ProtocolMessage.historySyncNotification:type_name -> proto.HistorySyncNotification - 58, // 36: proto.ProtocolMessage.appStateSyncKeyShare:type_name -> proto.AppStateSyncKeyShare - 59, // 37: proto.ProtocolMessage.appStateSyncKeyRequest:type_name -> proto.AppStateSyncKeyRequest - 61, // 38: proto.ProtocolMessage.initialSecurityNotificationSettingSync:type_name -> proto.InitialSecurityNotificationSettingSync - 60, // 39: proto.ProtocolMessage.appStateFatalExceptionNotification:type_name -> proto.AppStateFatalExceptionNotification - 7, // 40: proto.HistorySyncNotification.syncType:type_name -> proto.HistorySyncNotification.HistorySyncNotificationHistorySyncType - 55, // 41: proto.AppStateSyncKey.keyId:type_name -> proto.AppStateSyncKeyId - 57, // 42: proto.AppStateSyncKey.keyData:type_name -> proto.AppStateSyncKeyData - 56, // 43: proto.AppStateSyncKeyData.fingerprint:type_name -> proto.AppStateSyncKeyFingerprint - 54, // 44: proto.AppStateSyncKeyShare.keys:type_name -> proto.AppStateSyncKey - 55, // 45: proto.AppStateSyncKeyRequest.keyIds:type_name -> proto.AppStateSyncKeyId - 44, // 46: proto.ContactsArrayMessage.contacts:type_name -> proto.ContactMessage - 40, // 47: proto.ContactsArrayMessage.contextInfo:type_name -> proto.ContextInfo - 8, // 48: proto.HSMDateTimeComponent.dayOfWeek:type_name -> proto.HSMDateTimeComponent.HSMDateTimeComponentDayOfWeekType - 9, // 49: proto.HSMDateTimeComponent.calendar:type_name -> proto.HSMDateTimeComponent.HSMDateTimeComponentCalendarType - 64, // 50: proto.HSMDateTime.component:type_name -> proto.HSMDateTimeComponent - 65, // 51: proto.HSMDateTime.unixEpoch:type_name -> proto.HSMDateTimeUnixEpoch - 63, // 52: proto.HSMLocalizableParameter.currency:type_name -> proto.HSMCurrency - 66, // 53: proto.HSMLocalizableParameter.dateTime:type_name -> proto.HSMDateTime - 67, // 54: proto.HighlyStructuredMessage.localizableParams:type_name -> proto.HSMLocalizableParameter - 77, // 55: proto.HighlyStructuredMessage.hydratedHsm:type_name -> proto.TemplateMessage - 96, // 56: proto.SendPaymentMessage.noteMessage:type_name -> proto.Message - 97, // 57: proto.SendPaymentMessage.requestMessageKey:type_name -> proto.MessageKey - 96, // 58: proto.RequestPaymentMessage.noteMessage:type_name -> proto.Message - 24, // 59: proto.RequestPaymentMessage.amount:type_name -> proto.PaymentMoney - 97, // 60: proto.DeclinePaymentRequestMessage.key:type_name -> proto.MessageKey - 97, // 61: proto.CancelPaymentRequestMessage.key:type_name -> proto.MessageKey - 40, // 62: proto.LiveLocationMessage.contextInfo:type_name -> proto.ContextInfo - 40, // 63: proto.StickerMessage.contextInfo:type_name -> proto.ContextInfo - 68, // 64: proto.FourRowTemplate.content:type_name -> proto.HighlyStructuredMessage - 68, // 65: proto.FourRowTemplate.footer:type_name -> proto.HighlyStructuredMessage - 32, // 66: proto.FourRowTemplate.buttons:type_name -> proto.TemplateButton - 47, // 67: proto.FourRowTemplate.documentMessage:type_name -> proto.DocumentMessage - 68, // 68: proto.FourRowTemplate.highlyStructuredMessage:type_name -> proto.HighlyStructuredMessage - 42, // 69: proto.FourRowTemplate.imageMessage:type_name -> proto.ImageMessage - 49, // 70: proto.FourRowTemplate.videoMessage:type_name -> proto.VideoMessage - 45, // 71: proto.FourRowTemplate.locationMessage:type_name -> proto.LocationMessage - 28, // 72: proto.HydratedFourRowTemplate.hydratedButtons:type_name -> proto.HydratedTemplateButton - 47, // 73: proto.HydratedFourRowTemplate.documentMessage:type_name -> proto.DocumentMessage - 42, // 74: proto.HydratedFourRowTemplate.imageMessage:type_name -> proto.ImageMessage - 49, // 75: proto.HydratedFourRowTemplate.videoMessage:type_name -> proto.VideoMessage - 45, // 76: proto.HydratedFourRowTemplate.locationMessage:type_name -> proto.LocationMessage - 40, // 77: proto.TemplateMessage.contextInfo:type_name -> proto.ContextInfo - 76, // 78: proto.TemplateMessage.hydratedTemplate:type_name -> proto.HydratedFourRowTemplate - 75, // 79: proto.TemplateMessage.fourRowTemplate:type_name -> proto.FourRowTemplate - 76, // 80: proto.TemplateMessage.hydratedFourRowTemplate:type_name -> proto.HydratedFourRowTemplate - 40, // 81: proto.TemplateButtonReplyMessage.contextInfo:type_name -> proto.ContextInfo - 42, // 82: proto.CatalogSnapshot.catalogImage:type_name -> proto.ImageMessage - 42, // 83: proto.ProductSnapshot.productImage:type_name -> proto.ImageMessage - 80, // 84: proto.ProductMessage.product:type_name -> proto.ProductSnapshot - 79, // 85: proto.ProductMessage.catalog:type_name -> proto.CatalogSnapshot - 40, // 86: proto.ProductMessage.contextInfo:type_name -> proto.ContextInfo - 10, // 87: proto.OrderMessage.status:type_name -> proto.OrderMessage.OrderMessageOrderStatus - 11, // 88: proto.OrderMessage.surface:type_name -> proto.OrderMessage.OrderMessageOrderSurface - 40, // 89: proto.OrderMessage.contextInfo:type_name -> proto.ContextInfo - 83, // 90: proto.Section.rows:type_name -> proto.Row - 12, // 91: proto.ListMessage.listType:type_name -> proto.ListMessage.ListMessageListType - 84, // 92: proto.ListMessage.sections:type_name -> proto.Section - 13, // 93: proto.ListResponseMessage.listType:type_name -> proto.ListResponseMessage.ListResponseMessageListType - 86, // 94: proto.ListResponseMessage.singleSelectReply:type_name -> proto.SingleSelectReply - 40, // 95: proto.ListResponseMessage.contextInfo:type_name -> proto.ContextInfo - 40, // 96: proto.GroupInviteMessage.contextInfo:type_name -> proto.ContextInfo - 96, // 97: proto.DeviceSentMessage.message:type_name -> proto.Message - 89, // 98: proto.DeviceSentMessage.broadcastEphemeralSettings:type_name -> proto.EphemeralSetting - 96, // 99: proto.FutureProofMessage.message:type_name -> proto.Message - 92, // 100: proto.Button.buttonText:type_name -> proto.ButtonText - 14, // 101: proto.Button.type:type_name -> proto.Button.ButtonType - 40, // 102: proto.ButtonsMessage.contextInfo:type_name -> proto.ContextInfo - 93, // 103: proto.ButtonsMessage.buttons:type_name -> proto.Button - 15, // 104: proto.ButtonsMessage.headerType:type_name -> proto.ButtonsMessage.ButtonsMessageHeaderType - 47, // 105: proto.ButtonsMessage.documentMessage:type_name -> proto.DocumentMessage - 42, // 106: proto.ButtonsMessage.imageMessage:type_name -> proto.ImageMessage - 49, // 107: proto.ButtonsMessage.videoMessage:type_name -> proto.VideoMessage - 45, // 108: proto.ButtonsMessage.locationMessage:type_name -> proto.LocationMessage - 40, // 109: proto.ButtonsResponseMessage.contextInfo:type_name -> proto.ContextInfo - 16, // 110: proto.ButtonsResponseMessage.type:type_name -> proto.ButtonsResponseMessage.ButtonsResponseMessageType - 41, // 111: proto.Message.senderKeyDistributionMessage:type_name -> proto.SenderKeyDistributionMessage - 42, // 112: proto.Message.imageMessage:type_name -> proto.ImageMessage - 44, // 113: proto.Message.contactMessage:type_name -> proto.ContactMessage - 45, // 114: proto.Message.locationMessage:type_name -> proto.LocationMessage - 46, // 115: proto.Message.extendedTextMessage:type_name -> proto.ExtendedTextMessage - 47, // 116: proto.Message.documentMessage:type_name -> proto.DocumentMessage - 48, // 117: proto.Message.audioMessage:type_name -> proto.AudioMessage - 49, // 118: proto.Message.videoMessage:type_name -> proto.VideoMessage - 50, // 119: proto.Message.call:type_name -> proto.Call - 51, // 120: proto.Message.chat:type_name -> proto.Chat - 52, // 121: proto.Message.protocolMessage:type_name -> proto.ProtocolMessage - 62, // 122: proto.Message.contactsArrayMessage:type_name -> proto.ContactsArrayMessage - 68, // 123: proto.Message.highlyStructuredMessage:type_name -> proto.HighlyStructuredMessage - 41, // 124: proto.Message.fastRatchetKeySenderKeyDistributionMessage:type_name -> proto.SenderKeyDistributionMessage - 69, // 125: proto.Message.sendPaymentMessage:type_name -> proto.SendPaymentMessage - 73, // 126: proto.Message.liveLocationMessage:type_name -> proto.LiveLocationMessage - 70, // 127: proto.Message.requestPaymentMessage:type_name -> proto.RequestPaymentMessage - 71, // 128: proto.Message.declinePaymentRequestMessage:type_name -> proto.DeclinePaymentRequestMessage - 72, // 129: proto.Message.cancelPaymentRequestMessage:type_name -> proto.CancelPaymentRequestMessage - 77, // 130: proto.Message.templateMessage:type_name -> proto.TemplateMessage - 74, // 131: proto.Message.stickerMessage:type_name -> proto.StickerMessage - 88, // 132: proto.Message.groupInviteMessage:type_name -> proto.GroupInviteMessage - 78, // 133: proto.Message.templateButtonReplyMessage:type_name -> proto.TemplateButtonReplyMessage - 81, // 134: proto.Message.productMessage:type_name -> proto.ProductMessage - 90, // 135: proto.Message.deviceSentMessage:type_name -> proto.DeviceSentMessage - 37, // 136: proto.Message.messageContextInfo:type_name -> proto.MessageContextInfo - 85, // 137: proto.Message.listMessage:type_name -> proto.ListMessage - 91, // 138: proto.Message.viewOnceMessage:type_name -> proto.FutureProofMessage - 82, // 139: proto.Message.orderMessage:type_name -> proto.OrderMessage - 87, // 140: proto.Message.listResponseMessage:type_name -> proto.ListResponseMessage - 91, // 141: proto.Message.ephemeralMessage:type_name -> proto.FutureProofMessage - 43, // 142: proto.Message.invoiceMessage:type_name -> proto.InvoiceMessage - 94, // 143: proto.Message.buttonsMessage:type_name -> proto.ButtonsMessage - 95, // 144: proto.Message.buttonsResponseMessage:type_name -> proto.ButtonsResponseMessage - 17, // 145: proto.WebFeatures.labelsDisplay:type_name -> proto.WebFeatures.WebFeaturesFlag - 17, // 146: proto.WebFeatures.voipIndividualOutgoing:type_name -> proto.WebFeatures.WebFeaturesFlag - 17, // 147: proto.WebFeatures.groupsV3:type_name -> proto.WebFeatures.WebFeaturesFlag - 17, // 148: proto.WebFeatures.groupsV3Create:type_name -> proto.WebFeatures.WebFeaturesFlag - 17, // 149: proto.WebFeatures.changeNumberV2:type_name -> proto.WebFeatures.WebFeaturesFlag - 17, // 150: proto.WebFeatures.queryStatusV3Thumbnail:type_name -> proto.WebFeatures.WebFeaturesFlag - 17, // 151: proto.WebFeatures.liveLocations:type_name -> proto.WebFeatures.WebFeaturesFlag - 17, // 152: proto.WebFeatures.queryVname:type_name -> proto.WebFeatures.WebFeaturesFlag - 17, // 153: proto.WebFeatures.voipIndividualIncoming:type_name -> proto.WebFeatures.WebFeaturesFlag - 17, // 154: proto.WebFeatures.quickRepliesQuery:type_name -> proto.WebFeatures.WebFeaturesFlag - 17, // 155: proto.WebFeatures.payments:type_name -> proto.WebFeatures.WebFeaturesFlag - 17, // 156: proto.WebFeatures.stickerPackQuery:type_name -> proto.WebFeatures.WebFeaturesFlag - 17, // 157: proto.WebFeatures.liveLocationsFinal:type_name -> proto.WebFeatures.WebFeaturesFlag - 17, // 158: proto.WebFeatures.labelsEdit:type_name -> proto.WebFeatures.WebFeaturesFlag - 17, // 159: proto.WebFeatures.mediaUpload:type_name -> proto.WebFeatures.WebFeaturesFlag - 17, // 160: proto.WebFeatures.mediaUploadRichQuickReplies:type_name -> proto.WebFeatures.WebFeaturesFlag - 17, // 161: proto.WebFeatures.vnameV2:type_name -> proto.WebFeatures.WebFeaturesFlag - 17, // 162: proto.WebFeatures.videoPlaybackUrl:type_name -> proto.WebFeatures.WebFeaturesFlag - 17, // 163: proto.WebFeatures.statusRanking:type_name -> proto.WebFeatures.WebFeaturesFlag - 17, // 164: proto.WebFeatures.voipIndividualVideo:type_name -> proto.WebFeatures.WebFeaturesFlag - 17, // 165: proto.WebFeatures.thirdPartyStickers:type_name -> proto.WebFeatures.WebFeaturesFlag - 17, // 166: proto.WebFeatures.frequentlyForwardedSetting:type_name -> proto.WebFeatures.WebFeaturesFlag - 17, // 167: proto.WebFeatures.groupsV4JoinPermission:type_name -> proto.WebFeatures.WebFeaturesFlag - 17, // 168: proto.WebFeatures.recentStickers:type_name -> proto.WebFeatures.WebFeaturesFlag - 17, // 169: proto.WebFeatures.catalog:type_name -> proto.WebFeatures.WebFeaturesFlag - 17, // 170: proto.WebFeatures.starredStickers:type_name -> proto.WebFeatures.WebFeaturesFlag - 17, // 171: proto.WebFeatures.voipGroupCall:type_name -> proto.WebFeatures.WebFeaturesFlag - 17, // 172: proto.WebFeatures.templateMessage:type_name -> proto.WebFeatures.WebFeaturesFlag - 17, // 173: proto.WebFeatures.templateMessageInteractivity:type_name -> proto.WebFeatures.WebFeaturesFlag - 17, // 174: proto.WebFeatures.ephemeralMessages:type_name -> proto.WebFeatures.WebFeaturesFlag - 17, // 175: proto.WebFeatures.e2ENotificationSync:type_name -> proto.WebFeatures.WebFeaturesFlag - 17, // 176: proto.WebFeatures.recentStickersV2:type_name -> proto.WebFeatures.WebFeaturesFlag - 17, // 177: proto.WebFeatures.syncdRelease1:type_name -> proto.WebFeatures.WebFeaturesFlag - 17, // 178: proto.WebFeatures.recentStickersV3:type_name -> proto.WebFeatures.WebFeaturesFlag - 17, // 179: proto.WebFeatures.userNotice:type_name -> proto.WebFeatures.WebFeaturesFlag - 17, // 180: proto.WebFeatures.syncdRelease11:type_name -> proto.WebFeatures.WebFeaturesFlag - 17, // 181: proto.WebFeatures.support:type_name -> proto.WebFeatures.WebFeaturesFlag - 17, // 182: proto.WebFeatures.groupUiiCleanup:type_name -> proto.WebFeatures.WebFeaturesFlag - 17, // 183: proto.WebFeatures.groupDogfoodingInternalOnly:type_name -> proto.WebFeatures.WebFeaturesFlag - 17, // 184: proto.WebFeatures.settingsSync:type_name -> proto.WebFeatures.WebFeaturesFlag - 97, // 185: proto.NotificationMessageInfo.key:type_name -> proto.MessageKey - 96, // 186: proto.NotificationMessageInfo.message:type_name -> proto.Message - 102, // 187: proto.WebNotificationsInfo.notifyMessages:type_name -> proto.WebMessageInfo - 18, // 188: proto.PaymentInfo.currencyDeprecated:type_name -> proto.PaymentInfo.PaymentInfoCurrency - 19, // 189: proto.PaymentInfo.status:type_name -> proto.PaymentInfo.PaymentInfoStatus - 97, // 190: proto.PaymentInfo.requestMessageKey:type_name -> proto.MessageKey - 20, // 191: proto.PaymentInfo.txnStatus:type_name -> proto.PaymentInfo.PaymentInfoTxnStatus - 24, // 192: proto.PaymentInfo.primaryAmount:type_name -> proto.PaymentMoney - 24, // 193: proto.PaymentInfo.exchangeAmount:type_name -> proto.PaymentMoney - 97, // 194: proto.WebMessageInfo.key:type_name -> proto.MessageKey - 96, // 195: proto.WebMessageInfo.message:type_name -> proto.Message - 21, // 196: proto.WebMessageInfo.status:type_name -> proto.WebMessageInfo.WebMessageInfoStatus - 22, // 197: proto.WebMessageInfo.messageStubType:type_name -> proto.WebMessageInfo.WebMessageInfoStubType - 101, // 198: proto.WebMessageInfo.paymentInfo:type_name -> proto.PaymentInfo - 73, // 199: proto.WebMessageInfo.finalLiveLocation:type_name -> proto.LiveLocationMessage - 101, // 200: proto.WebMessageInfo.quotedPaymentInfo:type_name -> proto.PaymentInfo - 23, // 201: proto.WebMessageInfo.bizPrivacyStatus:type_name -> proto.WebMessageInfo.WebMessageInfoBizPrivacyStatus - 202, // [202:202] is the sub-list for method output_type - 202, // [202:202] is the sub-list for method input_type - 202, // [202:202] is the sub-list for extension type_name - 202, // [202:202] is the sub-list for extension extendee - 0, // [0:202] is the sub-list for field type_name -} - -func init() { file_def_proto_init() } -func file_def_proto_init() { - if File_def_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_def_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PaymentMoney); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HydratedQuickReplyButton); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HydratedURLButton); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HydratedCallButton); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HydratedTemplateButton); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QuickReplyButton); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*URLButton); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CallButton); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TemplateButton); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Location); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Point); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*InteractiveAnnotation); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeviceListMetadata); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MessageContextInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AdReplyInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExternalAdReplyInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ContextInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SenderKeyDistributionMessage); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ImageMessage); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*InvoiceMessage); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ContactMessage); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LocationMessage); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExtendedTextMessage); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DocumentMessage); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AudioMessage); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VideoMessage); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Call); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Chat); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProtocolMessage); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HistorySyncNotification); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AppStateSyncKey); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AppStateSyncKeyId); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AppStateSyncKeyFingerprint); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AppStateSyncKeyData); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AppStateSyncKeyShare); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AppStateSyncKeyRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AppStateFatalExceptionNotification); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*InitialSecurityNotificationSettingSync); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ContactsArrayMessage); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HSMCurrency); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HSMDateTimeComponent); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HSMDateTimeUnixEpoch); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HSMDateTime); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HSMLocalizableParameter); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HighlyStructuredMessage); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SendPaymentMessage); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RequestPaymentMessage); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeclinePaymentRequestMessage); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CancelPaymentRequestMessage); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LiveLocationMessage); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StickerMessage); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FourRowTemplate); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HydratedFourRowTemplate); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TemplateMessage); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TemplateButtonReplyMessage); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CatalogSnapshot); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProductSnapshot); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProductMessage); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OrderMessage); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Row); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Section); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListMessage); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SingleSelectReply); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListResponseMessage); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GroupInviteMessage); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EphemeralSetting); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeviceSentMessage); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FutureProofMessage); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ButtonText); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Button); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ButtonsMessage); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ButtonsResponseMessage); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Message); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MessageKey); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WebFeatures); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NotificationMessageInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WebNotificationsInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PaymentInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_def_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WebMessageInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_def_proto_msgTypes[4].OneofWrappers = []interface{}{ - (*HydratedTemplateButton_QuickReplyButton)(nil), - (*HydratedTemplateButton_UrlButton)(nil), - (*HydratedTemplateButton_CallButton)(nil), - } - file_def_proto_msgTypes[8].OneofWrappers = []interface{}{ - (*TemplateButton_QuickReplyButton)(nil), - (*TemplateButton_UrlButton)(nil), - (*TemplateButton_CallButton)(nil), - } - file_def_proto_msgTypes[11].OneofWrappers = []interface{}{ - (*InteractiveAnnotation_Location)(nil), - } - file_def_proto_msgTypes[42].OneofWrappers = []interface{}{ - (*HSMDateTime_Component)(nil), - (*HSMDateTime_UnixEpoch)(nil), - } - file_def_proto_msgTypes[43].OneofWrappers = []interface{}{ - (*HSMLocalizableParameter_Currency)(nil), - (*HSMLocalizableParameter_DateTime)(nil), - } - file_def_proto_msgTypes[51].OneofWrappers = []interface{}{ - (*FourRowTemplate_DocumentMessage)(nil), - (*FourRowTemplate_HighlyStructuredMessage)(nil), - (*FourRowTemplate_ImageMessage)(nil), - (*FourRowTemplate_VideoMessage)(nil), - (*FourRowTemplate_LocationMessage)(nil), - } - file_def_proto_msgTypes[52].OneofWrappers = []interface{}{ - (*HydratedFourRowTemplate_DocumentMessage)(nil), - (*HydratedFourRowTemplate_HydratedTitleText)(nil), - (*HydratedFourRowTemplate_ImageMessage)(nil), - (*HydratedFourRowTemplate_VideoMessage)(nil), - (*HydratedFourRowTemplate_LocationMessage)(nil), - } - file_def_proto_msgTypes[53].OneofWrappers = []interface{}{ - (*TemplateMessage_FourRowTemplate)(nil), - (*TemplateMessage_HydratedFourRowTemplate)(nil), - } - file_def_proto_msgTypes[70].OneofWrappers = []interface{}{ - (*ButtonsMessage_Text)(nil), - (*ButtonsMessage_DocumentMessage)(nil), - (*ButtonsMessage_ImageMessage)(nil), - (*ButtonsMessage_VideoMessage)(nil), - (*ButtonsMessage_LocationMessage)(nil), - } - file_def_proto_msgTypes[71].OneofWrappers = []interface{}{ - (*ButtonsResponseMessage_SelectedDisplayText)(nil), - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_def_proto_rawDesc, - NumEnums: 24, - NumMessages: 79, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_def_proto_goTypes, - DependencyIndexes: file_def_proto_depIdxs, - EnumInfos: file_def_proto_enumTypes, - MessageInfos: file_def_proto_msgTypes, - }.Build() - File_def_proto = out.File - file_def_proto_rawDesc = nil - file_def_proto_goTypes = nil - file_def_proto_depIdxs = nil -}
\ No newline at end of file diff --git a/vendor/github.com/Rhymen/go-whatsapp/binary/proto/def.proto b/vendor/github.com/Rhymen/go-whatsapp/binary/proto/def.proto deleted file mode 100644 index 58c6f20c..00000000 --- a/vendor/github.com/Rhymen/go-whatsapp/binary/proto/def.proto +++ /dev/null @@ -1,1050 +0,0 @@ -syntax = "proto2"; -package proto; - -message PaymentMoney { - optional int64 value = 1; - optional uint32 offset = 2; - optional string currencyCode = 3; -} - -message HydratedQuickReplyButton { - optional string displayText = 1; - optional string id = 2; -} - -message HydratedURLButton { - optional string displayText = 1; - optional string url = 2; -} - -message HydratedCallButton { - optional string displayText = 1; - optional string phoneNumber = 2; -} - -message HydratedTemplateButton { - optional uint32 index = 4; - oneof hydratedButton { - HydratedQuickReplyButton quickReplyButton = 1; - HydratedURLButton urlButton = 2; - HydratedCallButton callButton = 3; - } -} - -message QuickReplyButton { - optional HighlyStructuredMessage displayText = 1; - optional string id = 2; -} - -message URLButton { - optional HighlyStructuredMessage displayText = 1; - optional HighlyStructuredMessage url = 2; -} - -message CallButton { - optional HighlyStructuredMessage displayText = 1; - optional HighlyStructuredMessage phoneNumber = 2; -} - -message TemplateButton { - optional uint32 index = 4; - oneof button { - QuickReplyButton quickReplyButton = 1; - URLButton urlButton = 2; - CallButton callButton = 3; - } -} - -message Location { - optional double degreesLatitude = 1; - optional double degreesLongitude = 2; - optional string name = 3; -} - -message Point { - optional int32 xDeprecated = 1; - optional int32 yDeprecated = 2; - optional double x = 3; - optional double y = 4; -} - -message InteractiveAnnotation { - repeated Point polygonVertices = 1; - oneof action { - Location location = 2; - } -} - -message DeviceListMetadata { - optional bytes senderKeyHash = 1; - optional uint64 senderTimestamp = 2; - optional bytes recipientKeyHash = 8; - optional uint64 recipientTimestamp = 9; -} - -message MessageContextInfo { - optional DeviceListMetadata deviceListMetadata = 1; -} - -message AdReplyInfo { - optional string advertiserName = 1; - enum AdReplyInfoMediaType { - NONE = 0; - IMAGE = 1; - VIDEO = 2; - } - optional AdReplyInfoMediaType mediaType = 2; - optional bytes jpegThumbnail = 16; - optional string caption = 17; -} - -message ExternalAdReplyInfo { - optional string title = 1; - optional string body = 2; - enum ExternalAdReplyInfoMediaType { - NONE = 0; - IMAGE = 1; - VIDEO = 2; - } - optional ExternalAdReplyInfoMediaType mediaType = 3; - optional string thumbnailUrl = 4; - optional string mediaUrl = 5; - optional bytes thumbnail = 6; - optional string sourceType = 7; - optional string sourceId = 8; - optional string sourceUrl = 9; -} - -message ContextInfo { - optional string stanzaId = 1; - optional string participant = 2; - optional Message quotedMessage = 3; - optional string remoteJid = 4; - repeated string mentionedJid = 15; - optional string conversionSource = 18; - optional bytes conversionData = 19; - optional uint32 conversionDelaySeconds = 20; - optional uint32 forwardingScore = 21; - optional bool isForwarded = 22; - optional AdReplyInfo quotedAd = 23; - optional MessageKey placeholderKey = 24; - optional uint32 expiration = 25; - optional int64 ephemeralSettingTimestamp = 26; - optional bytes ephemeralSharedSecret = 27; - optional ExternalAdReplyInfo externalAdReply = 28; -} - -message SenderKeyDistributionMessage { - optional string groupId = 1; - optional bytes axolotlSenderKeyDistributionMessage = 2; -} - -message ImageMessage { - optional string url = 1; - optional string mimetype = 2; - optional string caption = 3; - optional bytes fileSha256 = 4; - optional uint64 fileLength = 5; - optional uint32 height = 6; - optional uint32 width = 7; - optional bytes mediaKey = 8; - optional bytes fileEncSha256 = 9; - repeated InteractiveAnnotation interactiveAnnotations = 10; - optional string directPath = 11; - optional int64 mediaKeyTimestamp = 12; - optional bytes jpegThumbnail = 16; - optional ContextInfo contextInfo = 17; - optional bytes firstScanSidecar = 18; - optional uint32 firstScanLength = 19; - optional uint32 experimentGroupId = 20; - optional bytes scansSidecar = 21; - repeated uint32 scanLengths = 22; - optional bytes midQualityFileSha256 = 23; - optional bytes midQualityFileEncSha256 = 24; - optional bool viewOnce = 25; - optional string thumbnailDirectPath = 26; - optional bytes thumbnailSha256 = 27; - optional bytes thumbnailEncSha256 = 28; -} - -message InvoiceMessage { - optional string note = 1; - optional string token = 2; - enum InvoiceMessageAttachmentType { - IMAGE = 0; - PDF = 1; - } - optional InvoiceMessageAttachmentType attachmentType = 3; - optional string attachmentMimetype = 4; - optional bytes attachmentMediaKey = 5; - optional int64 attachmentMediaKeyTimestamp = 6; - optional bytes attachmentFileSha256 = 7; - optional bytes attachmentFileEncSha256 = 8; - optional string attachmentDirectPath = 9; - optional bytes attachmentJpegThumbnail = 10; -} - -message ContactMessage { - optional string displayName = 1; - optional string vcard = 16; - optional ContextInfo contextInfo = 17; -} - -message LocationMessage { - optional double degreesLatitude = 1; - optional double degreesLongitude = 2; - optional string name = 3; - optional string address = 4; - optional string url = 5; - optional bool isLive = 6; - optional uint32 accuracyInMeters = 7; - optional float speedInMps = 8; - optional uint32 degreesClockwiseFromMagneticNorth = 9; - optional string comment = 11; - optional bytes jpegThumbnail = 16; - optional ContextInfo contextInfo = 17; -} - -message ExtendedTextMessage { - optional string text = 1; - optional string matchedText = 2; - optional string canonicalUrl = 4; - optional string description = 5; - optional string title = 6; - optional fixed32 textArgb = 7; - optional fixed32 backgroundArgb = 8; - enum ExtendedTextMessageFontType { - SANS_SERIF = 0; - SERIF = 1; - NORICAN_REGULAR = 2; - BRYNDAN_WRITE = 3; - BEBASNEUE_REGULAR = 4; - OSWALD_HEAVY = 5; - } - optional ExtendedTextMessageFontType font = 9; - enum ExtendedTextMessagePreviewType { - NONE = 0; - VIDEO = 1; - } - optional ExtendedTextMessagePreviewType previewType = 10; - optional bytes jpegThumbnail = 16; - optional ContextInfo contextInfo = 17; - optional bool doNotPlayInline = 18; -} - -message DocumentMessage { - optional string url = 1; - optional string mimetype = 2; - optional string title = 3; - optional bytes fileSha256 = 4; - optional uint64 fileLength = 5; - optional uint32 pageCount = 6; - optional bytes mediaKey = 7; - optional string fileName = 8; - optional bytes fileEncSha256 = 9; - optional string directPath = 10; - optional int64 mediaKeyTimestamp = 11; - optional bool contactVcard = 12; - optional string thumbnailDirectPath = 13; - optional bytes thumbnailSha256 = 14; - optional bytes thumbnailEncSha256 = 15; - optional bytes jpegThumbnail = 16; - optional ContextInfo contextInfo = 17; - optional uint32 thumbnailHeight = 18; - optional uint32 thumbnailWidth = 19; -} - -message AudioMessage { - optional string url = 1; - optional string mimetype = 2; - optional bytes fileSha256 = 3; - optional uint64 fileLength = 4; - optional uint32 seconds = 5; - optional bool ptt = 6; - optional bytes mediaKey = 7; - optional bytes fileEncSha256 = 8; - optional string directPath = 9; - optional int64 mediaKeyTimestamp = 10; - optional ContextInfo contextInfo = 17; - optional bytes streamingSidecar = 18; -} - -message VideoMessage { - optional string url = 1; - optional string mimetype = 2; - optional bytes fileSha256 = 3; - optional uint64 fileLength = 4; - optional uint32 seconds = 5; - optional bytes mediaKey = 6; - optional string caption = 7; - optional bool gifPlayback = 8; - optional uint32 height = 9; - optional uint32 width = 10; - optional bytes fileEncSha256 = 11; - repeated InteractiveAnnotation interactiveAnnotations = 12; - optional string directPath = 13; - optional int64 mediaKeyTimestamp = 14; - optional bytes jpegThumbnail = 16; - optional ContextInfo contextInfo = 17; - optional bytes streamingSidecar = 18; - enum VideoMessageAttribution { - NONE = 0; - GIPHY = 1; - TENOR = 2; - } - optional VideoMessageAttribution gifAttribution = 19; - optional bool viewOnce = 20; - optional string thumbnailDirectPath = 21; - optional bytes thumbnailSha256 = 22; - optional bytes thumbnailEncSha256 = 23; -} - -message Call { - optional bytes callKey = 1; -} - -message Chat { - optional string displayName = 1; - optional string id = 2; -} - -message ProtocolMessage { - optional MessageKey key = 1; - enum ProtocolMessageType { - REVOKE = 0; - EPHEMERAL_SETTING = 3; - EPHEMERAL_SYNC_RESPONSE = 4; - HISTORY_SYNC_NOTIFICATION = 5; - APP_STATE_SYNC_KEY_SHARE = 6; - APP_STATE_SYNC_KEY_REQUEST = 7; - MSG_FANOUT_BACKFILL_REQUEST = 8; - INITIAL_SECURITY_NOTIFICATION_SETTING_SYNC = 9; - APP_STATE_FATAL_EXCEPTION_NOTIFICATION = 10; - } - optional ProtocolMessageType type = 2; - optional uint32 ephemeralExpiration = 4; - optional int64 ephemeralSettingTimestamp = 5; - optional HistorySyncNotification historySyncNotification = 6; - optional AppStateSyncKeyShare appStateSyncKeyShare = 7; - optional AppStateSyncKeyRequest appStateSyncKeyRequest = 8; - optional InitialSecurityNotificationSettingSync initialSecurityNotificationSettingSync = 9; - optional AppStateFatalExceptionNotification appStateFatalExceptionNotification = 10; -} - -message HistorySyncNotification { - optional bytes fileSha256 = 1; - optional uint64 fileLength = 2; - optional bytes mediaKey = 3; - optional bytes fileEncSha256 = 4; - optional string directPath = 5; - enum HistorySyncNotificationHistorySyncType { - INITIAL_BOOTSTRAP = 0; - INITIAL_STATUS_V3 = 1; - FULL = 2; - RECENT = 3; - PUSH_NAME = 4; - } - optional HistorySyncNotificationHistorySyncType syncType = 6; - optional uint32 chunkOrder = 7; - optional string originalMessageId = 8; -} - -message AppStateSyncKey { - optional AppStateSyncKeyId keyId = 1; - optional AppStateSyncKeyData keyData = 2; -} - -message AppStateSyncKeyId { - optional bytes keyId = 1; -} - -message AppStateSyncKeyFingerprint { - optional uint32 rawId = 1; - optional uint32 currentIndex = 2; - repeated uint32 deviceIndexes = 3 [packed=true]; -} - -message AppStateSyncKeyData { - optional bytes keyData = 1; - optional AppStateSyncKeyFingerprint fingerprint = 2; - optional int64 timestamp = 3; -} - -message AppStateSyncKeyShare { - repeated AppStateSyncKey keys = 1; -} - -message AppStateSyncKeyRequest { - repeated AppStateSyncKeyId keyIds = 1; -} - -message AppStateFatalExceptionNotification { - repeated string collectionNames = 1; - optional int64 timestamp = 2; -} - -message InitialSecurityNotificationSettingSync { - optional bool securityNotificationEnabled = 1; -} - -message ContactsArrayMessage { - optional string displayName = 1; - repeated ContactMessage contacts = 2; - optional ContextInfo contextInfo = 17; -} - -message HSMCurrency { - optional string currencyCode = 1; - optional int64 amount1000 = 2; -} - -message HSMDateTimeComponent { - enum HSMDateTimeComponentDayOfWeekType { - MONDAY = 1; - TUESDAY = 2; - WEDNESDAY = 3; - THURSDAY = 4; - FRIDAY = 5; - SATURDAY = 6; - SUNDAY = 7; - } - optional HSMDateTimeComponentDayOfWeekType dayOfWeek = 1; - optional uint32 year = 2; - optional uint32 month = 3; - optional uint32 dayOfMonth = 4; - optional uint32 hour = 5; - optional uint32 minute = 6; - enum HSMDateTimeComponentCalendarType { - GREGORIAN = 1; - SOLAR_HIJRI = 2; - } - optional HSMDateTimeComponentCalendarType calendar = 7; -} - -message HSMDateTimeUnixEpoch { - optional int64 timestamp = 1; -} - -message HSMDateTime { - oneof datetimeOneof { - HSMDateTimeComponent component = 1; - HSMDateTimeUnixEpoch unixEpoch = 2; - } -} - -message HSMLocalizableParameter { - optional string default = 1; - oneof paramOneof { - HSMCurrency currency = 2; - HSMDateTime dateTime = 3; - } -} - -message HighlyStructuredMessage { - optional string namespace = 1; - optional string elementName = 2; - repeated string params = 3; - optional string fallbackLg = 4; - optional string fallbackLc = 5; - repeated HSMLocalizableParameter localizableParams = 6; - optional string deterministicLg = 7; - optional string deterministicLc = 8; - optional TemplateMessage hydratedHsm = 9; -} - -message SendPaymentMessage { - optional Message noteMessage = 2; - optional MessageKey requestMessageKey = 3; -} - -message RequestPaymentMessage { - optional Message noteMessage = 4; - optional string currencyCodeIso4217 = 1; - optional uint64 amount1000 = 2; - optional string requestFrom = 3; - optional int64 expiryTimestamp = 5; - optional PaymentMoney amount = 6; -} - -message DeclinePaymentRequestMessage { - optional MessageKey key = 1; -} - -message CancelPaymentRequestMessage { - optional MessageKey key = 1; -} - -message LiveLocationMessage { - optional double degreesLatitude = 1; - optional double degreesLongitude = 2; - optional uint32 accuracyInMeters = 3; - optional float speedInMps = 4; - optional uint32 degreesClockwiseFromMagneticNorth = 5; - optional string caption = 6; - optional int64 sequenceNumber = 7; - optional uint32 timeOffset = 8; - optional bytes jpegThumbnail = 16; - optional ContextInfo contextInfo = 17; -} - -message StickerMessage { - optional string url = 1; - optional bytes fileSha256 = 2; - optional bytes fileEncSha256 = 3; - optional bytes mediaKey = 4; - optional string mimetype = 5; - optional uint32 height = 6; - optional uint32 width = 7; - optional string directPath = 8; - optional uint64 fileLength = 9; - optional int64 mediaKeyTimestamp = 10; - optional uint32 firstFrameLength = 11; - optional bytes firstFrameSidecar = 12; - optional bool isAnimated = 13; - optional bytes pngThumbnail = 16; - optional ContextInfo contextInfo = 17; -} - -message FourRowTemplate { - optional HighlyStructuredMessage content = 6; - optional HighlyStructuredMessage footer = 7; - repeated TemplateButton buttons = 8; - oneof title { - DocumentMessage documentMessage = 1; - HighlyStructuredMessage highlyStructuredMessage = 2; - ImageMessage imageMessage = 3; - VideoMessage videoMessage = 4; - LocationMessage locationMessage = 5; - } -} - -message HydratedFourRowTemplate { - optional string hydratedContentText = 6; - optional string hydratedFooterText = 7; - repeated HydratedTemplateButton hydratedButtons = 8; - optional string templateId = 9; - oneof title { - DocumentMessage documentMessage = 1; - string hydratedTitleText = 2; - ImageMessage imageMessage = 3; - VideoMessage videoMessage = 4; - LocationMessage locationMessage = 5; - } -} - -message TemplateMessage { - optional ContextInfo contextInfo = 3; - optional HydratedFourRowTemplate hydratedTemplate = 4; - oneof format { - FourRowTemplate fourRowTemplate = 1; - HydratedFourRowTemplate hydratedFourRowTemplate = 2; - } -} - -message TemplateButtonReplyMessage { - optional string selectedId = 1; - optional string selectedDisplayText = 2; - optional ContextInfo contextInfo = 3; - optional uint32 selectedIndex = 4; -} - -message CatalogSnapshot { - optional ImageMessage catalogImage = 1; - optional string title = 2; - optional string description = 3; -} - -message ProductSnapshot { - optional ImageMessage productImage = 1; - optional string productId = 2; - optional string title = 3; - optional string description = 4; - optional string currencyCode = 5; - optional int64 priceAmount1000 = 6; - optional string retailerId = 7; - optional string url = 8; - optional uint32 productImageCount = 9; - optional string firstImageId = 11; -} - -message ProductMessage { - optional ProductSnapshot product = 1; - optional string businessOwnerJid = 2; - optional CatalogSnapshot catalog = 4; - optional ContextInfo contextInfo = 17; -} - -message OrderMessage { - optional string orderId = 1; - optional bytes thumbnail = 2; - optional int32 itemCount = 3; - enum OrderMessageOrderStatus { - INQUIRY = 1; - } - optional OrderMessageOrderStatus status = 4; - enum OrderMessageOrderSurface { - CATALOG = 1; - } - optional OrderMessageOrderSurface surface = 5; - optional string message = 6; - optional string orderTitle = 7; - optional string sellerJid = 8; - optional string token = 9; - optional int64 totalAmount1000 = 10; - optional string totalCurrencyCode = 11; - optional ContextInfo contextInfo = 17; -} - -message Row { - optional string title = 1; - optional string description = 2; - optional string rowId = 3; -} - -message Section { - optional string title = 1; - repeated Row rows = 2; -} - -message ListMessage { - optional string title = 1; - optional string description = 2; - optional string buttonText = 3; - enum ListMessageListType { - UNKNOWN = 0; - SINGLE_SELECT = 1; - } - optional ListMessageListType listType = 4; - repeated Section sections = 5; -} - -message SingleSelectReply { - optional string selectedRowId = 1; -} - -message ListResponseMessage { - optional string title = 1; - enum ListResponseMessageListType { - UNKNOWN = 0; - SINGLE_SELECT = 1; - } - optional ListResponseMessageListType listType = 2; - optional SingleSelectReply singleSelectReply = 3; - optional ContextInfo contextInfo = 4; - optional string description = 5; -} - -message GroupInviteMessage { - optional string groupJid = 1; - optional string inviteCode = 2; - optional int64 inviteExpiration = 3; - optional string groupName = 4; - optional bytes jpegThumbnail = 5; - optional string caption = 6; - optional ContextInfo contextInfo = 7; -} - -message EphemeralSetting { - optional string chatJid = 1; - optional uint32 ephemeralExpiration = 2; - optional int64 ephemeralSettingTimestamp = 3; -} - -message DeviceSentMessage { - optional string destinationJid = 1; - optional Message message = 2; - optional string phash = 3; - repeated EphemeralSetting broadcastEphemeralSettings = 4; -} - -message FutureProofMessage { - optional Message message = 1; -} - -message ButtonText { - optional string displayText = 1; -} - -message Button { - optional string buttonId = 1; - optional ButtonText buttonText = 2; - enum ButtonType { - UNKNOWN = 0; - RESPONSE = 1; - } - optional ButtonType type = 3; -} - -message ButtonsMessage { - optional string contentText = 6; - optional string footerText = 7; - optional ContextInfo contextInfo = 8; - repeated Button buttons = 9; - enum ButtonsMessageHeaderType { - UNKNOWN = 0; - EMPTY = 1; - TEXT = 2; - DOCUMENT = 3; - IMAGE = 4; - VIDEO = 5; - LOCATION = 6; - } - optional ButtonsMessageHeaderType headerType = 10; - oneof header { - string text = 1; - DocumentMessage documentMessage = 2; - ImageMessage imageMessage = 3; - VideoMessage videoMessage = 4; - LocationMessage locationMessage = 5; - } -} - -message ButtonsResponseMessage { - optional string selectedButtonId = 1; - optional ContextInfo contextInfo = 3; - enum ButtonsResponseMessageType { - UNKNOWN = 0; - DISPLAY_TEXT = 1; - } - optional ButtonsResponseMessageType type = 4; - oneof response { - string selectedDisplayText = 2; - } -} - -message Message { - optional string conversation = 1; - optional SenderKeyDistributionMessage senderKeyDistributionMessage = 2; - optional ImageMessage imageMessage = 3; - optional ContactMessage contactMessage = 4; - optional LocationMessage locationMessage = 5; - optional ExtendedTextMessage extendedTextMessage = 6; - optional DocumentMessage documentMessage = 7; - optional AudioMessage audioMessage = 8; - optional VideoMessage videoMessage = 9; - optional Call call = 10; - optional Chat chat = 11; - optional ProtocolMessage protocolMessage = 12; - optional ContactsArrayMessage contactsArrayMessage = 13; - optional HighlyStructuredMessage highlyStructuredMessage = 14; - optional SenderKeyDistributionMessage fastRatchetKeySenderKeyDistributionMessage = 15; - optional SendPaymentMessage sendPaymentMessage = 16; - optional LiveLocationMessage liveLocationMessage = 18; - optional RequestPaymentMessage requestPaymentMessage = 22; - optional DeclinePaymentRequestMessage declinePaymentRequestMessage = 23; - optional CancelPaymentRequestMessage cancelPaymentRequestMessage = 24; - optional TemplateMessage templateMessage = 25; - optional StickerMessage stickerMessage = 26; - optional GroupInviteMessage groupInviteMessage = 28; - optional TemplateButtonReplyMessage templateButtonReplyMessage = 29; - optional ProductMessage productMessage = 30; - optional DeviceSentMessage deviceSentMessage = 31; - optional MessageContextInfo messageContextInfo = 35; - optional ListMessage listMessage = 36; - optional FutureProofMessage viewOnceMessage = 37; - optional OrderMessage orderMessage = 38; - optional ListResponseMessage listResponseMessage = 39; - optional FutureProofMessage ephemeralMessage = 40; - optional InvoiceMessage invoiceMessage = 41; - optional ButtonsMessage buttonsMessage = 42; - optional ButtonsResponseMessage buttonsResponseMessage = 43; -} - -message MessageKey { - optional string remoteJid = 1; - optional bool fromMe = 2; - optional string id = 3; - optional string participant = 4; -} - -message WebFeatures { - enum WebFeaturesFlag { - NOT_STARTED = 0; - FORCE_UPGRADE = 1; - DEVELOPMENT = 2; - PRODUCTION = 3; - } - optional WebFeaturesFlag labelsDisplay = 1; - optional WebFeaturesFlag voipIndividualOutgoing = 2; - optional WebFeaturesFlag groupsV3 = 3; - optional WebFeaturesFlag groupsV3Create = 4; - optional WebFeaturesFlag changeNumberV2 = 5; - optional WebFeaturesFlag queryStatusV3Thumbnail = 6; - optional WebFeaturesFlag liveLocations = 7; - optional WebFeaturesFlag queryVname = 8; - optional WebFeaturesFlag voipIndividualIncoming = 9; - optional WebFeaturesFlag quickRepliesQuery = 10; - optional WebFeaturesFlag payments = 11; - optional WebFeaturesFlag stickerPackQuery = 12; - optional WebFeaturesFlag liveLocationsFinal = 13; - optional WebFeaturesFlag labelsEdit = 14; - optional WebFeaturesFlag mediaUpload = 15; - optional WebFeaturesFlag mediaUploadRichQuickReplies = 18; - optional WebFeaturesFlag vnameV2 = 19; - optional WebFeaturesFlag videoPlaybackUrl = 20; - optional WebFeaturesFlag statusRanking = 21; - optional WebFeaturesFlag voipIndividualVideo = 22; - optional WebFeaturesFlag thirdPartyStickers = 23; - optional WebFeaturesFlag frequentlyForwardedSetting = 24; - optional WebFeaturesFlag groupsV4JoinPermission = 25; - optional WebFeaturesFlag recentStickers = 26; - optional WebFeaturesFlag catalog = 27; - optional WebFeaturesFlag starredStickers = 28; - optional WebFeaturesFlag voipGroupCall = 29; - optional WebFeaturesFlag templateMessage = 30; - optional WebFeaturesFlag templateMessageInteractivity = 31; - optional WebFeaturesFlag ephemeralMessages = 32; - optional WebFeaturesFlag e2ENotificationSync = 33; - optional WebFeaturesFlag recentStickersV2 = 34; - optional WebFeaturesFlag syncdRelease1 = 35; - optional WebFeaturesFlag recentStickersV3 = 36; - optional WebFeaturesFlag userNotice = 37; - optional WebFeaturesFlag syncdRelease11 = 38; - optional WebFeaturesFlag support = 39; - optional WebFeaturesFlag groupUiiCleanup = 40; - optional WebFeaturesFlag groupDogfoodingInternalOnly = 41; - optional WebFeaturesFlag settingsSync = 42; -} - -message NotificationMessageInfo { - optional MessageKey key = 1; - optional Message message = 2; - optional uint64 messageTimestamp = 3; - optional string participant = 4; -} - -message WebNotificationsInfo { - optional uint64 timestamp = 2; - optional uint32 unreadChats = 3; - optional uint32 notifyMessageCount = 4; - repeated WebMessageInfo notifyMessages = 5; -} - -message PaymentInfo { - enum PaymentInfoCurrency { - UNKNOWN_CURRENCY = 0; - INR = 1; - } - optional PaymentInfoCurrency currencyDeprecated = 1; - optional uint64 amount1000 = 2; - optional string receiverJid = 3; - enum PaymentInfoStatus { - UNKNOWN_STATUS = 0; - PROCESSING = 1; - SENT = 2; - NEED_TO_ACCEPT = 3; - COMPLETE = 4; - COULD_NOT_COMPLETE = 5; - REFUNDED = 6; - EXPIRED = 7; - REJECTED = 8; - CANCELLED = 9; - WAITING_FOR_PAYER = 10; - WAITING = 11; - } - optional PaymentInfoStatus status = 4; - optional uint64 transactionTimestamp = 5; - optional MessageKey requestMessageKey = 6; - optional uint64 expiryTimestamp = 7; - optional bool futureproofed = 8; - optional string currency = 9; - enum PaymentInfoTxnStatus { - UNKNOWN = 0; - PENDING_SETUP = 1; - PENDING_RECEIVER_SETUP = 2; - INIT = 3; - SUCCESS = 4; - COMPLETED = 5; - FAILED = 6; - FAILED_RISK = 7; - FAILED_PROCESSING = 8; - FAILED_RECEIVER_PROCESSING = 9; - FAILED_DA = 10; - FAILED_DA_FINAL = 11; - REFUNDED_TXN = 12; - REFUND_FAILED = 13; - REFUND_FAILED_PROCESSING = 14; - REFUND_FAILED_DA = 15; - EXPIRED_TXN = 16; - AUTH_CANCELED = 17; - AUTH_CANCEL_FAILED_PROCESSING = 18; - AUTH_CANCEL_FAILED = 19; - COLLECT_INIT = 20; - COLLECT_SUCCESS = 21; - COLLECT_FAILED = 22; - COLLECT_FAILED_RISK = 23; - COLLECT_REJECTED = 24; - COLLECT_EXPIRED = 25; - COLLECT_CANCELED = 26; - COLLECT_CANCELLING = 27; - } - optional PaymentInfoTxnStatus txnStatus = 10; - optional bool useNoviFiatFormat = 11; - optional PaymentMoney primaryAmount = 12; - optional PaymentMoney exchangeAmount = 13; -} - -message WebMessageInfo { - required MessageKey key = 1; - optional Message message = 2; - optional uint64 messageTimestamp = 3; - enum WebMessageInfoStatus { - ERROR = 0; - PENDING = 1; - SERVER_ACK = 2; - DELIVERY_ACK = 3; - READ = 4; - PLAYED = 5; - } - optional WebMessageInfoStatus status = 4; - optional string participant = 5; - optional bool ignore = 16; - optional bool starred = 17; - optional bool broadcast = 18; - optional string pushName = 19; - optional bytes mediaCiphertextSha256 = 20; - optional bool multicast = 21; - optional bool urlText = 22; - optional bool urlNumber = 23; - enum WebMessageInfoStubType { - UNKNOWN = 0; - REVOKE = 1; - CIPHERTEXT = 2; - FUTUREPROOF = 3; - NON_VERIFIED_TRANSITION = 4; - UNVERIFIED_TRANSITION = 5; - VERIFIED_TRANSITION = 6; - VERIFIED_LOW_UNKNOWN = 7; - VERIFIED_HIGH = 8; - VERIFIED_INITIAL_UNKNOWN = 9; - VERIFIED_INITIAL_LOW = 10; - VERIFIED_INITIAL_HIGH = 11; - VERIFIED_TRANSITION_ANY_TO_NONE = 12; - VERIFIED_TRANSITION_ANY_TO_HIGH = 13; - VERIFIED_TRANSITION_HIGH_TO_LOW = 14; - VERIFIED_TRANSITION_HIGH_TO_UNKNOWN = 15; - VERIFIED_TRANSITION_UNKNOWN_TO_LOW = 16; - VERIFIED_TRANSITION_LOW_TO_UNKNOWN = 17; - VERIFIED_TRANSITION_NONE_TO_LOW = 18; - VERIFIED_TRANSITION_NONE_TO_UNKNOWN = 19; - GROUP_CREATE = 20; - GROUP_CHANGE_SUBJECT = 21; - GROUP_CHANGE_ICON = 22; - GROUP_CHANGE_INVITE_LINK = 23; - GROUP_CHANGE_DESCRIPTION = 24; - GROUP_CHANGE_RESTRICT = 25; - GROUP_CHANGE_ANNOUNCE = 26; - GROUP_PARTICIPANT_ADD = 27; - GROUP_PARTICIPANT_REMOVE = 28; - GROUP_PARTICIPANT_PROMOTE = 29; - GROUP_PARTICIPANT_DEMOTE = 30; - GROUP_PARTICIPANT_INVITE = 31; - GROUP_PARTICIPANT_LEAVE = 32; - GROUP_PARTICIPANT_CHANGE_NUMBER = 33; - BROADCAST_CREATE = 34; - BROADCAST_ADD = 35; - BROADCAST_REMOVE = 36; - GENERIC_NOTIFICATION = 37; - E2E_IDENTITY_CHANGED = 38; - E2E_ENCRYPTED = 39; - CALL_MISSED_VOICE = 40; - CALL_MISSED_VIDEO = 41; - INDIVIDUAL_CHANGE_NUMBER = 42; - GROUP_DELETE = 43; - GROUP_ANNOUNCE_MODE_MESSAGE_BOUNCE = 44; - CALL_MISSED_GROUP_VOICE = 45; - CALL_MISSED_GROUP_VIDEO = 46; - PAYMENT_CIPHERTEXT = 47; - PAYMENT_FUTUREPROOF = 48; - PAYMENT_TRANSACTION_STATUS_UPDATE_FAILED = 49; - PAYMENT_TRANSACTION_STATUS_UPDATE_REFUNDED = 50; - PAYMENT_TRANSACTION_STATUS_UPDATE_REFUND_FAILED = 51; - PAYMENT_TRANSACTION_STATUS_RECEIVER_PENDING_SETUP = 52; - PAYMENT_TRANSACTION_STATUS_RECEIVER_SUCCESS_AFTER_HICCUP = 53; - PAYMENT_ACTION_ACCOUNT_SETUP_REMINDER = 54; - PAYMENT_ACTION_SEND_PAYMENT_REMINDER = 55; - PAYMENT_ACTION_SEND_PAYMENT_INVITATION = 56; - PAYMENT_ACTION_REQUEST_DECLINED = 57; - PAYMENT_ACTION_REQUEST_EXPIRED = 58; - PAYMENT_ACTION_REQUEST_CANCELLED = 59; - BIZ_VERIFIED_TRANSITION_TOP_TO_BOTTOM = 60; - BIZ_VERIFIED_TRANSITION_BOTTOM_TO_TOP = 61; - BIZ_INTRO_TOP = 62; - BIZ_INTRO_BOTTOM = 63; - BIZ_NAME_CHANGE = 64; - BIZ_MOVE_TO_CONSUMER_APP = 65; - BIZ_TWO_TIER_MIGRATION_TOP = 66; - BIZ_TWO_TIER_MIGRATION_BOTTOM = 67; - OVERSIZED = 68; - GROUP_CHANGE_NO_FREQUENTLY_FORWARDED = 69; - GROUP_V4_ADD_INVITE_SENT = 70; - GROUP_PARTICIPANT_ADD_REQUEST_JOIN = 71; - CHANGE_EPHEMERAL_SETTING = 72; - E2E_DEVICE_CHANGED = 73; - VIEWED_ONCE = 74; - E2E_ENCRYPTED_NOW = 75; - BLUE_MSG_BSP_FB_TO_BSP_PREMISE = 76; - BLUE_MSG_BSP_FB_TO_SELF_FB = 77; - BLUE_MSG_BSP_FB_TO_SELF_PREMISE = 78; - BLUE_MSG_BSP_FB_UNVERIFIED = 79; - BLUE_MSG_BSP_FB_UNVERIFIED_TO_SELF_PREMISE_VERIFIED = 80; - BLUE_MSG_BSP_FB_VERIFIED = 81; - BLUE_MSG_BSP_FB_VERIFIED_TO_SELF_PREMISE_UNVERIFIED = 82; - BLUE_MSG_BSP_PREMISE_TO_SELF_PREMISE = 83; - BLUE_MSG_BSP_PREMISE_UNVERIFIED = 84; - BLUE_MSG_BSP_PREMISE_UNVERIFIED_TO_SELF_PREMISE_VERIFIED = 85; - BLUE_MSG_BSP_PREMISE_VERIFIED = 86; - BLUE_MSG_BSP_PREMISE_VERIFIED_TO_SELF_PREMISE_UNVERIFIED = 87; - BLUE_MSG_CONSUMER_TO_BSP_FB_UNVERIFIED = 88; - BLUE_MSG_CONSUMER_TO_BSP_PREMISE_UNVERIFIED = 89; - BLUE_MSG_CONSUMER_TO_SELF_FB_UNVERIFIED = 90; - BLUE_MSG_CONSUMER_TO_SELF_PREMISE_UNVERIFIED = 91; - BLUE_MSG_SELF_FB_TO_BSP_PREMISE = 92; - BLUE_MSG_SELF_FB_TO_SELF_PREMISE = 93; - BLUE_MSG_SELF_FB_UNVERIFIED = 94; - BLUE_MSG_SELF_FB_UNVERIFIED_TO_SELF_PREMISE_VERIFIED = 95; - BLUE_MSG_SELF_FB_VERIFIED = 96; - BLUE_MSG_SELF_FB_VERIFIED_TO_SELF_PREMISE_UNVERIFIED = 97; - BLUE_MSG_SELF_PREMISE_TO_BSP_PREMISE = 98; - BLUE_MSG_SELF_PREMISE_UNVERIFIED = 99; - BLUE_MSG_SELF_PREMISE_VERIFIED = 100; - BLUE_MSG_TO_BSP_FB = 101; - BLUE_MSG_TO_CONSUMER = 102; - BLUE_MSG_TO_SELF_FB = 103; - BLUE_MSG_UNVERIFIED_TO_BSP_FB_VERIFIED = 104; - BLUE_MSG_UNVERIFIED_TO_BSP_PREMISE_VERIFIED = 105; - BLUE_MSG_UNVERIFIED_TO_SELF_FB_VERIFIED = 106; - BLUE_MSG_UNVERIFIED_TO_VERIFIED = 107; - BLUE_MSG_VERIFIED_TO_BSP_FB_UNVERIFIED = 108; - BLUE_MSG_VERIFIED_TO_BSP_PREMISE_UNVERIFIED = 109; - BLUE_MSG_VERIFIED_TO_SELF_FB_UNVERIFIED = 110; - BLUE_MSG_VERIFIED_TO_UNVERIFIED = 111; - BLUE_MSG_BSP_FB_UNVERIFIED_TO_BSP_PREMISE_VERIFIED = 112; - BLUE_MSG_BSP_FB_UNVERIFIED_TO_SELF_FB_VERIFIED = 113; - BLUE_MSG_BSP_FB_VERIFIED_TO_BSP_PREMISE_UNVERIFIED = 114; - BLUE_MSG_BSP_FB_VERIFIED_TO_SELF_FB_UNVERIFIED = 115; - BLUE_MSG_SELF_FB_UNVERIFIED_TO_BSP_PREMISE_VERIFIED = 116; - BLUE_MSG_SELF_FB_VERIFIED_TO_BSP_PREMISE_UNVERIFIED = 117; - E2E_IDENTITY_UNAVAILABLE = 118; - } - optional WebMessageInfoStubType messageStubType = 24; - optional bool clearMedia = 25; - repeated string messageStubParameters = 26; - optional uint32 duration = 27; - repeated string labels = 28; - optional PaymentInfo paymentInfo = 29; - optional LiveLocationMessage finalLiveLocation = 30; - optional PaymentInfo quotedPaymentInfo = 31; - optional uint64 ephemeralStartTimestamp = 32; - optional uint32 ephemeralDuration = 33; - optional bool ephemeralOffToOn = 34; - optional bool ephemeralOutOfSync = 35; - enum WebMessageInfoBizPrivacyStatus { - E2EE = 0; - FB = 2; - BSP = 1; - BSP_AND_FB = 3; - } - optional WebMessageInfoBizPrivacyStatus bizPrivacyStatus = 36; - optional string verifiedBizName = 37; -}
\ No newline at end of file diff --git a/vendor/github.com/Rhymen/go-whatsapp/binary/token/token.go b/vendor/github.com/Rhymen/go-whatsapp/binary/token/token.go deleted file mode 100644 index 8fd28f31..00000000 --- a/vendor/github.com/Rhymen/go-whatsapp/binary/token/token.go +++ /dev/null @@ -1,81 +0,0 @@ -package token - -import "fmt" - -var SingleByteTokens = [...]string{"", "", "", "200", "400", "404", "500", "501", "502", "action", "add", - "after", "archive", "author", "available", "battery", "before", "body", - "broadcast", "chat", "clear", "code", "composing", "contacts", "count", - "create", "debug", "delete", "demote", "duplicate", "encoding", "error", - "false", "filehash", "from", "g.us", "group", "groups_v2", "height", "id", - "image", "in", "index", "invis", "item", "jid", "kind", "last", "leave", - "live", "log", "media", "message", "mimetype", "missing", "modify", "name", - "notification", "notify", "out", "owner", "participant", "paused", - "picture", "played", "presence", "preview", "promote", "query", "raw", - "read", "receipt", "received", "recipient", "recording", "relay", - "remove", "response", "resume", "retry", "s.whatsapp.net", "seconds", - "set", "size", "status", "subject", "subscribe", "t", "text", "to", "true", - "type", "unarchive", "unavailable", "url", "user", "value", "web", "width", - "mute", "read_only", "admin", "creator", "short", "update", "powersave", - "checksum", "epoch", "block", "previous", "409", "replaced", "reason", - "spam", "modify_tag", "message_info", "delivery", "emoji", "title", - "description", "canonical-url", "matched-text", "star", "unstar", - "media_key", "filename", "identity", "unread", "page", "page_count", - "search", "media_message", "security", "call_log", "profile", "ciphertext", - "invite", "gif", "vcard", "frequent", "privacy", "blacklist", "whitelist", - "verify", "location", "document", "elapsed", "revoke_invite", "expiration", - "unsubscribe", "disable", "vname", "old_jid", "new_jid", "announcement", - "locked", "prop", "label", "color", "call", "offer", "call-id", - "quick_reply", "sticker", "pay_t", "accept", "reject", "sticker_pack", - "invalid", "canceled", "missed", "connected", "result", "audio", - "video", "recent"} - -var doubleByteTokens = [...]string{} - -func GetSingleToken(i int) (string, error) { - if i < 3 || i >= len(SingleByteTokens) { - return "", fmt.Errorf("index out of single byte token bounds %d", i) - } - - return SingleByteTokens[i], nil -} - -func GetDoubleToken(index1 int, index2 int) (string, error) { - n := 256*index1 + index2 - if n < 0 || n >= len(doubleByteTokens) { - return "", fmt.Errorf("index out of double byte token bounds %d", n) - } - - return doubleByteTokens[n], nil -} - -func IndexOfSingleToken(token string) int { - for i, t := range SingleByteTokens { - if t == token { - return i - } - } - - return -1 -} - -const ( - LIST_EMPTY = 0 - STREAM_END = 2 - DICTIONARY_0 = 236 - DICTIONARY_1 = 237 - DICTIONARY_2 = 238 - DICTIONARY_3 = 239 - LIST_8 = 248 - LIST_16 = 249 - JID_PAIR = 250 - HEX_8 = 251 - BINARY_8 = 252 - BINARY_20 = 253 - BINARY_32 = 254 - NIBBLE_8 = 255 -) - -const ( - PACKED_MAX = 254 - SINGLE_BYTE_MAX = 256 -) diff --git a/vendor/github.com/Rhymen/go-whatsapp/chat_history.go b/vendor/github.com/Rhymen/go-whatsapp/chat_history.go deleted file mode 100644 index 55c7ae63..00000000 --- a/vendor/github.com/Rhymen/go-whatsapp/chat_history.go +++ /dev/null @@ -1,183 +0,0 @@ -package whatsapp - -import ( - "github.com/Rhymen/go-whatsapp/binary" - "github.com/Rhymen/go-whatsapp/binary/proto" - "log" - "strconv" - "time" -) - -type MessageOffsetInfo struct { - FirstMessageId string - FirstMessageOwner bool -} - -func decodeMessages(n *binary.Node) []*proto.WebMessageInfo { - - var messages = make([]*proto.WebMessageInfo, 0) - - if n == nil || n.Attributes == nil || n.Content == nil { - return messages - } - - for _, msg := range n.Content.([]interface{}) { - switch msg.(type) { - case *proto.WebMessageInfo: - messages = append(messages, msg.(*proto.WebMessageInfo)) - default: - log.Println("decodeMessages: Non WebMessage encountered") - } - } - - return messages -} - -// LoadChatMessages is useful to "scroll" messages, loading by count at a time -// if handlers == nil the func will use default handlers -// if after == true LoadChatMessages will load messages after the specified messageId, otherwise it will return -// message before the messageId -func (wac *Conn) LoadChatMessages(jid string, count int, messageId string, owner bool, after bool, handlers ...Handler) error { - if count <= 0 { - return nil - } - - if handlers == nil { - handlers = wac.handler - } - - kind := "before" - if after { - kind = "after" - } - - node, err := wac.query("message", jid, messageId, kind, - strconv.FormatBool(owner), "", count, 0) - - if err != nil { - wac.handleWithCustomHandlers(err, handlers) - return err - } - - for _, msg := range decodeMessages(node) { - wac.handleWithCustomHandlers(ParseProtoMessage(msg), handlers) - wac.handleWithCustomHandlers(msg, handlers) - } - return nil - -} - -// LoadFullChatHistory loads full chat history for the given jid -// chunkSize = how many messages to load with one query; if handlers == nil the func will use default handlers; -// pauseBetweenQueries = how much time to sleep between queries -func (wac *Conn) LoadFullChatHistory(jid string, chunkSize int, - pauseBetweenQueries time.Duration, handlers ...Handler) { - if chunkSize <= 0 { - return - } - - if handlers == nil { - handlers = wac.handler - } - - beforeMsg := "" - beforeMsgIsOwner := true - - for { - node, err := wac.query("message", jid, beforeMsg, "before", - strconv.FormatBool(beforeMsgIsOwner), "", chunkSize, 0) - - if err != nil { - wac.handleWithCustomHandlers(err, handlers) - } else { - - msgs := decodeMessages(node) - for _, msg := range msgs { - wac.handleWithCustomHandlers(ParseProtoMessage(msg), handlers) - wac.handleWithCustomHandlers(msg, handlers) - } - - if len(msgs) == 0 { - break - } - - beforeMsg = *msgs[0].Key.Id - beforeMsgIsOwner = msgs[0].Key.FromMe != nil && *msgs[0].Key.FromMe - } - - <-time.After(pauseBetweenQueries) - - } - -} - -// LoadFullChatHistoryAfter loads all messages after the specified messageId -// useful to "catch up" with the message history after some specified message -func (wac *Conn) LoadFullChatHistoryAfter(jid string, messageId string, chunkSize int, - pauseBetweenQueries time.Duration, handlers ...Handler) { - - if chunkSize <= 0 { - return - } - - if handlers == nil { - handlers = wac.handler - } - - msgOwner := true - prevNotFound := false - - for { - node, err := wac.query("message", jid, messageId, "after", - strconv.FormatBool(msgOwner), "", chunkSize, 0) - - if err != nil { - - // Whatsapp will return 404 status when there is wrong owner flag on the requested message id - if err == ErrServerRespondedWith404 { - - // this will detect two consecutive "not found" errors. - // this is done to prevent infinite loop when wrong message id supplied - if prevNotFound { - log.Println("LoadFullChatHistoryAfter: could not retrieve any messages, wrong message id?") - return - } - prevNotFound = true - - // try to reverse the owner flag and retry - if msgOwner { - // reverse initial msgOwner value and retry - msgOwner = false - - <-time.After(time.Second) - continue - } - - } - - // if the error isn't a 404 error, pass it to the error handler - wac.handleWithCustomHandlers(err, handlers) - } else { - - msgs := decodeMessages(node) - for _, msg := range msgs { - wac.handleWithCustomHandlers(ParseProtoMessage(msg), handlers) - wac.handleWithCustomHandlers(msg, handlers) - } - - if len(msgs) != chunkSize { - break - } - - messageId = *msgs[0].Key.Id - msgOwner = msgs[0].Key.FromMe != nil && *msgs[0].Key.FromMe - } - - // message was found - prevNotFound = false - - <-time.After(pauseBetweenQueries) - - } - -} diff --git a/vendor/github.com/Rhymen/go-whatsapp/conn.go b/vendor/github.com/Rhymen/go-whatsapp/conn.go deleted file mode 100644 index 4b28cbe1..00000000 --- a/vendor/github.com/Rhymen/go-whatsapp/conn.go +++ /dev/null @@ -1,302 +0,0 @@ -//Package whatsapp provides a developer API to interact with the WhatsAppWeb-Servers. -package whatsapp - -import ( - "math/rand" - "net/http" - "net/url" - "sync" - "time" - - "github.com/gorilla/websocket" - "github.com/pkg/errors" -) - -type metric byte - -const ( - debugLog metric = iota + 1 - queryResume - queryReceipt - queryMedia - queryChat - queryContacts - queryMessages - presence - presenceSubscribe - group - read - chat - received - pic - status - message - queryActions - block - queryGroup - queryPreview - queryEmoji - queryMessageInfo - spam - querySearch - queryIdentity - queryUrl - profile - contact - queryVcard - queryStatus - queryStatusUpdate - privacyStatus - queryLiveLocations - liveLocation - queryVname - queryLabels - call - queryCall - queryQuickReplies -) - -type flag byte - -const ( - ignore flag = 1 << (7 - iota) - ackRequest - available - notAvailable - expires - skipOffline -) - -/* -Conn is created by NewConn. Interacting with the initialized Conn is the main way of interacting with our package. -It holds all necessary information to make the package work internally. -*/ -type Conn struct { - ws *websocketWrapper - listener *listenerWrapper - - connected bool - loggedIn bool - wg *sync.WaitGroup - - session *Session - sessionLock uint32 - handler []Handler - msgCount int - msgTimeout time.Duration - Info *Info - Store *Store - ServerLastSeen time.Time - - timeTag string // last 3 digits obtained after a successful login takeover - - longClientName string - shortClientName string - clientVersion string - - loginSessionLock sync.RWMutex - Proxy func(*http.Request) (*url.URL, error) - - writerLock sync.RWMutex -} - -type websocketWrapper struct { - sync.Mutex - conn *websocket.Conn - close chan struct{} -} - -type listenerWrapper struct { - sync.RWMutex - m map[string]chan string -} - -/* -Creates a new connection with a given timeout. The websocket connection to the WhatsAppWeb servers get´s established. -The goroutine for handling incoming messages is started -*/ -func NewConn(timeout time.Duration) (*Conn, error) { - return NewConnWithOptions(&Options{ - Timeout: timeout, - }) -} - -// NewConnWithProxy Create a new connect with a given timeout and a http proxy. -func NewConnWithProxy(timeout time.Duration, proxy func(*http.Request) (*url.URL, error)) (*Conn, error) { - return NewConnWithOptions(&Options{ - Timeout: timeout, - Proxy: proxy, - }) -} - -// NewConnWithOptions Create a new connect with a given options. -type Options struct { - Proxy func(*http.Request) (*url.URL, error) - Timeout time.Duration - Handler []Handler - ShortClientName string - LongClientName string - ClientVersion string - Store *Store -} -func NewConnWithOptions(opt *Options) (*Conn, error) { - if opt == nil { - return nil, ErrOptionsNotProvided - } - wac := &Conn{ - handler: make([]Handler, 0), - msgCount: 0, - msgTimeout: opt.Timeout, - Store: newStore(), - longClientName: "github.com/Rhymen/go-whatsapp", - shortClientName: "go-whatsapp", - clientVersion: "0.1.0", - } - if opt.Handler != nil { - wac.handler = opt.Handler - } - if opt.Store != nil { - wac.Store = opt.Store - } - if opt.Proxy != nil { - wac.Proxy = opt.Proxy - } - if len(opt.ShortClientName) != 0 { - wac.shortClientName = opt.ShortClientName - } - if len(opt.LongClientName) != 0 { - wac.longClientName = opt.LongClientName - } - if len(opt.ClientVersion) != 0 { - wac.clientVersion = opt.ClientVersion - } - return wac, wac.connect() -} - -// connect should be guarded with wsWriteMutex -func (wac *Conn) connect() (err error) { - if wac.connected { - return ErrAlreadyConnected - } - wac.connected = true - defer func() { // set connected to false on error - if err != nil { - wac.connected = false - } - }() - - dialer := &websocket.Dialer{ - ReadBufferSize: 0, - WriteBufferSize: 0, - HandshakeTimeout: wac.msgTimeout, - Proxy: wac.Proxy, - } - - headers := http.Header{"Origin": []string{"https://web.whatsapp.com"}} - wsConn, _, err := dialer.Dial("wss://web.whatsapp.com/ws", headers) - if err != nil { - return errors.Wrap(err, "couldn't dial whatsapp web websocket") - } - - wsConn.SetCloseHandler(func(code int, text string) error { - // from default CloseHandler - message := websocket.FormatCloseMessage(code, "") - err := wsConn.WriteControl(websocket.CloseMessage, message, time.Now().Add(time.Second)) - - // our close handling - _, _ = wac.Disconnect() - wac.handle(&ErrConnectionClosed{Code: code, Text: text}) - return err - }) - - wac.ws = &websocketWrapper{ - conn: wsConn, - close: make(chan struct{}), - } - - wac.listener = &listenerWrapper{ - m: make(map[string]chan string), - } - - wac.wg = &sync.WaitGroup{} - wac.wg.Add(2) - go wac.readPump() - go wac.keepAlive(20000, 60000) - - wac.loggedIn = false - return nil -} - -func (wac *Conn) Disconnect() (Session, error) { - if !wac.connected { - return Session{}, ErrNotConnected - } - wac.connected = false - wac.loggedIn = false - - close(wac.ws.close) //signal close - wac.wg.Wait() //wait for close - - err := wac.ws.conn.Close() - wac.ws = nil - - if wac.session == nil { - return Session{}, err - } - return *wac.session, err -} - -func (wac *Conn) AdminTest() (bool, error) { - if !wac.connected { - return false, ErrNotConnected - } - - if !wac.loggedIn { - return false, ErrInvalidSession - } - - result, err := wac.sendAdminTest() - return result, err -} - -func (wac *Conn) keepAlive(minIntervalMs int, maxIntervalMs int) { - defer wac.wg.Done() - - for { - err := wac.sendKeepAlive() - if err != nil { - wac.handle(errors.Wrap(err, "keepAlive failed")) - //TODO: Consequences? - } - interval := rand.Intn(maxIntervalMs-minIntervalMs) + minIntervalMs - select { - case <-time.After(time.Duration(interval) * time.Millisecond): - case <-wac.ws.close: - return - } - } -} - -// IsConnected returns whether the server connection is established or not -func (wac *Conn) IsConnected() bool { - return wac.connected -} - -// GetConnected returns whether the server connection is established or not -// -// Deprecated: function name is not go idiomatic, use IsConnected instead -func (wac *Conn) GetConnected() bool { - return wac.connected -} - -//IsLoggedIn returns whether the you are logged in or not -func (wac *Conn) IsLoggedIn() bool { - return wac.loggedIn -} - -// GetLoggedIn returns whether the you are logged in or not -// -// Deprecated: function name is not go idiomatic, use IsLoggedIn instead. -func (wac *Conn) GetLoggedIn() bool { - return wac.loggedIn -} diff --git a/vendor/github.com/Rhymen/go-whatsapp/contact.go b/vendor/github.com/Rhymen/go-whatsapp/contact.go deleted file mode 100644 index 67140723..00000000 --- a/vendor/github.com/Rhymen/go-whatsapp/contact.go +++ /dev/null @@ -1,322 +0,0 @@ -package whatsapp - -import ( - "fmt" - "strconv" - "strings" - "time" - - "github.com/Rhymen/go-whatsapp/binary" -) - -type Presence string - -const ( - PresenceAvailable Presence = "available" - PresenceUnavailable Presence = "unavailable" - PresenceComposing Presence = "composing" - PresenceRecording Presence = "recording" - PresencePaused Presence = "paused" -) - -//TODO: filename? WhatsApp uses Store.Contacts for these functions -// functions probably shouldn't return a string, maybe build a struct / return json -// check for further queries -func (wac *Conn) GetProfilePicThumb(jid string) (<-chan string, error) { - data := []interface{}{"query", "ProfilePicThumb", jid} - return wac.writeJson(data) -} - -func (wac *Conn) GetStatus(jid string) (<-chan string, error) { - data := []interface{}{"query", "Status", jid} - return wac.writeJson(data) -} - -func (wac *Conn) SubscribePresence(jid string) (<-chan string, error) { - data := []interface{}{"action", "presence", "subscribe", jid} - return wac.writeJson(data) -} - -func (wac *Conn) Search(search string, count, page int) (*binary.Node, error) { - return wac.query("search", "", "", "", "", search, count, page) -} - -func (wac *Conn) LoadMessages(jid, messageId string, count int) (*binary.Node, error) { - return wac.query("message", jid, "", "before", "true", "", count, 0) -} - -func (wac *Conn) LoadMessagesBefore(jid, messageId string, count int) (*binary.Node, error) { - return wac.query("message", jid, messageId, "before", "true", "", count, 0) -} - -func (wac *Conn) LoadMessagesAfter(jid, messageId string, count int) (*binary.Node, error) { - return wac.query("message", jid, messageId, "after", "true", "", count, 0) -} - -func (wac *Conn) LoadMediaInfo(jid, messageId, owner string) (*binary.Node, error) { - return wac.query("media", jid, messageId, "", owner, "", 0, 0) -} - -func (wac *Conn) Presence(jid string, presence Presence) (<-chan string, error) { - ts := time.Now().Unix() - tag := fmt.Sprintf("%d.--%d", ts, wac.msgCount) - - content := binary.Node{ - Description: "presence", - Attributes: map[string]string{ - "type": string(presence), - }, - } - switch presence { - case PresenceComposing: - fallthrough - case PresenceRecording: - fallthrough - case PresencePaused: - content.Attributes["to"] = jid - } - - n := binary.Node{ - Description: "action", - Attributes: map[string]string{ - "type": "set", - "epoch": strconv.Itoa(wac.msgCount), - }, - Content: []interface{}{content}, - } - - return wac.writeBinary(n, group, ignore, tag) -} - -func (wac *Conn) Exist(jid string) (<-chan string, error) { - data := []interface{}{"query", "exist", jid} - return wac.writeJson(data) -} - -func (wac *Conn) Emoji() (*binary.Node, error) { - return wac.query("emoji", "", "", "", "", "", 0, 0) -} - -func (wac *Conn) Contacts() (*binary.Node, error) { - return wac.query("contacts", "", "", "", "", "", 0, 0) -} - -func (wac *Conn) Chats() (*binary.Node, error) { - return wac.query("chat", "", "", "", "", "", 0, 0) -} - -func (wac *Conn) Read(jid, id string) (<-chan string, error) { - ts := time.Now().Unix() - tag := fmt.Sprintf("%d.--%d", ts, wac.msgCount) - - n := binary.Node{ - Description: "action", - Attributes: map[string]string{ - "type": "set", - "epoch": strconv.Itoa(wac.msgCount), - }, - Content: []interface{}{binary.Node{ - Description: "read", - Attributes: map[string]string{ - "count": "1", - "index": id, - "jid": jid, - "owner": "false", - }, - }}, - } - - return wac.writeBinary(n, group, ignore, tag) -} - -func (wac *Conn) query(t, jid, messageId, kind, owner, search string, count, page int) (*binary.Node, error) { - ts := time.Now().Unix() - tag := fmt.Sprintf("%d.--%d", ts, wac.msgCount) - - n := binary.Node{ - Description: "query", - Attributes: map[string]string{ - "type": t, - "epoch": strconv.Itoa(wac.msgCount), - }, - } - - if jid != "" { - n.Attributes["jid"] = jid - } - - if messageId != "" { - n.Attributes["index"] = messageId - } - - if kind != "" { - n.Attributes["kind"] = kind - } - - if owner != "" { - n.Attributes["owner"] = owner - } - - if search != "" { - n.Attributes["search"] = search - } - - if count != 0 { - n.Attributes["count"] = strconv.Itoa(count) - } - - if page != 0 { - n.Attributes["page"] = strconv.Itoa(page) - } - - metric := group - if t == "media" { - metric = queryMedia - } - - ch, err := wac.writeBinary(n, metric, ignore, tag) - if err != nil { - return nil, err - } - - msg, err := wac.decryptBinaryMessage([]byte(<-ch)) - if err != nil { - return nil, err - } - - //TODO: use parseProtoMessage - return msg, nil -} - -func (wac *Conn) setGroup(t, jid, subject string, participants []string) (<-chan string, error) { - ts := time.Now().Unix() - tag := fmt.Sprintf("%d.--%d", ts, wac.msgCount) - - //TODO: get proto or improve encoder to handle []interface{} - - p := buildParticipantNodes(participants) - - g := binary.Node{ - Description: "group", - Attributes: map[string]string{ - "author": wac.session.Wid, - "id": tag, - "type": t, - }, - Content: p, - } - - if jid != "" { - g.Attributes["jid"] = jid - } - - if subject != "" { - g.Attributes["subject"] = subject - } - - n := binary.Node{ - Description: "action", - Attributes: map[string]string{ - "type": "set", - "epoch": strconv.Itoa(wac.msgCount), - }, - Content: []interface{}{g}, - } - - return wac.writeBinary(n, group, ignore, tag) -} - -func buildParticipantNodes(participants []string) []binary.Node { - l := len(participants) - if participants == nil || l == 0 { - return nil - } - - p := make([]binary.Node, len(participants)) - for i, participant := range participants { - p[i] = binary.Node{ - Description: "participant", - Attributes: map[string]string{ - "jid": participant, - }, - } - } - return p -} - -func (wac *Conn) BlockContact(jid string) (<-chan string, error) { - return wac.handleBlockContact("add", jid) -} - -func (wac *Conn) UnblockContact(jid string) (<-chan string, error) { - return wac.handleBlockContact("remove", jid) -} - -func (wac *Conn) handleBlockContact(action, jid string) (<-chan string, error) { - ts := time.Now().Unix() - tag := fmt.Sprintf("%d.--%d", ts, wac.msgCount) - - netsplit := strings.Split(jid, "@") - cusjid := netsplit[0] + "@c.us" - - n := binary.Node{ - Description: "action", - Attributes: map[string]string{ - "type": "set", - "epoch": strconv.Itoa(wac.msgCount), - }, - Content: []interface{}{ - binary.Node{ - Description: "block", - Attributes: map[string]string{ - "type": action, - }, - Content: []binary.Node{ - { - Description: "user", - Attributes: map[string]string{ - "jid": cusjid, - }, - Content: nil, - }, - }, - }, - }, - } - - return wac.writeBinary(n, contact, ignore, tag) -} - -// Search product details on order -func (wac *Conn) SearchProductDetails(id, orderId, token string) (<-chan string, error) { - data := []interface{}{"query", "order", map[string]string{ - "id": id, - "orderId": orderId, - "imageHeight": strconv.Itoa(80), - "imageWidth": strconv.Itoa(80), - "token": token, - }} - return wac.writeJson(data) -} - -// Order search and get product catalog reh -func (wac *Conn) SearchOrder(catalogWid, stanzaId string) (<-chan string, error) { - data := []interface{}{"query", "bizCatalog", map[string]string{ - "catalogWid": catalogWid, - "limit": strconv.Itoa(10), - "height": strconv.Itoa(100), - "width": strconv.Itoa(100), - "stanza_id": stanzaId, - "type": "get_product_catalog_reh", - }} - return wac.writeJson(data) -} - -// Company details for Whatsapp Business -func (wac *Conn) BusinessProfile(wid string) (<-chan string, error) { - query := map[string]string{ - "wid": wid, - } - data := []interface{}{"query", "businessProfile", []map[string]string{query}} - return wac.writeJson(data) -} diff --git a/vendor/github.com/Rhymen/go-whatsapp/crypto/cbc/cbc.go b/vendor/github.com/Rhymen/go-whatsapp/crypto/cbc/cbc.go deleted file mode 100644 index cc5427c3..00000000 --- a/vendor/github.com/Rhymen/go-whatsapp/crypto/cbc/cbc.go +++ /dev/null @@ -1,101 +0,0 @@ -/* -CBC describes a block cipher mode. In cryptography, a block cipher mode of operation is an algorithm that uses a -block cipher to provide an information service such as confidentiality or authenticity. A block cipher by itself -is only suitable for the secure cryptographic transformation (encryption or decryption) of one fixed-length group of -bits called a block. A mode of operation describes how to repeatedly apply a cipher's single-block operation to -securely transform amounts of data larger than a block. - -This package simplifies the usage of AES-256-CBC. -*/ -package cbc - -/* -Some code is provided by the GitHub user locked (github.com/locked): -https://gist.github.com/locked/b066aa1ddeb2b28e855e -Thanks! -*/ -import ( - "bytes" - "crypto/aes" - "crypto/cipher" - "crypto/rand" - "fmt" - "io" -) - -/* -Decrypt is a function that decrypts a given cipher text with a provided key and initialization vector(iv). -*/ -func Decrypt(key, iv, ciphertext []byte) ([]byte, error) { - block, err := aes.NewCipher(key) - - if err != nil { - return nil, err - } - - if len(ciphertext) < aes.BlockSize { - return nil, fmt.Errorf("ciphertext is shorter then block size: %d / %d", len(ciphertext), aes.BlockSize) - } - - if iv == nil { - iv = ciphertext[:aes.BlockSize] - ciphertext = ciphertext[aes.BlockSize:] - } - - cbc := cipher.NewCBCDecrypter(block, iv) - cbc.CryptBlocks(ciphertext, ciphertext) - - return unpad(ciphertext) -} - -/* -Encrypt is a function that encrypts plaintext with a given key and an optional initialization vector(iv). -*/ -func Encrypt(key, iv, plaintext []byte) ([]byte, error) { - plaintext = pad(plaintext, aes.BlockSize) - - if len(plaintext)%aes.BlockSize != 0 { - return nil, fmt.Errorf("plaintext is not a multiple of the block size: %d / %d", len(plaintext), aes.BlockSize) - } - - block, err := aes.NewCipher(key) - if err != nil { - return nil, err - } - - var ciphertext []byte - if iv == nil { - ciphertext = make([]byte, aes.BlockSize+len(plaintext)) - iv := ciphertext[:aes.BlockSize] - if _, err := io.ReadFull(rand.Reader, iv); err != nil { - return nil, err - } - - cbc := cipher.NewCBCEncrypter(block, iv) - cbc.CryptBlocks(ciphertext[aes.BlockSize:], plaintext) - } else { - ciphertext = make([]byte, len(plaintext)) - - cbc := cipher.NewCBCEncrypter(block, iv) - cbc.CryptBlocks(ciphertext, plaintext) - } - - return ciphertext, nil -} - -func pad(ciphertext []byte, blockSize int) []byte { - padding := blockSize - len(ciphertext)%blockSize - padtext := bytes.Repeat([]byte{byte(padding)}, padding) - return append(ciphertext, padtext...) -} - -func unpad(src []byte) ([]byte, error) { - length := len(src) - padLen := int(src[length-1]) - - if padLen > length { - return nil, fmt.Errorf("padding is greater then the length: %d / %d", padLen, length) - } - - return src[:(length - padLen)], nil -} diff --git a/vendor/github.com/Rhymen/go-whatsapp/crypto/curve25519/curve.go b/vendor/github.com/Rhymen/go-whatsapp/crypto/curve25519/curve.go deleted file mode 100644 index 5ddf9c9a..00000000 --- a/vendor/github.com/Rhymen/go-whatsapp/crypto/curve25519/curve.go +++ /dev/null @@ -1,44 +0,0 @@ -/* -In cryptography, Curve25519 is an elliptic curve offering 128 bits of security and designed for use with the elliptic -curve Diffie–Hellman (ECDH) key agreement scheme. It is one of the fastest ECC curves and is not covered by any known -patents. The reference implementation is public domain software. The original Curve25519 paper defined it -as a Diffie–Hellman (DH) function. -*/ -package curve25519 - -import ( - "crypto/rand" - "golang.org/x/crypto/curve25519" - "io" -) - -/* -GenerateKey generates a public private key pair using Curve25519. -*/ -func GenerateKey() (privateKey *[32]byte, publicKey *[32]byte, err error) { - var pub, priv [32]byte - - _, err = io.ReadFull(rand.Reader, priv[:]) - if err != nil { - return nil, nil, err - } - - priv[0] &= 248 - priv[31] &= 127 - priv[31] |= 64 - - curve25519.ScalarBaseMult(&pub, &priv) - - return &priv, &pub, nil -} - -/* -GenerateSharedSecret generates the shared secret with a given public private key pair. -*/ -func GenerateSharedSecret(priv, pub [32]byte) []byte { - var secret [32]byte - - curve25519.ScalarMult(&secret, &priv, &pub) - - return secret[:] -} diff --git a/vendor/github.com/Rhymen/go-whatsapp/crypto/hkdf/hkdf.go b/vendor/github.com/Rhymen/go-whatsapp/crypto/hkdf/hkdf.go deleted file mode 100644 index 3d7361f0..00000000 --- a/vendor/github.com/Rhymen/go-whatsapp/crypto/hkdf/hkdf.go +++ /dev/null @@ -1,47 +0,0 @@ -/* -HKDF is a simple key derivation function (KDF) based on -a hash-based message authentication code (HMAC). It was initially proposed by its authors as a building block in -various protocols and applications, as well as to discourage the proliferation of multiple KDF mechanisms. -The main approach HKDF follows is the "extract-then-expand" paradigm, where the KDF logically consists of two modules: -the first stage takes the input keying material and "extracts" from it a fixed-length pseudorandom key, and then the -second stage "expands" this key into several additional pseudorandom keys (the output of the KDF). -*/ -package hkdf - -import ( - "crypto/sha256" - "fmt" - "golang.org/x/crypto/hkdf" - "io" -) - -/* -Expand expands a given key with the HKDF algorithm. -*/ -func Expand(key []byte, length int, info string) ([]byte, error) { - var h io.Reader - if info == "" { - /* - Only used during initial login - Pseudorandom Key is provided by server and has not to be created - */ - h = hkdf.Expand(sha256.New, key, []byte(info)) - } else { - /* - Used every other time - Pseudorandom Key is created during kdf.New - This is the normal that crypto/hkdf is used - */ - h = hkdf.New(sha256.New, key, nil, []byte(info)) - } - out := make([]byte, length) - n, err := io.ReadAtLeast(h, out, length) - if err != nil { - return nil, err - } - if n != length { - return nil, fmt.Errorf("new key to short") - } - - return out, nil -} diff --git a/vendor/github.com/Rhymen/go-whatsapp/errors.go b/vendor/github.com/Rhymen/go-whatsapp/errors.go deleted file mode 100644 index 2f58a771..00000000 --- a/vendor/github.com/Rhymen/go-whatsapp/errors.go +++ /dev/null @@ -1,42 +0,0 @@ -package whatsapp - -import ( - "fmt" - - "github.com/pkg/errors" -) - -var ( - ErrAlreadyConnected = errors.New("already connected") - ErrAlreadyLoggedIn = errors.New("already logged in") - ErrInvalidSession = errors.New("invalid session") - ErrLoginInProgress = errors.New("login or restore already running") - ErrNotConnected = errors.New("not connected") - ErrInvalidWsData = errors.New("received invalid data") - ErrInvalidWsState = errors.New("can't handle binary data when not logged in") - ErrConnectionTimeout = errors.New("connection timed out") - ErrMissingMessageTag = errors.New("no messageTag specified or to short") - ErrInvalidHmac = errors.New("invalid hmac") - ErrInvalidServerResponse = errors.New("invalid response received from server") - ErrServerRespondedWith404 = errors.New("server responded with status 404") - ErrInvalidWebsocket = errors.New("invalid websocket") - ErrMessageTypeNotImplemented = errors.New("message type not implemented") - ErrOptionsNotProvided = errors.New("new conn options not provided") -) - -type ErrConnectionFailed struct { - Err error -} - -func (e *ErrConnectionFailed) Error() string { - return fmt.Sprintf("connection to WhatsApp servers failed: %v", e.Err) -} - -type ErrConnectionClosed struct { - Code int - Text string -} - -func (e *ErrConnectionClosed) Error() string { - return fmt.Sprintf("server closed connection,code: %d,text: %s", e.Code, e.Text) -} diff --git a/vendor/github.com/Rhymen/go-whatsapp/group.go b/vendor/github.com/Rhymen/go-whatsapp/group.go deleted file mode 100644 index 40e4515e..00000000 --- a/vendor/github.com/Rhymen/go-whatsapp/group.go +++ /dev/null @@ -1,90 +0,0 @@ -package whatsapp - -import ( - "encoding/json" - "fmt" - "time" -) - -func (wac *Conn) GetGroupMetaData(jid string) (<-chan string, error) { - data := []interface{}{"query", "GroupMetadata", jid} - return wac.writeJson(data) -} - -func (wac *Conn) CreateGroup(subject string, participants []string) (<-chan string, error) { - return wac.setGroup("create", "", subject, participants) -} - -func (wac *Conn) UpdateGroupSubject(subject string, jid string) (<-chan string, error) { - return wac.setGroup("subject", jid, subject, nil) -} - -func (wac *Conn) SetAdmin(jid string, participants []string) (<-chan string, error) { - return wac.setGroup("promote", jid, "", participants) -} - -func (wac *Conn) RemoveAdmin(jid string, participants []string) (<-chan string, error) { - return wac.setGroup("demote", jid, "", participants) -} - -func (wac *Conn) AddMember(jid string, participants []string) (<-chan string, error) { - return wac.setGroup("add", jid, "", participants) -} - -func (wac *Conn) RemoveMember(jid string, participants []string) (<-chan string, error) { - return wac.setGroup("remove", jid, "", participants) -} - -func (wac *Conn) LeaveGroup(jid string) (<-chan string, error) { - return wac.setGroup("leave", jid, "", nil) -} - -func (wac *Conn) GroupInviteLink(jid string) (string, error) { - request := []interface{}{"query", "inviteCode", jid} - ch, err := wac.writeJson(request) - if err != nil { - return "", err - } - - var response map[string]interface{} - - select { - case r := <-ch: - if err := json.Unmarshal([]byte(r), &response); err != nil { - return "", fmt.Errorf("error decoding response message: %v\n", err) - } - case <-time.After(wac.msgTimeout): - return "", fmt.Errorf("request timed out") - } - - if int(response["status"].(float64)) != 200 { - return "", fmt.Errorf("request responded with %d", response["status"]) - } - - return response["code"].(string), nil -} - -func (wac *Conn) GroupAcceptInviteCode(code string) (jid string, err error) { - request := []interface{}{"action", "invite", code} - ch, err := wac.writeJson(request) - if err != nil { - return "", err - } - - var response map[string]interface{} - - select { - case r := <-ch: - if err := json.Unmarshal([]byte(r), &response); err != nil { - return "", fmt.Errorf("error decoding response message: %v\n", err) - } - case <-time.After(wac.msgTimeout): - return "", fmt.Errorf("request timed out") - } - - if int(response["status"].(float64)) != 200 { - return "", fmt.Errorf("request responded with %d", response["status"]) - } - - return response["gid"].(string), nil -} diff --git a/vendor/github.com/Rhymen/go-whatsapp/handler.go b/vendor/github.com/Rhymen/go-whatsapp/handler.go deleted file mode 100644 index 1e447018..00000000 --- a/vendor/github.com/Rhymen/go-whatsapp/handler.go +++ /dev/null @@ -1,481 +0,0 @@ -package whatsapp - -import ( - "fmt" - "os" - "strings" - - "github.com/Rhymen/go-whatsapp/binary" - "github.com/Rhymen/go-whatsapp/binary/proto" -) - -/* -The Handler interface is the minimal interface that needs to be implemented -to be accepted as a valid handler for our dispatching system. -The minimal handler is used to dispatch error messages. These errors occur on unexpected behavior by the websocket -connection or if we are unable to handle or interpret an incoming message. Error produced by user actions are not -dispatched through this handler. They are returned as an error on the specific function call. -*/ -type Handler interface { - HandleError(err error) -} - -type SyncHandler interface { - Handler - ShouldCallSynchronously() bool -} - -/* -The TextMessageHandler interface needs to be implemented to receive text messages dispatched by the dispatcher. -*/ -type TextMessageHandler interface { - Handler - HandleTextMessage(message TextMessage) -} - -/* -The ImageMessageHandler interface needs to be implemented to receive image messages dispatched by the dispatcher. -*/ -type ImageMessageHandler interface { - Handler - HandleImageMessage(message ImageMessage) -} - -/* -The VideoMessageHandler interface needs to be implemented to receive video messages dispatched by the dispatcher. -*/ -type VideoMessageHandler interface { - Handler - HandleVideoMessage(message VideoMessage) -} - -/* -The AudioMessageHandler interface needs to be implemented to receive audio messages dispatched by the dispatcher. -*/ -type AudioMessageHandler interface { - Handler - HandleAudioMessage(message AudioMessage) -} - -/* -The DocumentMessageHandler interface needs to be implemented to receive document messages dispatched by the dispatcher. -*/ -type DocumentMessageHandler interface { - Handler - HandleDocumentMessage(message DocumentMessage) -} - -/* -The LiveLocationMessageHandler interface needs to be implemented to receive live location messages dispatched by the dispatcher. -*/ -type LiveLocationMessageHandler interface { - Handler - HandleLiveLocationMessage(message LiveLocationMessage) -} - -/* -The LocationMessageHandler interface needs to be implemented to receive location messages dispatched by the dispatcher. -*/ -type LocationMessageHandler interface { - Handler - HandleLocationMessage(message LocationMessage) -} - -/* -The StickerMessageHandler interface needs to be implemented to receive sticker messages dispatched by the dispatcher. -*/ -type StickerMessageHandler interface { - Handler - HandleStickerMessage(message StickerMessage) -} - -/* -The ContactMessageHandler interface needs to be implemented to receive contact messages dispatched by the dispatcher. -*/ -type ContactMessageHandler interface { - Handler - HandleContactMessage(message ContactMessage) -} - -/* -The ProductMessageHandler interface needs to be implemented to receive product messages dispatched by the dispatcher. -*/ -type ProductMessageHandler interface { - Handler - HandleProductMessage(message ProductMessage) -} - -/* -The OrderMessageHandler interface needs to be implemented to receive order messages dispatched by the dispatcher. -*/ -type OrderMessageHandler interface { - Handler - HandleOrderMessage(message OrderMessage) -} - -/* -The JsonMessageHandler interface needs to be implemented to receive json messages dispatched by the dispatcher. -These json messages contain status updates of every kind sent by WhatsAppWeb servers. WhatsAppWeb uses these messages -to built a Store, which is used to save these "secondary" information. These messages may contain -presence (available, last see) information, or just the battery status of your phone. -*/ -type JsonMessageHandler interface { - Handler - HandleJsonMessage(message string) -} - -/** -The RawMessageHandler interface needs to be implemented to receive raw messages dispatched by the dispatcher. -Raw messages are the raw protobuf structs instead of the easy-to-use structs in TextMessageHandler, ImageMessageHandler, etc.. -*/ -type RawMessageHandler interface { - Handler - HandleRawMessage(message *proto.WebMessageInfo) -} - -/** -The ContactListHandler interface needs to be implemented to applky custom actions to contact lists dispatched by the dispatcher. -*/ -type ContactListHandler interface { - Handler - HandleContactList(contacts []Contact) -} - -/** -The ChatListHandler interface needs to be implemented to apply custom actions to chat lists dispatched by the dispatcher. -*/ -type ChatListHandler interface { - Handler - HandleChatList(contacts []Chat) -} - -/** -The BatteryMessageHandler interface needs to be implemented to receive percentage the device connected dispatched by the dispatcher. -*/ -type BatteryMessageHandler interface { - Handler - HandleBatteryMessage(battery BatteryMessage) -} - -/** -The NewContactHandler interface needs to be implemented to receive the contact's name for the first time. -*/ -type NewContactHandler interface { - Handler - HandleNewContact(contact Contact) -} - -/* -AddHandler adds an handler to the list of handler that receive dispatched messages. -The provided handler must at least implement the Handler interface. Additionally implemented -handlers(TextMessageHandler, ImageMessageHandler) are optional. At runtime it is checked if they are implemented -and they are called if so and needed. -*/ -func (wac *Conn) AddHandler(handler Handler) { - wac.handler = append(wac.handler, handler) -} - -// RemoveHandler removes a handler from the list of handlers that receive dispatched messages. -func (wac *Conn) RemoveHandler(handler Handler) bool { - i := -1 - for k, v := range wac.handler { - if v == handler { - i = k - break - } - } - if i > -1 { - wac.handler = append(wac.handler[:i], wac.handler[i+1:]...) - return true - } - return false -} - -// RemoveHandlers empties the list of handlers that receive dispatched messages. -func (wac *Conn) RemoveHandlers() { - wac.handler = make([]Handler, 0) -} - -func (wac *Conn) shouldCallSynchronously(handler Handler) bool { - sh, ok := handler.(SyncHandler) - return ok && sh.ShouldCallSynchronously() -} - -func (wac *Conn) handle(message interface{}) { - wac.handleWithCustomHandlers(message, wac.handler) -} - -func (wac *Conn) handleWithCustomHandlers(message interface{}, handlers []Handler) { - switch m := message.(type) { - case error: - for _, h := range handlers { - if wac.shouldCallSynchronously(h) { - h.HandleError(m) - } else { - go h.HandleError(m) - } - } - case string: - for _, h := range handlers { - if x, ok := h.(JsonMessageHandler); ok { - if wac.shouldCallSynchronously(h) { - x.HandleJsonMessage(m) - } else { - go x.HandleJsonMessage(m) - } - } - } - case TextMessage: - for _, h := range handlers { - if x, ok := h.(TextMessageHandler); ok { - if wac.shouldCallSynchronously(h) { - x.HandleTextMessage(m) - } else { - go x.HandleTextMessage(m) - } - } - } - case ImageMessage: - for _, h := range handlers { - if x, ok := h.(ImageMessageHandler); ok { - if wac.shouldCallSynchronously(h) { - x.HandleImageMessage(m) - } else { - go x.HandleImageMessage(m) - } - } - } - case VideoMessage: - for _, h := range handlers { - if x, ok := h.(VideoMessageHandler); ok { - if wac.shouldCallSynchronously(h) { - x.HandleVideoMessage(m) - } else { - go x.HandleVideoMessage(m) - } - } - } - case AudioMessage: - for _, h := range handlers { - if x, ok := h.(AudioMessageHandler); ok { - if wac.shouldCallSynchronously(h) { - x.HandleAudioMessage(m) - } else { - go x.HandleAudioMessage(m) - } - } - } - case DocumentMessage: - for _, h := range handlers { - if x, ok := h.(DocumentMessageHandler); ok { - if wac.shouldCallSynchronously(h) { - x.HandleDocumentMessage(m) - } else { - go x.HandleDocumentMessage(m) - } - } - } - case LocationMessage: - for _, h := range handlers { - if x, ok := h.(LocationMessageHandler); ok { - if wac.shouldCallSynchronously(h) { - x.HandleLocationMessage(m) - } else { - go x.HandleLocationMessage(m) - } - } - } - case LiveLocationMessage: - for _, h := range handlers { - if x, ok := h.(LiveLocationMessageHandler); ok { - if wac.shouldCallSynchronously(h) { - x.HandleLiveLocationMessage(m) - } else { - go x.HandleLiveLocationMessage(m) - } - } - } - - case StickerMessage: - for _, h := range handlers { - if x, ok := h.(StickerMessageHandler); ok { - if wac.shouldCallSynchronously(h) { - x.HandleStickerMessage(m) - } else { - go x.HandleStickerMessage(m) - } - } - } - - case ContactMessage: - for _, h := range handlers { - if x, ok := h.(ContactMessageHandler); ok { - if wac.shouldCallSynchronously(h) { - x.HandleContactMessage(m) - } else { - go x.HandleContactMessage(m) - } - } - } - - case BatteryMessage: - for _, h := range handlers { - if x, ok := h.(BatteryMessageHandler); ok { - if wac.shouldCallSynchronously(h) { - x.HandleBatteryMessage(m) - } else { - go x.HandleBatteryMessage(m) - } - } - } - - case Contact: - for _, h := range handlers { - if x, ok := h.(NewContactHandler); ok { - if wac.shouldCallSynchronously(h) { - x.HandleNewContact(m) - } else { - go x.HandleNewContact(m) - } - } - } - - case ProductMessage: - for _, h := range handlers { - if x, ok := h.(ProductMessageHandler); ok { - if wac.shouldCallSynchronously(h) { - x.HandleProductMessage(m) - } else { - go x.HandleProductMessage(m) - } - } - } - - case OrderMessage: - for _, h := range handlers { - if x, ok := h.(OrderMessageHandler); ok { - if wac.shouldCallSynchronously(h) { - x.HandleOrderMessage(m) - } else { - go x.HandleOrderMessage(m) - } - } - } - - case *proto.WebMessageInfo: - for _, h := range handlers { - if x, ok := h.(RawMessageHandler); ok { - if wac.shouldCallSynchronously(h) { - x.HandleRawMessage(m) - } else { - go x.HandleRawMessage(m) - } - } - } - } - -} - -func (wac *Conn) handleContacts(contacts interface{}) { - var contactList []Contact - c, ok := contacts.([]interface{}) - if !ok { - return - } - for _, contact := range c { - contactNode, ok := contact.(binary.Node) - if !ok { - continue - } - - jid := strings.Replace(contactNode.Attributes["jid"], "@c.us", "@s.whatsapp.net", 1) - contactList = append(contactList, Contact{ - jid, - contactNode.Attributes["notify"], - contactNode.Attributes["name"], - contactNode.Attributes["short"], - }) - } - for _, h := range wac.handler { - if x, ok := h.(ContactListHandler); ok { - if wac.shouldCallSynchronously(h) { - x.HandleContactList(contactList) - } else { - go x.HandleContactList(contactList) - } - } - } -} - -func (wac *Conn) handleChats(chats interface{}) { - var chatList []Chat - c, ok := chats.([]interface{}) - if !ok { - return - } - for _, chat := range c { - chatNode, ok := chat.(binary.Node) - if !ok { - continue - } - - jid := strings.Replace(chatNode.Attributes["jid"], "@c.us", "@s.whatsapp.net", 1) - chatList = append(chatList, Chat{ - jid, - chatNode.Attributes["name"], - chatNode.Attributes["count"], - chatNode.Attributes["t"], - chatNode.Attributes["mute"], - chatNode.Attributes["spam"], - }) - } - for _, h := range wac.handler { - if x, ok := h.(ChatListHandler); ok { - if wac.shouldCallSynchronously(h) { - x.HandleChatList(chatList) - } else { - go x.HandleChatList(chatList) - } - } - } -} - -func (wac *Conn) dispatch(msg interface{}) { - if msg == nil { - return - } - - switch message := msg.(type) { - case *binary.Node: - if message.Description == "action" { - if con, ok := message.Content.([]interface{}); ok { - for a := range con { - if v, ok := con[a].(*proto.WebMessageInfo); ok { - wac.handle(v) - wac.handle(ParseProtoMessage(v)) - } - - if v, ok := con[a].(binary.Node); ok { - wac.handle(ParseNodeMessage(v)) - } - } - } else if con, ok := message.Content.([]binary.Node); ok { - for a := range con { - wac.handle(ParseNodeMessage(con[a])) - } - } - } else if message.Description == "response" && message.Attributes["type"] == "contacts" { - wac.updateContacts(message.Content) - wac.handleContacts(message.Content) - } else if message.Description == "response" && message.Attributes["type"] == "chat" { - wac.updateChats(message.Content) - wac.handleChats(message.Content) - } - case error: - wac.handle(message) - case string: - wac.handle(message) - default: - fmt.Fprintf(os.Stderr, "unknown type in dipatcher chan: %T", msg) - } -} diff --git a/vendor/github.com/Rhymen/go-whatsapp/media.go b/vendor/github.com/Rhymen/go-whatsapp/media.go deleted file mode 100644 index f72e7922..00000000 --- a/vendor/github.com/Rhymen/go-whatsapp/media.go +++ /dev/null @@ -1,221 +0,0 @@ -package whatsapp - -import ( - "bytes" - "crypto/hmac" - "crypto/rand" - "crypto/sha256" - "encoding/base64" - "encoding/json" - "fmt" - "io" - "io/ioutil" - "net" - "net/http" - "net/url" - "time" - - "github.com/Rhymen/go-whatsapp/crypto/cbc" - "github.com/Rhymen/go-whatsapp/crypto/hkdf" -) - -func Download(url string, mediaKey []byte, appInfo MediaType, fileLength int) ([]byte, error) { - if url == "" { - return nil, fmt.Errorf("no url present") - } - file, mac, err := downloadMedia(url) - if err != nil { - return nil, err - } - iv, cipherKey, macKey, _, err := getMediaKeys(mediaKey, appInfo) - if err != nil { - return nil, err - } - if err = validateMedia(iv, file, macKey, mac); err != nil { - return nil, err - } - data, err := cbc.Decrypt(cipherKey, iv, file) - if err != nil { - return nil, err - } - if len(data) != fileLength { - return nil, fmt.Errorf("file length does not match. Expected: %v, got: %v", fileLength, len(data)) - } - return data, nil -} - -func validateMedia(iv []byte, file []byte, macKey []byte, mac []byte) error { - h := hmac.New(sha256.New, macKey) - n, err := h.Write(append(iv, file...)) - if err != nil { - return err - } - if n < 10 { - return fmt.Errorf("hash to short") - } - if !hmac.Equal(h.Sum(nil)[:10], mac) { - return fmt.Errorf("invalid media hmac") - } - return nil -} - -func getMediaKeys(mediaKey []byte, appInfo MediaType) (iv, cipherKey, macKey, refKey []byte, err error) { - mediaKeyExpanded, err := hkdf.Expand(mediaKey, 112, string(appInfo)) - if err != nil { - return nil, nil, nil, nil, err - } - return mediaKeyExpanded[:16], mediaKeyExpanded[16:48], mediaKeyExpanded[48:80], mediaKeyExpanded[80:], nil -} - -func downloadMedia(url string) (file []byte, mac []byte, err error) { - resp, err := http.Get(url) - if err != nil { - return nil, nil, err - } - defer resp.Body.Close() - if resp.StatusCode != http.StatusOK { - return nil, nil, fmt.Errorf("download failed with status code %d", resp.StatusCode) - } - if resp.ContentLength <= 10 { - return nil, nil, fmt.Errorf("file to short") - } - data, err := ioutil.ReadAll(resp.Body) - if err != nil { - return nil, nil, err - } - - n := len(data) - return data[:n-10], data[n-10 : n], nil -} - -type MediaConn struct { - Status int `json:"status"` - MediaConn struct { - Auth string `json:"auth"` - TTL int `json:"ttl"` - Hosts []struct { - Hostname string `json:"hostname"` - IPs []struct { - IP4 net.IP `json:"ip4"` - IP6 net.IP `json:"ip6"` - } `json:"ips"` - } `json:"hosts"` - } `json:"media_conn"` -} - -func (wac *Conn) queryMediaConn() (hostname, auth string, ttl int, err error) { - queryReq := []interface{}{"query", "mediaConn"} - ch, err := wac.writeJson(queryReq) - if err != nil { - return "", "", 0, err - } - - var resp MediaConn - select { - case r := <-ch: - if err = json.Unmarshal([]byte(r), &resp); err != nil { - return "", "", 0, fmt.Errorf("error decoding query media conn response: %v", err) - } - case <-time.After(wac.msgTimeout): - return "", "", 0, fmt.Errorf("query media conn timed out") - } - - if resp.Status != http.StatusOK { - return "", "", 0, fmt.Errorf("query media conn responded with %d", resp.Status) - } - - for _, h := range resp.MediaConn.Hosts { - if h.Hostname != "" { - return h.Hostname, resp.MediaConn.Auth, resp.MediaConn.TTL, nil - } - } - - return "", "", 0, fmt.Errorf("query media conn responded with no host") -} - -var mediaTypeMap = map[MediaType]string{ - MediaImage: "/mms/image", - MediaVideo: "/mms/video", - MediaDocument: "/mms/document", - MediaAudio: "/mms/audio", -} - -func (wac *Conn) Upload(reader io.Reader, appInfo MediaType) (downloadURL string, mediaKey []byte, fileEncSha256 []byte, fileSha256 []byte, fileLength uint64, err error) { - data, err := ioutil.ReadAll(reader) - if err != nil { - return "", nil, nil, nil, 0, err - } - - mediaKey = make([]byte, 32) - rand.Read(mediaKey) - - iv, cipherKey, macKey, _, err := getMediaKeys(mediaKey, appInfo) - if err != nil { - return "", nil, nil, nil, 0, err - } - - enc, err := cbc.Encrypt(cipherKey, iv, data) - if err != nil { - return "", nil, nil, nil, 0, err - } - - fileLength = uint64(len(data)) - - h := hmac.New(sha256.New, macKey) - h.Write(append(iv, enc...)) - mac := h.Sum(nil)[:10] - - sha := sha256.New() - sha.Write(data) - fileSha256 = sha.Sum(nil) - - sha.Reset() - sha.Write(append(enc, mac...)) - fileEncSha256 = sha.Sum(nil) - - hostname, auth, _, err := wac.queryMediaConn() - if err != nil { - return "", nil, nil, nil, 0, err - } - - token := base64.URLEncoding.EncodeToString(fileEncSha256) - q := url.Values{ - "auth": []string{auth}, - "token": []string{token}, - } - path := mediaTypeMap[appInfo] - uploadURL := url.URL{ - Scheme: "https", - Host: hostname, - Path: fmt.Sprintf("%s/%s", path, token), - RawQuery: q.Encode(), - } - - body := bytes.NewReader(append(enc, mac...)) - - req, err := http.NewRequest(http.MethodPost, uploadURL.String(), body) - if err != nil { - return "", nil, nil, nil, 0, err - } - - req.Header.Set("Origin", "https://web.whatsapp.com") - req.Header.Set("Referer", "https://web.whatsapp.com/") - - client := &http.Client{} - // Submit the request - res, err := client.Do(req) - if err != nil { - return "", nil, nil, nil, 0, err - } - - if res.StatusCode != http.StatusOK { - return "", nil, nil, nil, 0, fmt.Errorf("upload failed with status code %d", res.StatusCode) - } - - var jsonRes map[string]string - if err := json.NewDecoder(res.Body).Decode(&jsonRes); err != nil { - return "", nil, nil, nil, 0, err - } - - return jsonRes["url"], mediaKey, fileEncSha256, fileSha256, fileLength, nil -} diff --git a/vendor/github.com/Rhymen/go-whatsapp/message.go b/vendor/github.com/Rhymen/go-whatsapp/message.go deleted file mode 100644 index 1acf881b..00000000 --- a/vendor/github.com/Rhymen/go-whatsapp/message.go +++ /dev/null @@ -1,1005 +0,0 @@ -package whatsapp - -import ( - "encoding/hex" - "encoding/json" - "fmt" - "io" - "math/rand" - "strconv" - "strings" - "time" - - "github.com/Rhymen/go-whatsapp/binary" - "github.com/Rhymen/go-whatsapp/binary/proto" -) - -type MediaType string - -const ( - MediaImage MediaType = "WhatsApp Image Keys" - MediaVideo MediaType = "WhatsApp Video Keys" - MediaAudio MediaType = "WhatsApp Audio Keys" - MediaDocument MediaType = "WhatsApp Document Keys" -) - -func (wac *Conn) Send(msg interface{}) (string, error) { - var msgProto *proto.WebMessageInfo - - switch m := msg.(type) { - case *proto.WebMessageInfo: - msgProto = m - case TextMessage: - msgProto = getTextProto(m) - case ImageMessage: - var err error - m.url, m.mediaKey, m.fileEncSha256, m.fileSha256, m.fileLength, err = wac.Upload(m.Content, MediaImage) - if err != nil { - return "ERROR", fmt.Errorf("image upload failed: %v", err) - } - msgProto = getImageProto(m) - case VideoMessage: - var err error - m.url, m.mediaKey, m.fileEncSha256, m.fileSha256, m.fileLength, err = wac.Upload(m.Content, MediaVideo) - if err != nil { - return "ERROR", fmt.Errorf("video upload failed: %v", err) - } - msgProto = getVideoProto(m) - case DocumentMessage: - var err error - m.url, m.mediaKey, m.fileEncSha256, m.fileSha256, m.fileLength, err = wac.Upload(m.Content, MediaDocument) - if err != nil { - return "ERROR", fmt.Errorf("document upload failed: %v", err) - } - msgProto = getDocumentProto(m) - case AudioMessage: - var err error - m.url, m.mediaKey, m.fileEncSha256, m.fileSha256, m.fileLength, err = wac.Upload(m.Content, MediaAudio) - if err != nil { - return "ERROR", fmt.Errorf("audio upload failed: %v", err) - } - msgProto = getAudioProto(m) - case LocationMessage: - msgProto = GetLocationProto(m) - case LiveLocationMessage: - msgProto = GetLiveLocationProto(m) - case ContactMessage: - msgProto = getContactMessageProto(m) - case ProductMessage: - msgProto = getProductMessageProto(m) - case OrderMessage: - msgProto = getOrderMessageProto(m) - default: - return "ERROR", fmt.Errorf("cannot match type %T, use message types declared in the package", msg) - } - status := proto.WebMessageInfo_PENDING - msgProto.Status = &status - ch, err := wac.sendProto(msgProto) - if err != nil { - return "ERROR", fmt.Errorf("could not send proto: %v", err) - } - - select { - case response := <-ch: - var resp map[string]interface{} - if err = json.Unmarshal([]byte(response), &resp); err != nil { - return "ERROR", fmt.Errorf("error decoding sending response: %v\n", err) - } - if int(resp["status"].(float64)) != 200 { - return "ERROR", fmt.Errorf("message sending responded with %v", resp["status"]) - } - if int(resp["status"].(float64)) == 200 { - return getMessageInfo(msgProto).Id, nil - } - case <-time.After(wac.msgTimeout): - return "ERROR", fmt.Errorf("sending message timed out") - } - - return "ERROR", nil -} - -func (wac *Conn) sendProto(p *proto.WebMessageInfo) (<-chan string, error) { - n := binary.Node{ - Description: "action", - Attributes: map[string]string{ - "type": "relay", - "epoch": strconv.Itoa(wac.msgCount), - }, - Content: []interface{}{p}, - } - return wac.writeBinary(n, message, ignore, p.Key.GetId()) -} - -// RevokeMessage revokes a message (marks as "message removed") for everyone -func (wac *Conn) RevokeMessage(remotejid, msgid string, fromme bool) (revokeid string, err error) { - // create a revocation ID (required) - rawrevocationID := make([]byte, 10) - rand.Read(rawrevocationID) - revocationID := strings.ToUpper(hex.EncodeToString(rawrevocationID)) - // - ts := uint64(time.Now().Unix()) - status := proto.WebMessageInfo_PENDING - mtype := proto.ProtocolMessage_REVOKE - - revoker := &proto.WebMessageInfo{ - Key: &proto.MessageKey{ - FromMe: &fromme, - Id: &revocationID, - RemoteJid: &remotejid, - }, - MessageTimestamp: &ts, - Message: &proto.Message{ - ProtocolMessage: &proto.ProtocolMessage{ - Type: &mtype, - Key: &proto.MessageKey{ - FromMe: &fromme, - Id: &msgid, - RemoteJid: &remotejid, - }, - }, - }, - Status: &status, - } - if _, err := wac.Send(revoker); err != nil { - return revocationID, err - } - return revocationID, nil -} - -// DeleteMessage deletes a single message for the user (removes the msgbox). To -// delete the message for everyone, use RevokeMessage -func (wac *Conn) DeleteMessage(remotejid, msgid string, fromMe bool) error { - ch, err := wac.deleteChatProto(remotejid, msgid, fromMe) - if err != nil { - return fmt.Errorf("could not send proto: %v", err) - } - - select { - case response := <-ch: - var resp map[string]interface{} - if err = json.Unmarshal([]byte(response), &resp); err != nil { - return fmt.Errorf("error decoding deletion response: %v", err) - } - if int(resp["status"].(float64)) != 200 { - return fmt.Errorf("message deletion responded with %v", resp["status"]) - } - if int(resp["status"].(float64)) == 200 { - return nil - } - case <-time.After(wac.msgTimeout): - return fmt.Errorf("deleting message timed out") - } - - return nil -} - -func (wac *Conn) deleteChatProto(remotejid, msgid string, fromMe bool) (<-chan string, error) { - tag := fmt.Sprintf("%s.--%d", wac.timeTag, wac.msgCount) - - owner := "true" - if !fromMe { - owner = "false" - } - n := binary.Node{ - Description: "action", - Attributes: map[string]string{ - "epoch": strconv.Itoa(wac.msgCount), - "type": "set", - }, - Content: []interface{}{ - binary.Node{ - Description: "chat", - Attributes: map[string]string{ - "type": "clear", - "jid": remotejid, - "media": "true", - }, - Content: []binary.Node{ - { - Description: "item", - Attributes: map[string]string{ - "owner": owner, - "index": msgid, - }, - }, - }, - }, - }, - } - return wac.writeBinary(n, chat, expires|skipOffline, tag) -} - -func init() { - rand.Seed(time.Now().UTC().UnixNano()) -} - -/* -MessageInfo contains general message information. It is part of every of every message type. -*/ -type MessageInfo struct { - Id string - RemoteJid string - SenderJid string - FromMe bool - Timestamp uint64 - PushName string - Status MessageStatus - - Source *proto.WebMessageInfo -} - -type MessageStatus int - -const ( - Error MessageStatus = 0 - Pending = 1 - ServerAck = 2 - DeliveryAck = 3 - Read = 4 - Played = 5 -) - -func getMessageInfo(msg *proto.WebMessageInfo) MessageInfo { - return MessageInfo{ - Id: msg.GetKey().GetId(), - RemoteJid: msg.GetKey().GetRemoteJid(), - SenderJid: msg.GetParticipant(), - FromMe: msg.GetKey().GetFromMe(), - Timestamp: msg.GetMessageTimestamp(), - Status: MessageStatus(msg.GetStatus()), - PushName: msg.GetPushName(), - Source: msg, - } -} - -func getInfoProto(info *MessageInfo) *proto.WebMessageInfo { - if info.Id == "" || len(info.Id) < 2 { - b := make([]byte, 10) - rand.Read(b) - info.Id = strings.ToUpper(hex.EncodeToString(b)) - } - if info.Timestamp == 0 { - info.Timestamp = uint64(time.Now().Unix()) - } - info.FromMe = true - - status := proto.WebMessageInfo_WebMessageInfoStatus(info.Status) - - return &proto.WebMessageInfo{ - Key: &proto.MessageKey{ - FromMe: &info.FromMe, - RemoteJid: &info.RemoteJid, - Id: &info.Id, - }, - MessageTimestamp: &info.Timestamp, - Status: &status, - } -} - -/* -ContextInfo represents contextinfo of every message -*/ -type ContextInfo struct { - QuotedMessageID string //StanzaId - QuotedMessage *proto.Message - Participant string - IsForwarded bool -} - -func getMessageContext(msg *proto.ContextInfo) ContextInfo { - - return ContextInfo{ - QuotedMessageID: msg.GetStanzaId(), //StanzaId - QuotedMessage: msg.GetQuotedMessage(), - Participant: msg.GetParticipant(), - IsForwarded: msg.GetIsForwarded(), - } -} - -func getContextInfoProto(context *ContextInfo) *proto.ContextInfo { - if len(context.QuotedMessageID) > 0 { - contextInfo := &proto.ContextInfo{ - StanzaId: &context.QuotedMessageID, - } - - if &context.QuotedMessage != nil { - contextInfo.QuotedMessage = context.QuotedMessage - contextInfo.Participant = &context.Participant - } - - return contextInfo - } - - return nil -} - -/* -TextMessage represents a text message. -*/ -type TextMessage struct { - Info MessageInfo - Text string - ContextInfo ContextInfo -} - -func getTextMessage(msg *proto.WebMessageInfo) TextMessage { - text := TextMessage{Info: getMessageInfo(msg)} - if m := msg.GetMessage().GetExtendedTextMessage(); m != nil { - text.Text = m.GetText() - - text.ContextInfo = getMessageContext(m.GetContextInfo()) - } else { - text.Text = msg.GetMessage().GetConversation() - - } - - return text -} - -func getTextProto(msg TextMessage) *proto.WebMessageInfo { - p := getInfoProto(&msg.Info) - contextInfo := getContextInfoProto(&msg.ContextInfo) - - if contextInfo == nil { - p.Message = &proto.Message{ - Conversation: &msg.Text, - } - } else { - p.Message = &proto.Message{ - ExtendedTextMessage: &proto.ExtendedTextMessage{ - Text: &msg.Text, - ContextInfo: contextInfo, - }, - } - } - - return p -} - -/* -ImageMessage represents a image message. Unexported fields are needed for media up/downloading and media validation. -Provide a io.Reader as Content for message sending. -*/ -type ImageMessage struct { - Info MessageInfo - Caption string - Thumbnail []byte - Type string - Content io.Reader - url string - mediaKey []byte - fileEncSha256 []byte - fileSha256 []byte - fileLength uint64 - ContextInfo ContextInfo -} - -func getImageMessage(msg *proto.WebMessageInfo) ImageMessage { - image := msg.GetMessage().GetImageMessage() - - imageMessage := ImageMessage{ - Info: getMessageInfo(msg), - Caption: image.GetCaption(), - Thumbnail: image.GetJpegThumbnail(), - url: image.GetUrl(), - mediaKey: image.GetMediaKey(), - Type: image.GetMimetype(), - fileEncSha256: image.GetFileEncSha256(), - fileSha256: image.GetFileSha256(), - fileLength: image.GetFileLength(), - ContextInfo: getMessageContext(image.GetContextInfo()), - } - - return imageMessage -} - -func getImageProto(msg ImageMessage) *proto.WebMessageInfo { - p := getInfoProto(&msg.Info) - contextInfo := getContextInfoProto(&msg.ContextInfo) - - p.Message = &proto.Message{ - ImageMessage: &proto.ImageMessage{ - Caption: &msg.Caption, - JpegThumbnail: msg.Thumbnail, - Url: &msg.url, - MediaKey: msg.mediaKey, - Mimetype: &msg.Type, - FileEncSha256: msg.fileEncSha256, - FileSha256: msg.fileSha256, - FileLength: &msg.fileLength, - ContextInfo: contextInfo, - }, - } - return p -} - -/* -Download is the function to retrieve media data. The media gets downloaded, validated and returned. -*/ -func (m *ImageMessage) Download() ([]byte, error) { - return Download(m.url, m.mediaKey, MediaImage, int(m.fileLength)) -} - -/* -VideoMessage represents a video message. Unexported fields are needed for media up/downloading and media validation. -Provide a io.Reader as Content for message sending. -*/ -type VideoMessage struct { - Info MessageInfo - Caption string - Thumbnail []byte - Length uint32 - Type string - Content io.Reader - GifPlayback bool - url string - mediaKey []byte - fileEncSha256 []byte - fileSha256 []byte - fileLength uint64 - ContextInfo ContextInfo -} - -func getVideoMessage(msg *proto.WebMessageInfo) VideoMessage { - vid := msg.GetMessage().GetVideoMessage() - - videoMessage := VideoMessage{ - Info: getMessageInfo(msg), - Caption: vid.GetCaption(), - Thumbnail: vid.GetJpegThumbnail(), - GifPlayback: vid.GetGifPlayback(), - url: vid.GetUrl(), - mediaKey: vid.GetMediaKey(), - Length: vid.GetSeconds(), - Type: vid.GetMimetype(), - fileEncSha256: vid.GetFileEncSha256(), - fileSha256: vid.GetFileSha256(), - fileLength: vid.GetFileLength(), - ContextInfo: getMessageContext(vid.GetContextInfo()), - } - - return videoMessage -} - -func getVideoProto(msg VideoMessage) *proto.WebMessageInfo { - p := getInfoProto(&msg.Info) - contextInfo := getContextInfoProto(&msg.ContextInfo) - - p.Message = &proto.Message{ - VideoMessage: &proto.VideoMessage{ - Caption: &msg.Caption, - JpegThumbnail: msg.Thumbnail, - Url: &msg.url, - GifPlayback: &msg.GifPlayback, - MediaKey: msg.mediaKey, - Seconds: &msg.Length, - FileEncSha256: msg.fileEncSha256, - FileSha256: msg.fileSha256, - FileLength: &msg.fileLength, - Mimetype: &msg.Type, - ContextInfo: contextInfo, - }, - } - return p -} - -/* -Download is the function to retrieve media data. The media gets downloaded, validated and returned. -*/ -func (m *VideoMessage) Download() ([]byte, error) { - return Download(m.url, m.mediaKey, MediaVideo, int(m.fileLength)) -} - -/* -AudioMessage represents a audio message. Unexported fields are needed for media up/downloading and media validation. -Provide a io.Reader as Content for message sending. -*/ -type AudioMessage struct { - Info MessageInfo - Length uint32 - Type string - Content io.Reader - Ptt bool - url string - mediaKey []byte - fileEncSha256 []byte - fileSha256 []byte - fileLength uint64 - ContextInfo ContextInfo -} - -func getAudioMessage(msg *proto.WebMessageInfo) AudioMessage { - aud := msg.GetMessage().GetAudioMessage() - - audioMessage := AudioMessage{ - Info: getMessageInfo(msg), - url: aud.GetUrl(), - mediaKey: aud.GetMediaKey(), - Length: aud.GetSeconds(), - Type: aud.GetMimetype(), - fileEncSha256: aud.GetFileEncSha256(), - fileSha256: aud.GetFileSha256(), - fileLength: aud.GetFileLength(), - ContextInfo: getMessageContext(aud.GetContextInfo()), - } - - return audioMessage -} - -func getAudioProto(msg AudioMessage) *proto.WebMessageInfo { - p := getInfoProto(&msg.Info) - contextInfo := getContextInfoProto(&msg.ContextInfo) - p.Message = &proto.Message{ - AudioMessage: &proto.AudioMessage{ - Url: &msg.url, - MediaKey: msg.mediaKey, - Seconds: &msg.Length, - FileEncSha256: msg.fileEncSha256, - FileSha256: msg.fileSha256, - FileLength: &msg.fileLength, - Mimetype: &msg.Type, - ContextInfo: contextInfo, - Ptt: &msg.Ptt, - }, - } - return p -} - -/* -Download is the function to retrieve media data. The media gets downloaded, validated and returned. -*/ -func (m *AudioMessage) Download() ([]byte, error) { - return Download(m.url, m.mediaKey, MediaAudio, int(m.fileLength)) -} - -/* -DocumentMessage represents a document message. Unexported fields are needed for media up/downloading and media -validation. Provide a io.Reader as Content for message sending. -*/ -type DocumentMessage struct { - Info MessageInfo - Title string - PageCount uint32 - Type string - FileName string - Thumbnail []byte - Content io.Reader - url string - mediaKey []byte - fileEncSha256 []byte - fileSha256 []byte - fileLength uint64 - ContextInfo ContextInfo -} - -func getDocumentMessage(msg *proto.WebMessageInfo) DocumentMessage { - doc := msg.GetMessage().GetDocumentMessage() - - documentMessage := DocumentMessage{ - Info: getMessageInfo(msg), - Title: doc.GetTitle(), - PageCount: doc.GetPageCount(), - Type: doc.GetMimetype(), - FileName: doc.GetFileName(), - Thumbnail: doc.GetJpegThumbnail(), - url: doc.GetUrl(), - mediaKey: doc.GetMediaKey(), - fileEncSha256: doc.GetFileEncSha256(), - fileSha256: doc.GetFileSha256(), - fileLength: doc.GetFileLength(), - ContextInfo: getMessageContext(doc.GetContextInfo()), - } - - return documentMessage -} - -func getDocumentProto(msg DocumentMessage) *proto.WebMessageInfo { - p := getInfoProto(&msg.Info) - contextInfo := getContextInfoProto(&msg.ContextInfo) - p.Message = &proto.Message{ - DocumentMessage: &proto.DocumentMessage{ - JpegThumbnail: msg.Thumbnail, - Url: &msg.url, - MediaKey: msg.mediaKey, - FileEncSha256: msg.fileEncSha256, - FileSha256: msg.fileSha256, - FileLength: &msg.fileLength, - PageCount: &msg.PageCount, - Title: &msg.Title, - Mimetype: &msg.Type, - ContextInfo: contextInfo, - }, - } - return p -} - -/* -Download is the function to retrieve media data. The media gets downloaded, validated and returned. -*/ -func (m *DocumentMessage) Download() ([]byte, error) { - return Download(m.url, m.mediaKey, MediaDocument, int(m.fileLength)) -} - -/* -LocationMessage represents a location message -*/ -type LocationMessage struct { - Info MessageInfo - DegreesLatitude float64 - DegreesLongitude float64 - Name string - Address string - Url string - JpegThumbnail []byte - ContextInfo ContextInfo -} - -func GetLocationMessage(msg *proto.WebMessageInfo) LocationMessage { - loc := msg.GetMessage().GetLocationMessage() - - locationMessage := LocationMessage{ - Info: getMessageInfo(msg), - DegreesLatitude: loc.GetDegreesLatitude(), - DegreesLongitude: loc.GetDegreesLongitude(), - Name: loc.GetName(), - Address: loc.GetAddress(), - Url: loc.GetUrl(), - JpegThumbnail: loc.GetJpegThumbnail(), - ContextInfo: getMessageContext(loc.GetContextInfo()), - } - - return locationMessage -} - -func GetLocationProto(msg LocationMessage) *proto.WebMessageInfo { - p := getInfoProto(&msg.Info) - contextInfo := getContextInfoProto(&msg.ContextInfo) - - p.Message = &proto.Message{ - LocationMessage: &proto.LocationMessage{ - DegreesLatitude: &msg.DegreesLatitude, - DegreesLongitude: &msg.DegreesLongitude, - Name: &msg.Name, - Address: &msg.Address, - Url: &msg.Url, - JpegThumbnail: msg.JpegThumbnail, - ContextInfo: contextInfo, - }, - } - return p -} - -/* -LiveLocationMessage represents a live location message -*/ -type LiveLocationMessage struct { - Info MessageInfo - DegreesLatitude float64 - DegreesLongitude float64 - AccuracyInMeters uint32 - SpeedInMps float32 - DegreesClockwiseFromMagneticNorth uint32 - Caption string - SequenceNumber int64 - JpegThumbnail []byte - ContextInfo ContextInfo -} - -func GetLiveLocationMessage(msg *proto.WebMessageInfo) LiveLocationMessage { - loc := msg.GetMessage().GetLiveLocationMessage() - - liveLocationMessage := LiveLocationMessage{ - Info: getMessageInfo(msg), - DegreesLatitude: loc.GetDegreesLatitude(), - DegreesLongitude: loc.GetDegreesLongitude(), - AccuracyInMeters: loc.GetAccuracyInMeters(), - SpeedInMps: loc.GetSpeedInMps(), - DegreesClockwiseFromMagneticNorth: loc.GetDegreesClockwiseFromMagneticNorth(), - Caption: loc.GetCaption(), - SequenceNumber: loc.GetSequenceNumber(), - JpegThumbnail: loc.GetJpegThumbnail(), - ContextInfo: getMessageContext(loc.GetContextInfo()), - } - - return liveLocationMessage -} - -func GetLiveLocationProto(msg LiveLocationMessage) *proto.WebMessageInfo { - p := getInfoProto(&msg.Info) - contextInfo := getContextInfoProto(&msg.ContextInfo) - p.Message = &proto.Message{ - LiveLocationMessage: &proto.LiveLocationMessage{ - DegreesLatitude: &msg.DegreesLatitude, - DegreesLongitude: &msg.DegreesLongitude, - AccuracyInMeters: &msg.AccuracyInMeters, - SpeedInMps: &msg.SpeedInMps, - DegreesClockwiseFromMagneticNorth: &msg.DegreesClockwiseFromMagneticNorth, - Caption: &msg.Caption, - SequenceNumber: &msg.SequenceNumber, - JpegThumbnail: msg.JpegThumbnail, - ContextInfo: contextInfo, - }, - } - return p -} - -/* -StickerMessage represents a sticker message. -*/ -type StickerMessage struct { - Info MessageInfo - - Type string - Content io.Reader - url string - mediaKey []byte - fileEncSha256 []byte - fileSha256 []byte - fileLength uint64 - - ContextInfo ContextInfo -} - -func getStickerMessage(msg *proto.WebMessageInfo) StickerMessage { - sticker := msg.GetMessage().GetStickerMessage() - - stickerMessage := StickerMessage{ - Info: getMessageInfo(msg), - url: sticker.GetUrl(), - mediaKey: sticker.GetMediaKey(), - Type: sticker.GetMimetype(), - fileEncSha256: sticker.GetFileEncSha256(), - fileSha256: sticker.GetFileSha256(), - fileLength: sticker.GetFileLength(), - ContextInfo: getMessageContext(sticker.GetContextInfo()), - } - - return stickerMessage -} - -/* -Download is the function to retrieve Sticker media data. The media gets downloaded, validated and returned. -*/ - -func (m *StickerMessage) Download() ([]byte, error) { - return Download(m.url, m.mediaKey, MediaImage, int(m.fileLength)) -} - -/* -ContactMessage represents a contact message. -*/ -type ContactMessage struct { - Info MessageInfo - - DisplayName string - Vcard string - - ContextInfo ContextInfo -} - -func getContactMessage(msg *proto.WebMessageInfo) ContactMessage { - contact := msg.GetMessage().GetContactMessage() - - contactMessage := ContactMessage{ - Info: getMessageInfo(msg), - - DisplayName: contact.GetDisplayName(), - Vcard: contact.GetVcard(), - - ContextInfo: getMessageContext(contact.GetContextInfo()), - } - - return contactMessage -} - -func getContactMessageProto(msg ContactMessage) *proto.WebMessageInfo { - p := getInfoProto(&msg.Info) - contextInfo := getContextInfoProto(&msg.ContextInfo) - - p.Message = &proto.Message{ - ContactMessage: &proto.ContactMessage{ - DisplayName: &msg.DisplayName, - Vcard: &msg.Vcard, - ContextInfo: contextInfo, - }, - } - - return p -} - -/* -OrderMessage represents a order message. -*/ - -type OrderMessage struct { - Info MessageInfo - OrderId string - Thumbnail []byte - ItemCount int32 - Status proto.OrderMessage_OrderMessageOrderStatus - Surface proto.OrderMessage_OrderMessageOrderSurface - Message string - OrderTitle string - SellerJid string - Token string - TotalAmount1000 int64 - TotalCurrencyCode string - ContextInfo ContextInfo -} - -func getOrderMessage(msg *proto.WebMessageInfo) OrderMessage { - order := msg.GetMessage().GetOrderMessage() - - orderMessage := OrderMessage{ - Info: getMessageInfo(msg), - OrderId: order.GetOrderId(), - Thumbnail: order.GetThumbnail(), - ItemCount: order.GetItemCount(), - Status: order.GetStatus(), - Surface: order.GetSurface(), - Message: order.GetMessage(), - OrderTitle: order.GetOrderTitle(), - SellerJid: order.GetSellerJid(), - Token: order.GetToken(), - TotalAmount1000: order.GetTotalAmount1000(), - TotalCurrencyCode: order.GetTotalCurrencyCode(), - ContextInfo: getMessageContext(order.GetContextInfo()), - } - - return orderMessage -} - -func getOrderMessageProto(msg OrderMessage) *proto.WebMessageInfo { - p := getInfoProto(&msg.Info) - contextInfo := getContextInfoProto(&msg.ContextInfo) - - p.Message = &proto.Message{ - OrderMessage: &proto.OrderMessage{ - Thumbnail: msg.Thumbnail, - ItemCount: &msg.ItemCount, - Status: &msg.Status, - Surface: &msg.Surface, - Message: &msg.Message, - OrderTitle: &msg.OrderTitle, - SellerJid: &msg.SellerJid, - Token: &msg.Token, - TotalAmount1000: &msg.TotalAmount1000, - TotalCurrencyCode: &msg.TotalCurrencyCode, - ContextInfo: contextInfo, - }, - } - - return p -} - -/* -ProductMessage represents a product message. -*/ - -type ProductMessage struct { - Info MessageInfo - Product *proto.ProductSnapshot - BusinessOwnerJid string - Catalog *proto.CatalogSnapshot - ContextInfo ContextInfo -} - -func getProductMessage(msg *proto.WebMessageInfo) ProductMessage { - prod := msg.GetMessage().GetProductMessage() - - productMessage := ProductMessage{ - Info: getMessageInfo(msg), - Product: prod.GetProduct(), - BusinessOwnerJid: prod.GetBusinessOwnerJid(), - Catalog: prod.GetCatalog(), - ContextInfo: getMessageContext(prod.GetContextInfo()), - } - - return productMessage -} - -func getProductMessageProto(msg ProductMessage) *proto.WebMessageInfo { - p := getInfoProto(&msg.Info) - contextInfo := getContextInfoProto(&msg.ContextInfo) - - p.Message = &proto.Message{ - ProductMessage: &proto.ProductMessage{ - Product: msg.Product, - BusinessOwnerJid: &msg.BusinessOwnerJid, - Catalog: msg.Catalog, - ContextInfo: contextInfo, - }, - } - - return p -} - -func ParseProtoMessage(msg *proto.WebMessageInfo) interface{} { - - switch { - - case msg.GetMessage().GetAudioMessage() != nil: - return getAudioMessage(msg) - - case msg.GetMessage().GetImageMessage() != nil: - return getImageMessage(msg) - - case msg.GetMessage().GetVideoMessage() != nil: - return getVideoMessage(msg) - - case msg.GetMessage().GetDocumentMessage() != nil: - return getDocumentMessage(msg) - - case msg.GetMessage().GetConversation() != "": - return getTextMessage(msg) - - case msg.GetMessage().GetExtendedTextMessage() != nil: - return getTextMessage(msg) - - case msg.GetMessage().GetLocationMessage() != nil: - return GetLocationMessage(msg) - - case msg.GetMessage().GetLiveLocationMessage() != nil: - return GetLiveLocationMessage(msg) - - case msg.GetMessage().GetStickerMessage() != nil: - return getStickerMessage(msg) - - case msg.GetMessage().GetContactMessage() != nil: - return getContactMessage(msg) - - case msg.GetMessage().GetProductMessage() != nil: - return getProductMessage(msg) - - case msg.GetMessage().GetOrderMessage() != nil: - return getOrderMessage(msg) - - default: - //cannot match message - return ErrMessageTypeNotImplemented - } -} - -/* -BatteryMessage represents a battery level and charging state. -*/ -type BatteryMessage struct { - Plugged bool - Powersave bool - Percentage int -} - -func getBatteryMessage(msg map[string]string) BatteryMessage { - plugged, _ := strconv.ParseBool(msg["live"]) - powersave, _ := strconv.ParseBool(msg["powersave"]) - percentage, _ := strconv.Atoi(msg["value"]) - batteryMessage := BatteryMessage{ - Plugged: plugged, - Powersave: powersave, - Percentage: percentage, - } - - return batteryMessage -} - -func getNewContact(msg map[string]string) Contact { - contact := Contact{ - Jid: msg["jid"], - Notify: msg["notify"], - } - - return contact -} - -func ParseNodeMessage(msg binary.Node) interface{} { - switch msg.Description { - case "battery": - return getBatteryMessage(msg.Attributes) - case "user": - return getNewContact(msg.Attributes) - default: - //cannot match message - } - - return nil -} diff --git a/vendor/github.com/Rhymen/go-whatsapp/profile.go b/vendor/github.com/Rhymen/go-whatsapp/profile.go deleted file mode 100644 index 5af00f6d..00000000 --- a/vendor/github.com/Rhymen/go-whatsapp/profile.go +++ /dev/null @@ -1,65 +0,0 @@ -package whatsapp - -import ( - "fmt" - "strconv" - "time" - - "github.com/Rhymen/go-whatsapp/binary" -) - -// Pictures must be JPG 640x640 and 96x96, respectively -func (wac *Conn) UploadProfilePic(image, preview []byte) (<-chan string, error) { - tag := fmt.Sprintf("%d.--%d", time.Now().Unix(), wac.msgCount*19) - n := binary.Node{ - Description: "action", - Attributes: map[string]string{ - "type": "set", - "epoch": strconv.Itoa(wac.msgCount), - }, - Content: []interface{}{ - binary.Node{ - Description: "picture", - Attributes: map[string]string{ - "id": tag, - "jid": wac.Info.Wid, - "type": "set", - }, - Content: []binary.Node{ - { - Description: "image", - Attributes: nil, - Content: image, - }, - { - Description: "preview", - Attributes: nil, - Content: preview, - }, - }, - }, - }, - } - return wac.writeBinary(n, profile, 136, tag) -} - -func (wac *Conn) UpdateProfileName(name string) (<-chan string, error) { - tag := fmt.Sprintf("%d.--%d", time.Now().Unix(), wac.msgCount*19) - n := binary.Node{ - Description: "action", - Attributes: map[string]string{ - "type": "set", - "epoch": strconv.Itoa(wac.msgCount), - }, - Content: []interface{}{ - binary.Node{ - Description: "profile", - Attributes: map[string]string{ - "name": name, - }, - Content: []binary.Node{}, - }, - }, - } - return wac.writeBinary(n, profile, ignore, tag) -} diff --git a/vendor/github.com/Rhymen/go-whatsapp/read.go b/vendor/github.com/Rhymen/go-whatsapp/read.go deleted file mode 100644 index a69147a6..00000000 --- a/vendor/github.com/Rhymen/go-whatsapp/read.go +++ /dev/null @@ -1,142 +0,0 @@ -package whatsapp - -import ( - "crypto/hmac" - "crypto/sha256" - "encoding/json" - "fmt" - "io" - "io/ioutil" - "net/http" - "strings" - - "github.com/Rhymen/go-whatsapp/binary" - "github.com/Rhymen/go-whatsapp/crypto/cbc" - "github.com/gorilla/websocket" - "github.com/pkg/errors" -) - -func (wac *Conn) readPump() { - defer func() { - wac.wg.Done() - _, _ = wac.Disconnect() - }() - - var readErr error - var msgType int - var reader io.Reader - - for { - readerFound := make(chan struct{}) - go func() { - if wac.ws != nil { - msgType, reader, readErr = wac.ws.conn.NextReader() - } - close(readerFound) - }() - select { - case <-readerFound: - if readErr != nil { - wac.handle(&ErrConnectionFailed{Err: readErr}) - return - } - msg, err := ioutil.ReadAll(reader) - if err != nil { - wac.handle(errors.Wrap(err, "error reading message from Reader")) - continue - } - err = wac.processReadData(msgType, msg) - if err != nil { - wac.handle(errors.Wrap(err, "error processing data")) - } - case <-wac.ws.close: - return - } - } -} - -func (wac *Conn) processReadData(msgType int, msg []byte) error { - data := strings.SplitN(string(msg), ",", 2) - - if data[0][0] == '!' { //Keep-Alive Timestamp - data = append(data, data[0][1:]) //data[1] - data[0] = "!" - } - - if len(data) == 2 && len(data[1]) == 0 { - return nil - } - - if len(data) != 2 || len(data[1]) == 0 { - return ErrInvalidWsData - } - - wac.listener.RLock() - listener, hasListener := wac.listener.m[data[0]] - wac.listener.RUnlock() - - if hasListener { - // listener only exists for TextMessages query messages out of contact.go - // If these binary query messages can be handled another way, - // then the TextMessages, which are all JSON encoded, can directly - // be unmarshalled. The listener chan could then be changed from type - // chan string to something like chan map[string]interface{}. The unmarshalling - // in several places, especially in session.go, would then be gone. - listener <- data[1] - close(listener) - wac.removeListener(data[0]) - } else if msgType == websocket.BinaryMessage { - wac.loginSessionLock.RLock() - sess := wac.session - wac.loginSessionLock.RUnlock() - if sess == nil || sess.MacKey == nil || sess.EncKey == nil { - return ErrInvalidWsState - } - message, err := wac.decryptBinaryMessage([]byte(data[1])) - if err != nil { - return errors.Wrap(err, "error decoding binary") - } - wac.dispatch(message) - } else { //RAW json status updates - wac.handle(string(data[1])) - } - return nil -} - -func (wac *Conn) decryptBinaryMessage(msg []byte) (*binary.Node, error) { - //message validation - h2 := hmac.New(sha256.New, wac.session.MacKey) - if len(msg) < 33 { - var response struct { - Status int `json:"status"` - } - - if err := json.Unmarshal(msg, &response); err == nil { - if response.Status == http.StatusNotFound { - return nil, ErrServerRespondedWith404 - } - return nil, errors.New(fmt.Sprintf("server responded with %d", response.Status)) - } - - return nil, ErrInvalidServerResponse - - } - h2.Write([]byte(msg[32:])) - if !hmac.Equal(h2.Sum(nil), msg[:32]) { - return nil, ErrInvalidHmac - } - - // message decrypt - d, err := cbc.Decrypt(wac.session.EncKey, nil, msg[32:]) - if err != nil { - return nil, errors.Wrap(err, "decrypting message with AES-CBC failed") - } - - // message unmarshal - message, err := binary.Unmarshal(d) - if err != nil { - return nil, errors.Wrap(err, "could not decode binary") - } - - return message, nil -} diff --git a/vendor/github.com/Rhymen/go-whatsapp/session.go b/vendor/github.com/Rhymen/go-whatsapp/session.go deleted file mode 100644 index 215fb599..00000000 --- a/vendor/github.com/Rhymen/go-whatsapp/session.go +++ /dev/null @@ -1,532 +0,0 @@ -package whatsapp - -import ( - "crypto/hmac" - "crypto/rand" - "crypto/sha256" - "encoding/base64" - "encoding/json" - "fmt" - "strconv" - "strings" - "sync/atomic" - "time" - - "github.com/Rhymen/go-whatsapp/crypto/cbc" - "github.com/Rhymen/go-whatsapp/crypto/curve25519" - "github.com/Rhymen/go-whatsapp/crypto/hkdf" -) - -//represents the WhatsAppWeb client version -var waVersion = []int{2, 2142, 12} - -/* -Session contains session individual information. To be able to resume the connection without scanning the qr code -every time you should save the Session returned by Login and use RestoreWithSession the next time you want to login. -Every successful created connection returns a new Session. The Session(ClientToken, ServerToken) is altered after -every re-login and should be saved every time. -*/ -type Session struct { - ClientId string - ClientToken string - ServerToken string - EncKey []byte - MacKey []byte - Wid string -} - -type Info struct { - Battery int - Platform string - Connected bool - Pushname string - Wid string - Lc string - Phone *PhoneInfo - Plugged bool - Tos int - Lg string - Is24h bool -} - -type PhoneInfo struct { - Mcc string - Mnc string - OsVersion string - DeviceManufacturer string - DeviceModel string - OsBuildNumber string - WaVersion string -} - -func newInfoFromReq(info map[string]interface{}) *Info { - phoneInfo := info["phone"].(map[string]interface{}) - - ret := &Info{ - Battery: int(info["battery"].(float64)), - Platform: info["platform"].(string), - Connected: info["connected"].(bool), - Pushname: info["pushname"].(string), - Wid: info["wid"].(string), - Lc: info["lc"].(string), - Phone: &PhoneInfo{ - phoneInfo["mcc"].(string), - phoneInfo["mnc"].(string), - phoneInfo["os_version"].(string), - phoneInfo["device_manufacturer"].(string), - phoneInfo["device_model"].(string), - phoneInfo["os_build_number"].(string), - phoneInfo["wa_version"].(string), - }, - Plugged: info["plugged"].(bool), - Lg: info["lg"].(string), - Tos: int(info["tos"].(float64)), - } - - if is24h, ok := info["is24h"]; ok { - ret.Is24h = is24h.(bool) - } - - return ret -} - -/* -CheckCurrentServerVersion is based on the login method logic in order to establish the websocket connection and get -the current version from the server with the `admin init` command. This can be very useful for automations in which -you need to quickly perceive new versions (mostly patches) and update your application so it suddenly stops working. -*/ -func CheckCurrentServerVersion() ([]int, error) { - wac, err := NewConn(5 * time.Second) - if err != nil { - return nil, fmt.Errorf("fail to create connection") - } - - clientId := make([]byte, 16) - if _, err = rand.Read(clientId); err != nil { - return nil, fmt.Errorf("error creating random ClientId: %v", err) - } - - b64ClientId := base64.StdEncoding.EncodeToString(clientId) - login := []interface{}{"admin", "init", waVersion, []string{wac.longClientName, wac.shortClientName, wac.clientVersion}, b64ClientId, true} - loginChan, err := wac.writeJson(login) - if err != nil { - return nil, fmt.Errorf("error writing login: %s", err.Error()) - } - - // Retrieve an answer from the websocket - var r string - select { - case r = <-loginChan: - case <-time.After(wac.msgTimeout): - return nil, fmt.Errorf("login connection timed out") - } - - var resp map[string]interface{} - if err = json.Unmarshal([]byte(r), &resp); err != nil { - return nil, fmt.Errorf("error decoding login: %s", err.Error()) - } - - // Take the curr property as X.Y.Z and split it into as int slice - curr := resp["curr"].(string) - currArray := strings.Split(curr, ".") - version := make([]int, len(currArray)) - for i := range version { - version[i], _ = strconv.Atoi(currArray[i]) - } - - return version, nil -} - -/* -SetClientName sets the long and short client names that are sent to WhatsApp when logging in and displayed in the -WhatsApp Web device list. As the values are only sent when logging in, changing them after logging in is not possible. -*/ -func (wac *Conn) SetClientName(long, short string, version string) error { - if wac.session != nil && (wac.session.EncKey != nil || wac.session.MacKey != nil) { - return fmt.Errorf("cannot change client name after logging in") - } - wac.longClientName, wac.shortClientName, wac.clientVersion = long, short, version - return nil -} - -/* -SetClientVersion sets WhatsApp client version -Default value is 0.4.2080 -*/ -func (wac *Conn) SetClientVersion(major int, minor int, patch int) { - waVersion = []int{major, minor, patch} -} - -// GetClientVersion returns WhatsApp client version -func (wac *Conn) GetClientVersion() []int { - return waVersion -} - -/* -Login is the function that creates a new whatsapp session and logs you in. If you do not want to scan the qr code -every time, you should save the returned session and use RestoreWithSession the next time. Login takes a writable channel -as an parameter. This channel is used to push the data represented by the qr code back to the user. The received data -should be displayed as an qr code in a way you prefer. To print a qr code to console you can use: -github.com/Baozisoftware/qrcode-terminal-go Example login procedure: - wac, err := whatsapp.NewConn(5 * time.Second) - if err != nil { - panic(err) - } - - qr := make(chan string) - go func() { - terminal := qrcodeTerminal.New() - terminal.Get(<-qr).Print() - }() - - session, err := wac.Login(qr) - if err != nil { - fmt.Fprintf(os.Stderr, "error during login: %v\n", err) - } - fmt.Printf("login successful, session: %v\n", session) -*/ -func (wac *Conn) Login(qrChan chan<- string) (Session, error) { - session := Session{} - //Makes sure that only a single Login or Restore can happen at the same time - if !atomic.CompareAndSwapUint32(&wac.sessionLock, 0, 1) { - return session, ErrLoginInProgress - } - defer atomic.StoreUint32(&wac.sessionLock, 0) - - if wac.loggedIn { - return session, ErrAlreadyLoggedIn - } - - if err := wac.connect(); err != nil && err != ErrAlreadyConnected { - return session, err - } - - //logged in?!? - if wac.session != nil && (wac.session.EncKey != nil || wac.session.MacKey != nil) { - return session, fmt.Errorf("already logged in") - } - - clientId := make([]byte, 16) - _, err := rand.Read(clientId) - if err != nil { - return session, fmt.Errorf("error creating random ClientId: %v", err) - } - - session.ClientId = base64.StdEncoding.EncodeToString(clientId) - login := []interface{}{"admin", "init", waVersion, []string{wac.longClientName, wac.shortClientName, wac.clientVersion}, session.ClientId, true} - loginChan, err := wac.writeJson(login) - if err != nil { - return session, fmt.Errorf("error writing login: %v\n", err) - } - - var r string - select { - case r = <-loginChan: - case <-time.After(wac.msgTimeout): - return session, fmt.Errorf("login connection timed out") - } - - var resp map[string]interface{} - if err = json.Unmarshal([]byte(r), &resp); err != nil { - return session, fmt.Errorf("error decoding login resp: %v\n", err) - } - - var ref string - if rref, ok := resp["ref"].(string); ok { - ref = rref - } else { - return session, fmt.Errorf("error decoding login resp: invalid resp['ref']\n") - } - - priv, pub, err := curve25519.GenerateKey() - if err != nil { - return session, fmt.Errorf("error generating keys: %v\n", err) - } - - //listener for Login response - s1 := make(chan string, 1) - wac.listener.Lock() - wac.listener.m["s1"] = s1 - wac.listener.Unlock() - - qrChan <- fmt.Sprintf("%v,%v,%v", ref, base64.StdEncoding.EncodeToString(pub[:]), session.ClientId) - - var resp2 []interface{} - select { - case r1 := <-s1: - wac.loginSessionLock.Lock() - defer wac.loginSessionLock.Unlock() - if err := json.Unmarshal([]byte(r1), &resp2); err != nil { - return session, fmt.Errorf("error decoding qr code resp: %v", err) - } - case <-time.After(time.Duration(resp["ttl"].(float64)) * time.Millisecond): - return session, fmt.Errorf("qr code scan timed out") - } - - info := resp2[1].(map[string]interface{}) - - wac.Info = newInfoFromReq(info) - - session.ClientToken = info["clientToken"].(string) - session.ServerToken = info["serverToken"].(string) - session.Wid = info["wid"].(string) - s := info["secret"].(string) - decodedSecret, err := base64.StdEncoding.DecodeString(s) - if err != nil { - return session, fmt.Errorf("error decoding secret: %v", err) - } - - var pubKey [32]byte - copy(pubKey[:], decodedSecret[:32]) - - sharedSecret := curve25519.GenerateSharedSecret(*priv, pubKey) - - hash := sha256.New - - nullKey := make([]byte, 32) - h := hmac.New(hash, nullKey) - h.Write(sharedSecret) - - sharedSecretExtended, err := hkdf.Expand(h.Sum(nil), 80, "") - if err != nil { - return session, fmt.Errorf("hkdf error: %v", err) - } - - //login validation - checkSecret := make([]byte, 112) - copy(checkSecret[:32], decodedSecret[:32]) - copy(checkSecret[32:], decodedSecret[64:]) - h2 := hmac.New(hash, sharedSecretExtended[32:64]) - h2.Write(checkSecret) - if !hmac.Equal(h2.Sum(nil), decodedSecret[32:64]) { - return session, fmt.Errorf("abort login") - } - - keysEncrypted := make([]byte, 96) - copy(keysEncrypted[:16], sharedSecretExtended[64:]) - copy(keysEncrypted[16:], decodedSecret[64:]) - - keyDecrypted, err := cbc.Decrypt(sharedSecretExtended[:32], nil, keysEncrypted) - if err != nil { - return session, fmt.Errorf("error decryptAes: %v", err) - } - - session.EncKey = keyDecrypted[:32] - session.MacKey = keyDecrypted[32:64] - wac.session = &session - wac.loggedIn = true - - return session, nil -} - -//TODO: GoDoc -/* -Basically the old RestoreSession functionality -*/ -func (wac *Conn) RestoreWithSession(session Session) (_ Session, err error) { - if wac.loggedIn { - return Session{}, ErrAlreadyLoggedIn - } - old := wac.session - defer func() { - if err != nil { - wac.session = old - } - }() - wac.session = &session - - if err = wac.Restore(); err != nil { - wac.session = nil - return Session{}, err - } - return *wac.session, nil -} - -/*//TODO: GoDoc -RestoreWithSession is the function that restores a given session. It will try to reestablish the connection to the -WhatsAppWeb servers with the provided session. If it succeeds it will return a new session. This new session has to be -saved because the Client and Server-Token will change after every login. Logging in with old tokens is possible, but not -suggested. If so, a challenge has to be resolved which is just another possible point of failure. -*/ -func (wac *Conn) Restore() error { - //Makes sure that only a single Login or Restore can happen at the same time - if !atomic.CompareAndSwapUint32(&wac.sessionLock, 0, 1) { - return ErrLoginInProgress - } - defer atomic.StoreUint32(&wac.sessionLock, 0) - - if wac.session == nil { - return ErrInvalidSession - } - - if err := wac.connect(); err != nil && err != ErrAlreadyConnected { - return err - } - - if wac.loggedIn { - return ErrAlreadyLoggedIn - } - - //listener for Conn or challenge; s1 is not allowed to drop - s1 := make(chan string, 1) - wac.listener.Lock() - wac.listener.m["s1"] = s1 - wac.listener.Unlock() - - //admin init - init := []interface{}{"admin", "init", waVersion, []string{wac.longClientName, wac.shortClientName, wac.clientVersion}, wac.session.ClientId, true} - initChan, err := wac.writeJson(init) - if err != nil { - return fmt.Errorf("error writing admin init: %v\n", err) - } - - //admin login with takeover - login := []interface{}{"admin", "login", wac.session.ClientToken, wac.session.ServerToken, wac.session.ClientId, "takeover"} - loginChan, err := wac.writeJson(login) - if err != nil { - return fmt.Errorf("error writing admin login: %v\n", err) - } - - select { - case r := <-initChan: - var resp map[string]interface{} - if err = json.Unmarshal([]byte(r), &resp); err != nil { - return fmt.Errorf("error decoding login connResp: %v\n", err) - } - - if int(resp["status"].(float64)) != 200 { - wac.timeTag = "" - return fmt.Errorf("init responded with %d", resp["status"]) - } - case <-time.After(wac.msgTimeout): - wac.timeTag = "" - return fmt.Errorf("restore session init timed out") - } - - //wait for s1 - var connResp []interface{} - select { - case r1 := <-s1: - if err := json.Unmarshal([]byte(r1), &connResp); err != nil { - wac.timeTag = "" - return fmt.Errorf("error decoding s1 message: %v\n", err) - } - case <-time.After(wac.msgTimeout): - wac.timeTag = "" - //check for an error message - select { - case r := <-loginChan: - var resp map[string]interface{} - if err = json.Unmarshal([]byte(r), &resp); err != nil { - return fmt.Errorf("error decoding login connResp: %v\n", err) - } - if int(resp["status"].(float64)) != 200 { - return fmt.Errorf("admin login responded with %d", int(resp["status"].(float64))) - } - default: - // not even an error message – assume timeout - return fmt.Errorf("restore session connection timed out") - } - } - - //check if challenge is present - if len(connResp) == 2 && connResp[0] == "Cmd" && connResp[1].(map[string]interface{})["type"] == "challenge" { - s2 := make(chan string, 1) - wac.listener.Lock() - wac.listener.m["s2"] = s2 - wac.listener.Unlock() - - if err := wac.resolveChallenge(connResp[1].(map[string]interface{})["challenge"].(string)); err != nil { - wac.timeTag = "" - return fmt.Errorf("error resolving challenge: %v\n", err) - } - - select { - case r := <-s2: - if err := json.Unmarshal([]byte(r), &connResp); err != nil { - wac.timeTag = "" - return fmt.Errorf("error decoding s2 message: %v\n", err) - } - case <-time.After(wac.msgTimeout): - wac.timeTag = "" - return fmt.Errorf("restore session challenge timed out") - } - } - - //check for login 200 --> login success - select { - case r := <-loginChan: - var resp map[string]interface{} - if err = json.Unmarshal([]byte(r), &resp); err != nil { - wac.timeTag = "" - return fmt.Errorf("error decoding login connResp: %v\n", err) - } - - if int(resp["status"].(float64)) != 200 { - wac.timeTag = "" - return fmt.Errorf("admin login responded with %d", resp["status"]) - } - case <-time.After(wac.msgTimeout): - wac.timeTag = "" - return fmt.Errorf("restore session login timed out") - } - - info := connResp[1].(map[string]interface{}) - - wac.Info = newInfoFromReq(info) - - //set new tokens - wac.session.ClientToken = info["clientToken"].(string) - wac.session.ServerToken = info["serverToken"].(string) - wac.session.Wid = info["wid"].(string) - wac.loggedIn = true - - return nil -} - -func (wac *Conn) resolveChallenge(challenge string) error { - decoded, err := base64.StdEncoding.DecodeString(challenge) - if err != nil { - return err - } - - h2 := hmac.New(sha256.New, wac.session.MacKey) - h2.Write([]byte(decoded)) - - ch := []interface{}{"admin", "challenge", base64.StdEncoding.EncodeToString(h2.Sum(nil)), wac.session.ServerToken, wac.session.ClientId} - challengeChan, err := wac.writeJson(ch) - if err != nil { - return fmt.Errorf("error writing challenge: %v\n", err) - } - - select { - case r := <-challengeChan: - var resp map[string]interface{} - if err := json.Unmarshal([]byte(r), &resp); err != nil { - return fmt.Errorf("error decoding login resp: %v\n", err) - } - if int(resp["status"].(float64)) != 200 { - return fmt.Errorf("challenge responded with %d\n", resp["status"]) - } - case <-time.After(wac.msgTimeout): - return fmt.Errorf("connection timed out") - } - - return nil -} - -/* -Logout is the function to logout from a WhatsApp session. Logging out means invalidating the current session. -The session can not be resumed and will disappear on your phone in the WhatsAppWeb client list. -*/ -func (wac *Conn) Logout() error { - login := []interface{}{"admin", "Conn", "disconnect"} - _, err := wac.writeJson(login) - if err != nil { - return fmt.Errorf("error writing logout: %v\n", err) - } - - wac.loggedIn = false - - return nil -} diff --git a/vendor/github.com/Rhymen/go-whatsapp/store.go b/vendor/github.com/Rhymen/go-whatsapp/store.go deleted file mode 100644 index 994d0581..00000000 --- a/vendor/github.com/Rhymen/go-whatsapp/store.go +++ /dev/null @@ -1,80 +0,0 @@ -package whatsapp - -import ( - "github.com/Rhymen/go-whatsapp/binary" - "strings" -) - -type Store struct { - Contacts map[string]Contact - Chats map[string]Chat -} - -type Contact struct { - Jid string - Notify string - Name string - Short string -} - -type Chat struct { - Jid string - Name string - Unread string - LastMessageTime string - IsMuted string - IsMarkedSpam string -} - -func newStore() *Store { - return &Store{ - make(map[string]Contact), - make(map[string]Chat), - } -} - -func (wac *Conn) updateContacts(contacts interface{}) { - c, ok := contacts.([]interface{}) - if !ok { - return - } - - for _, contact := range c { - contactNode, ok := contact.(binary.Node) - if !ok { - continue - } - - jid := strings.Replace(contactNode.Attributes["jid"], "@c.us", "@s.whatsapp.net", 1) - wac.Store.Contacts[jid] = Contact{ - jid, - contactNode.Attributes["notify"], - contactNode.Attributes["name"], - contactNode.Attributes["short"], - } - } -} - -func (wac *Conn) updateChats(chats interface{}) { - c, ok := chats.([]interface{}) - if !ok { - return - } - - for _, chat := range c { - chatNode, ok := chat.(binary.Node) - if !ok { - continue - } - - jid := strings.Replace(chatNode.Attributes["jid"], "@c.us", "@s.whatsapp.net", 1) - wac.Store.Chats[jid] = Chat{ - jid, - chatNode.Attributes["name"], - chatNode.Attributes["count"], - chatNode.Attributes["t"], - chatNode.Attributes["mute"], - chatNode.Attributes["spam"], - } - } -} diff --git a/vendor/github.com/Rhymen/go-whatsapp/write.go b/vendor/github.com/Rhymen/go-whatsapp/write.go deleted file mode 100644 index e427825c..00000000 --- a/vendor/github.com/Rhymen/go-whatsapp/write.go +++ /dev/null @@ -1,195 +0,0 @@ -package whatsapp - -import ( - "crypto/hmac" - "crypto/sha256" - "encoding/json" - "fmt" - "strconv" - - "time" - - "github.com/Rhymen/go-whatsapp/binary" - "github.com/Rhymen/go-whatsapp/crypto/cbc" - "github.com/gorilla/websocket" - "github.com/pkg/errors" -) - -func (wac *Conn) addListener(ch chan string, messageTag string) { - wac.listener.Lock() - wac.listener.m[messageTag] = ch - wac.listener.Unlock() -} - -func (wac *Conn) removeListener(answerMessageTag string) { - wac.listener.Lock() - delete(wac.listener.m, answerMessageTag) - wac.listener.Unlock() -} - -//writeJson enqueues a json message into the writeChan -func (wac *Conn) writeJson(data []interface{}) (<-chan string, error) { - - ch := make(chan string, 1) - - wac.writerLock.Lock() - defer wac.writerLock.Unlock() - - d, err := json.Marshal(data) - if err != nil { - close(ch) - return ch, err - } - - ts := time.Now().Unix() - messageTag := fmt.Sprintf("%d.--%d", ts, wac.msgCount) - bytes := []byte(fmt.Sprintf("%s,%s", messageTag, d)) - - if wac.timeTag == "" { - tss := fmt.Sprintf("%d", ts) - wac.timeTag = tss[len(tss)-3:] - } - - wac.addListener(ch, messageTag) - - err = wac.write(websocket.TextMessage, bytes) - if err != nil { - close(ch) - wac.removeListener(messageTag) - return ch, err - } - - wac.msgCount++ - return ch, nil -} - -func (wac *Conn) writeBinary(node binary.Node, metric metric, flag flag, messageTag string) (<-chan string, error) { - - ch := make(chan string, 1) - - if len(messageTag) < 2 { - close(ch) - return ch, ErrMissingMessageTag - } - - wac.writerLock.Lock() - defer wac.writerLock.Unlock() - - data, err := wac.encryptBinaryMessage(node) - if err != nil { - close(ch) - return ch, errors.Wrap(err, "encryptBinaryMessage(node) failed") - } - - bytes := []byte(messageTag + ",") - bytes = append(bytes, byte(metric), byte(flag)) - bytes = append(bytes, data...) - - wac.addListener(ch, messageTag) - - err = wac.write(websocket.BinaryMessage, bytes) - if err != nil { - close(ch) - wac.removeListener(messageTag) - return ch, errors.Wrap(err, "failed to write message") - } - - wac.msgCount++ - return ch, nil -} - -func (wac *Conn) sendKeepAlive() error { - - respChan := make(chan string, 1) - wac.addListener(respChan, "!") - - bytes := []byte("?,,") - err := wac.write(websocket.TextMessage, bytes) - if err != nil { - close(respChan) - wac.removeListener("!") - return errors.Wrap(err, "error sending keepAlive") - } - - select { - case resp := <-respChan: - msecs, err := strconv.ParseInt(resp, 10, 64) - if err != nil { - return errors.Wrap(err, "Error converting time string to uint") - } - wac.ServerLastSeen = time.Unix(msecs/1000, (msecs%1000)*int64(time.Millisecond)) - - case <-time.After(wac.msgTimeout): - return ErrConnectionTimeout - } - - return nil -} - -/* - When phone is unreachable, WhatsAppWeb sends ["admin","test"] time after time to try a successful contact. - Tested with Airplane mode and no connection at all. -*/ -func (wac *Conn) sendAdminTest() (bool, error) { - data := []interface{}{"admin", "test"} - - r, err := wac.writeJson(data) - if err != nil { - return false, errors.Wrap(err, "error sending admin test") - } - - var response []interface{} - - select { - case resp := <-r: - if err := json.Unmarshal([]byte(resp), &response); err != nil { - return false, fmt.Errorf("error decoding response message: %v\n", err) - } - case <-time.After(wac.msgTimeout): - return false, ErrConnectionTimeout - } - - if len(response) == 2 && response[0].(string) == "Pong" && response[1].(bool) == true { - return true, nil - } else { - return false, nil - } -} - -func (wac *Conn) write(messageType int, data []byte) error { - - if wac == nil || wac.ws == nil { - return ErrInvalidWebsocket - } - - wac.ws.Lock() - err := wac.ws.conn.WriteMessage(messageType, data) - wac.ws.Unlock() - - if err != nil { - return errors.Wrap(err, "error writing to websocket") - } - - return nil -} - -func (wac *Conn) encryptBinaryMessage(node binary.Node) (data []byte, err error) { - b, err := binary.Marshal(node) - if err != nil { - return nil, errors.Wrap(err, "binary node marshal failed") - } - - cipher, err := cbc.Encrypt(wac.session.EncKey, nil, b) - if err != nil { - return nil, errors.Wrap(err, "encrypt failed") - } - - h := hmac.New(sha256.New, wac.session.MacKey) - h.Write(cipher) - hash := h.Sum(nil) - - data = append(data, hash[:32]...) - data = append(data, cipher...) - - return data, nil -} |