// Copyright 2012 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// Sync protocol datatype extension for password data.

// If you change or add any fields in this file, update proto_visitors.h and
// potentially proto_enum_conversions.{h, cc}.

// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.31.0
// 	protoc        v3.6.1
// source: password_specifics.proto

package sync_pb

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)
)

// The different types of the saved credential.
type PasswordSpecificsData_Scheme int32

const (
	// SCHEME_HTML, the credential represents either a parsed HTML form, or an
	// android credential or a password saved through Credential Management API
	// (https://w3c.github.io/webappsec/specs/credentialmanagement/).
	PasswordSpecificsData_SCHEME_HTML PasswordSpecificsData_Scheme = 0
	// SCHEME_BASIC, basic access http authentication.
	PasswordSpecificsData_SCHEME_BASIC PasswordSpecificsData_Scheme = 1
	// SCHEME_DIGEST, digest access authentication.
	PasswordSpecificsData_SCHEME_DIGEST PasswordSpecificsData_Scheme = 2
	// SCHEME_OTHER, another proxy access authentication.
	PasswordSpecificsData_SCHEME_OTHER PasswordSpecificsData_Scheme = 3
	// USERNAME_ONLY, partial credentials saved on Android that contain only
	// username and miss the password.
	PasswordSpecificsData_USERNAME_ONLY PasswordSpecificsData_Scheme = 4
)

// Enum value maps for PasswordSpecificsData_Scheme.
var (
	PasswordSpecificsData_Scheme_name = map[int32]string{
		0: "SCHEME_HTML",
		1: "SCHEME_BASIC",
		2: "SCHEME_DIGEST",
		3: "SCHEME_OTHER",
		4: "USERNAME_ONLY",
	}
	PasswordSpecificsData_Scheme_value = map[string]int32{
		"SCHEME_HTML":   0,
		"SCHEME_BASIC":  1,
		"SCHEME_DIGEST": 2,
		"SCHEME_OTHER":  3,
		"USERNAME_ONLY": 4,
	}
)

func (x PasswordSpecificsData_Scheme) Enum() *PasswordSpecificsData_Scheme {
	p := new(PasswordSpecificsData_Scheme)
	*p = x
	return p
}

func (x PasswordSpecificsData_Scheme) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (PasswordSpecificsData_Scheme) Descriptor() protoreflect.EnumDescriptor {
	return file_password_specifics_proto_enumTypes[0].Descriptor()
}

func (PasswordSpecificsData_Scheme) Type() protoreflect.EnumType {
	return &file_password_specifics_proto_enumTypes[0]
}

func (x PasswordSpecificsData_Scheme) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Do not use.
func (x *PasswordSpecificsData_Scheme) UnmarshalJSON(b []byte) error {
	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
	if err != nil {
		return err
	}
	*x = PasswordSpecificsData_Scheme(num)
	return nil
}

// Deprecated: Use PasswordSpecificsData_Scheme.Descriptor instead.
func (PasswordSpecificsData_Scheme) EnumDescriptor() ([]byte, []int) {
	return file_password_specifics_proto_rawDescGZIP(), []int{1, 0}
}

// All the strings are encoded with UTF-8. URLs are encoded in Punycode.
type PasswordIssues struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	LeakedPasswordIssue  *PasswordIssues_PasswordIssue `protobuf:"bytes,1,opt,name=leaked_password_issue,json=leakedPasswordIssue" json:"leaked_password_issue,omitempty"`
	ReusedPasswordIssue  *PasswordIssues_PasswordIssue `protobuf:"bytes,2,opt,name=reused_password_issue,json=reusedPasswordIssue" json:"reused_password_issue,omitempty"`
	WeakPasswordIssue    *PasswordIssues_PasswordIssue `protobuf:"bytes,3,opt,name=weak_password_issue,json=weakPasswordIssue" json:"weak_password_issue,omitempty"`
	PhishedPasswordIssue *PasswordIssues_PasswordIssue `protobuf:"bytes,4,opt,name=phished_password_issue,json=phishedPasswordIssue" json:"phished_password_issue,omitempty"`
}

func (x *PasswordIssues) Reset() {
	*x = PasswordIssues{}
	if protoimpl.UnsafeEnabled {
		mi := &file_password_specifics_proto_msgTypes[0]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *PasswordIssues) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PasswordIssues) ProtoMessage() {}

func (x *PasswordIssues) ProtoReflect() protoreflect.Message {
	mi := &file_password_specifics_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 PasswordIssues.ProtoReflect.Descriptor instead.
func (*PasswordIssues) Descriptor() ([]byte, []int) {
	return file_password_specifics_proto_rawDescGZIP(), []int{0}
}

func (x *PasswordIssues) GetLeakedPasswordIssue() *PasswordIssues_PasswordIssue {
	if x != nil {
		return x.LeakedPasswordIssue
	}
	return nil
}

func (x *PasswordIssues) GetReusedPasswordIssue() *PasswordIssues_PasswordIssue {
	if x != nil {
		return x.ReusedPasswordIssue
	}
	return nil
}

func (x *PasswordIssues) GetWeakPasswordIssue() *PasswordIssues_PasswordIssue {
	if x != nil {
		return x.WeakPasswordIssue
	}
	return nil
}

func (x *PasswordIssues) GetPhishedPasswordIssue() *PasswordIssues_PasswordIssue {
	if x != nil {
		return x.PhishedPasswordIssue
	}
	return nil
}

type PasswordSpecificsData struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// See the enum above.
	Scheme *int32 `protobuf:"varint,1,opt,name=scheme" json:"scheme,omitempty"`
	// Signon realm stores information on where the saved password was stored, and
	// where it's supposed to be filled again.
	//
	// It can take various formats depending on the exact circumstances where it
	// was recorded. Note that the format is *not* guaranteed to be a valid URL or
	// URI:
	//
	//  * For parsed web forms and normal passwords saved through Credential
	//  Manager
	//    API: <http-scheme>://<url-host>[:<url-port>]/
	//
	//    where
	//      <http-scheme> is one of "http" or "https"
	//      <url-host> is the host for which the password was stored
	//      <url-port> is the option port on the host
	//    The signon realm is a valid URL in this case with an empty path.
	//    Examples:
	//      http://www.example.com/
	//      https://127.0.0.1/
	//      http://www.google.com:8080/
	//      http://192.168.1.254/
	//      https://accounts.google.com/
	//
	//  * For Android apps saved through Autofill with Google:
	//      android://<hash-of-cert>@<package-name>/
	//    where
	//      <hash-of-cert> is the base64 encoded SHA512 of the app's public
	//      certificate <package-name> is the app's package name
	//    Examples:
	//      android://kCyQDzpaoAX2gs-1zdGPKNAeICb8LzRFOxa4NCq0jO8c8d_NFS_q-Y35bU3Nq3GmFV2lLurmNvIZa6YPYZwmWg==@com.pinterest/
	//      android://mNUCvTnoWBkzIhSSkVj-uzAdK42YagmCmyUtPoC6JPmYAN3wKpmTdIRsdJtz6pzNBye8XL7nBbEcx-y9CJeo9A==@com.twitter.android.lite/
	//
	//  * For federated credentials:
	//      federation://<origin_host>/<federation_host>
	//    where
	//      <origin_host> is the host for which the login information was stored
	//      <federation_host> is the host of the federation provider that was
	//        used to sign in
	//    Examples:
	//      federation://www.example.com/accounts.google.com
	//      federation://uk.trustpilot.com/www.facebook.com
	//
	//  * For proxy auth:
	//      <proxy-host>[:<proxy_port>]/<auth-realm>
	//    where
	//      <proxy-host> is the host of the proxy for which the password was
	//      stored
	//      <proxy-port> is the port of the proxy
	//      <auth-realm> is a string provided by the proxy during authentication.
	//      It can contain spaces.
	//    Examples:
	//      proxy2.eq.edu.au:80/MISldap
	//      proxy.det.nsw.edu.au:8080/NSW Department of Education
	//      10.47.2.250:3128/Squid Proxy Server CPUT
	//      default.go2https.com:443/(******Get password from vpnso.com/account/
	//      *****)
	//
	//  * For HTTP basic auth:
	//      <http-scheme>://<url-host>[:<url-port>]/<auth-realm>
	//    where
	//      <http-scheme> is one of "http" or "https"
	//      <url-host> is the host for which the password was stored
	//      <url-port> is the option port on the host
	//      <auth-realm> is a string provided by the host during authentication.
	//      It can contain spaces.
	//    Examples:
	//      http://192.168.1.1/Broadband Router
	//      http://192.168.0.1/TP-LINK Wireless N Router WR841N
	//      http://192.168.1.1/index.htm
	//      https://www.edge.asic.gov.au/ASIC eBusiness
	SignonRealm *string `protobuf:"bytes,2,opt,name=signon_realm,json=signonRealm" json:"signon_realm,omitempty"`
	// For parsed web forms and Credential Management API:
	//     url-scheme://url-host[:url-port]/path
	// For Android: "android://<hash of cert>@<package name>/"
	// For proxy/HTTP auth: url-scheme://url-host[:url-port]/path
	Origin *string `protobuf:"bytes,3,opt,name=origin" json:"origin,omitempty"`
	// Only for web-parsed forms - the action target of the form:
	//     url-scheme://url-host[:url-port]/path
	Action *string `protobuf:"bytes,4,opt,name=action" json:"action,omitempty"`
	// Only for web-parsed forms - the name of the element containing username.
	UsernameElement *string `protobuf:"bytes,5,opt,name=username_element,json=usernameElement" json:"username_element,omitempty"`
	// For all: the username.
	// For blacklisted forms: <empty>.
	UsernameValue *string `protobuf:"bytes,6,opt,name=username_value,json=usernameValue" json:"username_value,omitempty"`
	// Only for web-parsed forms - the name of the element containing password.
	PasswordElement *string `protobuf:"bytes,7,opt,name=password_element,json=passwordElement" json:"password_element,omitempty"`
	// For all: the password.
	// For federated logins and blacklisted forms: <empty>
	PasswordValue *string `protobuf:"bytes,8,opt,name=password_value,json=passwordValue" json:"password_value,omitempty"`
	// Deprecated: http://crbug.com/413020
	// True if the credential was saved for a HTTPS session with a valid SSL cert.
	// Ignored for Android apps.
	//
	// Deprecated: Marked as deprecated in password_specifics.proto.
	SslValid *bool `protobuf:"varint,9,opt,name=ssl_valid,json=sslValid" json:"ssl_valid,omitempty"`
	// True for the last credential used for logging in on a given site.
	// Deprecated in M81.
	//
	// Deprecated: Marked as deprecated in password_specifics.proto.
	Preferred *bool `protobuf:"varint,10,opt,name=preferred" json:"preferred,omitempty"`
	// Time when the credential was created. Amount of microseconds since 1601.
	DateCreated *int64 `protobuf:"varint,11,opt,name=date_created,json=dateCreated" json:"date_created,omitempty"`
	// True, if user chose permanently not to save the credentials for the form.
	Blacklisted *bool `protobuf:"varint,12,opt,name=blacklisted" json:"blacklisted,omitempty"`
	// kFormSubmission(0), user manually filled the username and the password
	// in the form.
	// kGenerated(1), the credential was auto generated.
	// kApi(2), the credential was generated from Credential Management API.
	// kManuallyAdded(3), user manually created the password credential
	// via Settings.
	// kImported(4), the credential was imported using the import flow.
	// kReceivedViaSharing(5), the credential has been received via the password
	// sharing feature.
	Type *int32 `protobuf:"varint,13,opt,name=type" json:"type,omitempty"`
	// Number of times this login was used for logging in using an HTML form.
	// Chrome uses this field to distinguish log-in and sign-up forms.
	TimesUsed *int32 `protobuf:"varint,14,opt,name=times_used,json=timesUsed" json:"times_used,omitempty"`
	// A human readable name of the account holder. Set by CredentialManager API
	// and Android.
	DisplayName *string `protobuf:"bytes,15,opt,name=display_name,json=displayName" json:"display_name,omitempty"`
	// A URL of the avatar for the credential. Set by CredentialManager API and
	// Android.
	AvatarUrl *string `protobuf:"bytes,16,opt,name=avatar_url,json=avatarUrl" json:"avatar_url,omitempty"`
	// A URL of the IdP used to verify the credential. Set by Credential Manager
	// API and Android.
	FederationUrl *string `protobuf:"bytes,17,opt,name=federation_url,json=federationUrl" json:"federation_url,omitempty"`
	// Time when the credential was last used. This covers *successful* logins to
	// the website, and explicit updates to the password. It does *not* cover if
	// the password just gets filled but not actually submitted, or if the login
	// failed.
	// Note that password consumers other than Chrome (e.g. Google Play Services)
	// might not update this at all.
	// Amount of microseconds since 1601, aka Windows epoch.
	DateLastUsed *int64 `protobuf:"varint,18,opt,name=date_last_used,json=dateLastUsed" json:"date_last_used,omitempty"`
	// Set if an issue was detected that puts this password at risk. All the
	// clients are expected to clear the field when the password value is updated.
	// 'reused' part can be additionally reset when the analysis on the entire
	// password store is completed.
	PasswordIssues *PasswordIssues `protobuf:"bytes,19,opt,name=password_issues,json=passwordIssues" json:"password_issues,omitempty"`
	// Time when the |password_value| was last modified. For new credentials it
	// should be set to |date_created|. For subsequent updates the timestamp is
	// changed if and only if the new password value was saved.
	// Number of microseconds since Windows epoch (1601).
	DatePasswordModifiedWindowsEpochMicros *int64 `protobuf:"varint,20,opt,name=date_password_modified_windows_epoch_micros,json=datePasswordModifiedWindowsEpochMicros" json:"date_password_modified_windows_epoch_micros,omitempty"`
	// Set of extra notes that the user attached to the password. The presence of
	// this field, even with an empty Notes message, becomes the authoritative
	// value for notes and would disregard whatever `encrypted_notes_backup`
	// contains.
	Notes *PasswordSpecificsData_Notes `protobuf:"bytes,22,opt,name=notes" json:"notes,omitempty"`
	// For credentials that have been shared by another user, this field captures
	// the sender email. It's empty for credentials that weren't received via
	// password sharing feature.
	SenderEmail *string `protobuf:"bytes,23,opt,name=sender_email,json=senderEmail" json:"sender_email,omitempty"`
	// Similar to `sender_email` but for the sender name.
	SenderName *string `protobuf:"bytes,24,opt,name=sender_name,json=senderName" json:"sender_name,omitempty"`
	// The timestamp when the password was received via sharing feature from
	// another user.
	DateReceivedWindowsEpochMicros *int64 `protobuf:"varint,25,opt,name=date_received_windows_epoch_micros,json=dateReceivedWindowsEpochMicros" json:"date_received_windows_epoch_micros,omitempty"`
	// Whether the user has been already notified that they received this password
	// from another user via the password sharing feature. This is synced to avoid
	// showing the notification on multiple devices.
	SharingNotificationDisplayed *bool `protobuf:"varint,26,opt,name=sharing_notification_displayed,json=sharingNotificationDisplayed" json:"sharing_notification_displayed,omitempty"`
	// Similar to `sender_email` but for the url of the sender profile image.
	SenderProfileImageUrl *string `protobuf:"bytes,27,opt,name=sender_profile_image_url,json=senderProfileImageUrl" json:"sender_profile_image_url,omitempty"`
}

func (x *PasswordSpecificsData) Reset() {
	*x = PasswordSpecificsData{}
	if protoimpl.UnsafeEnabled {
		mi := &file_password_specifics_proto_msgTypes[1]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *PasswordSpecificsData) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PasswordSpecificsData) ProtoMessage() {}

func (x *PasswordSpecificsData) ProtoReflect() protoreflect.Message {
	mi := &file_password_specifics_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 PasswordSpecificsData.ProtoReflect.Descriptor instead.
func (*PasswordSpecificsData) Descriptor() ([]byte, []int) {
	return file_password_specifics_proto_rawDescGZIP(), []int{1}
}

func (x *PasswordSpecificsData) GetScheme() int32 {
	if x != nil && x.Scheme != nil {
		return *x.Scheme
	}
	return 0
}

func (x *PasswordSpecificsData) GetSignonRealm() string {
	if x != nil && x.SignonRealm != nil {
		return *x.SignonRealm
	}
	return ""
}

func (x *PasswordSpecificsData) GetOrigin() string {
	if x != nil && x.Origin != nil {
		return *x.Origin
	}
	return ""
}

func (x *PasswordSpecificsData) GetAction() string {
	if x != nil && x.Action != nil {
		return *x.Action
	}
	return ""
}

func (x *PasswordSpecificsData) GetUsernameElement() string {
	if x != nil && x.UsernameElement != nil {
		return *x.UsernameElement
	}
	return ""
}

func (x *PasswordSpecificsData) GetUsernameValue() string {
	if x != nil && x.UsernameValue != nil {
		return *x.UsernameValue
	}
	return ""
}

func (x *PasswordSpecificsData) GetPasswordElement() string {
	if x != nil && x.PasswordElement != nil {
		return *x.PasswordElement
	}
	return ""
}

func (x *PasswordSpecificsData) GetPasswordValue() string {
	if x != nil && x.PasswordValue != nil {
		return *x.PasswordValue
	}
	return ""
}

// Deprecated: Marked as deprecated in password_specifics.proto.
func (x *PasswordSpecificsData) GetSslValid() bool {
	if x != nil && x.SslValid != nil {
		return *x.SslValid
	}
	return false
}

// Deprecated: Marked as deprecated in password_specifics.proto.
func (x *PasswordSpecificsData) GetPreferred() bool {
	if x != nil && x.Preferred != nil {
		return *x.Preferred
	}
	return false
}

func (x *PasswordSpecificsData) GetDateCreated() int64 {
	if x != nil && x.DateCreated != nil {
		return *x.DateCreated
	}
	return 0
}

func (x *PasswordSpecificsData) GetBlacklisted() bool {
	if x != nil && x.Blacklisted != nil {
		return *x.Blacklisted
	}
	return false
}

func (x *PasswordSpecificsData) GetType() int32 {
	if x != nil && x.Type != nil {
		return *x.Type
	}
	return 0
}

func (x *PasswordSpecificsData) GetTimesUsed() int32 {
	if x != nil && x.TimesUsed != nil {
		return *x.TimesUsed
	}
	return 0
}

func (x *PasswordSpecificsData) GetDisplayName() string {
	if x != nil && x.DisplayName != nil {
		return *x.DisplayName
	}
	return ""
}

func (x *PasswordSpecificsData) GetAvatarUrl() string {
	if x != nil && x.AvatarUrl != nil {
		return *x.AvatarUrl
	}
	return ""
}

func (x *PasswordSpecificsData) GetFederationUrl() string {
	if x != nil && x.FederationUrl != nil {
		return *x.FederationUrl
	}
	return ""
}

func (x *PasswordSpecificsData) GetDateLastUsed() int64 {
	if x != nil && x.DateLastUsed != nil {
		return *x.DateLastUsed
	}
	return 0
}

func (x *PasswordSpecificsData) GetPasswordIssues() *PasswordIssues {
	if x != nil {
		return x.PasswordIssues
	}
	return nil
}

func (x *PasswordSpecificsData) GetDatePasswordModifiedWindowsEpochMicros() int64 {
	if x != nil && x.DatePasswordModifiedWindowsEpochMicros != nil {
		return *x.DatePasswordModifiedWindowsEpochMicros
	}
	return 0
}

func (x *PasswordSpecificsData) GetNotes() *PasswordSpecificsData_Notes {
	if x != nil {
		return x.Notes
	}
	return nil
}

func (x *PasswordSpecificsData) GetSenderEmail() string {
	if x != nil && x.SenderEmail != nil {
		return *x.SenderEmail
	}
	return ""
}

func (x *PasswordSpecificsData) GetSenderName() string {
	if x != nil && x.SenderName != nil {
		return *x.SenderName
	}
	return ""
}

func (x *PasswordSpecificsData) GetDateReceivedWindowsEpochMicros() int64 {
	if x != nil && x.DateReceivedWindowsEpochMicros != nil {
		return *x.DateReceivedWindowsEpochMicros
	}
	return 0
}

func (x *PasswordSpecificsData) GetSharingNotificationDisplayed() bool {
	if x != nil && x.SharingNotificationDisplayed != nil {
		return *x.SharingNotificationDisplayed
	}
	return false
}

func (x *PasswordSpecificsData) GetSenderProfileImageUrl() string {
	if x != nil && x.SenderProfileImageUrl != nil {
		return *x.SenderProfileImageUrl
	}
	return ""
}

// Contains the password specifics metadata which simplifies its lookup.
type PasswordSpecificsMetadata struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The signon realm for the credential. For more details, see the
	// `signon_realm` field in PasswordSpecificsData.
	Url *string `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"`
	// True, if user chose permanently not to save the credentials for the form.
	// Introduced in M82. Copy from PasswordSpecificsData.blacklisted.
	Blacklisted *bool `protobuf:"varint,2,opt,name=blacklisted" json:"blacklisted,omitempty"`
	// Copy from PasswordSpecificsData.date_last_used.
	// Introduced in M112.
	DateLastUsedWindowsEpochMicros *int64 `protobuf:"varint,3,opt,name=date_last_used_windows_epoch_micros,json=dateLastUsedWindowsEpochMicros" json:"date_last_used_windows_epoch_micros,omitempty"`
	// Copy from PasswordSpecificsData.password_issues. Introduced in M114.
	PasswordIssues *PasswordIssues `protobuf:"bytes,4,opt,name=password_issues,json=passwordIssues" json:"password_issues,omitempty"`
	// Copy from PasswordSpecificsData.type. Introduced in M119.
	Type *int32 `protobuf:"varint,13,opt,name=type" json:"type,omitempty"`
}

func (x *PasswordSpecificsMetadata) Reset() {
	*x = PasswordSpecificsMetadata{}
	if protoimpl.UnsafeEnabled {
		mi := &file_password_specifics_proto_msgTypes[2]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *PasswordSpecificsMetadata) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PasswordSpecificsMetadata) ProtoMessage() {}

func (x *PasswordSpecificsMetadata) ProtoReflect() protoreflect.Message {
	mi := &file_password_specifics_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 PasswordSpecificsMetadata.ProtoReflect.Descriptor instead.
func (*PasswordSpecificsMetadata) Descriptor() ([]byte, []int) {
	return file_password_specifics_proto_rawDescGZIP(), []int{2}
}

func (x *PasswordSpecificsMetadata) GetUrl() string {
	if x != nil && x.Url != nil {
		return *x.Url
	}
	return ""
}

func (x *PasswordSpecificsMetadata) GetBlacklisted() bool {
	if x != nil && x.Blacklisted != nil {
		return *x.Blacklisted
	}
	return false
}

func (x *PasswordSpecificsMetadata) GetDateLastUsedWindowsEpochMicros() int64 {
	if x != nil && x.DateLastUsedWindowsEpochMicros != nil {
		return *x.DateLastUsedWindowsEpochMicros
	}
	return 0
}

func (x *PasswordSpecificsMetadata) GetPasswordIssues() *PasswordIssues {
	if x != nil {
		return x.PasswordIssues
	}
	return nil
}

func (x *PasswordSpecificsMetadata) GetType() int32 {
	if x != nil && x.Type != nil {
		return *x.Type
	}
	return 0
}

// Properties of password sync objects.
type PasswordSpecifics struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The actual password data. Contains an encrypted PasswordSpecificsData
	// message.
	Encrypted *EncryptedData `protobuf:"bytes,1,opt,name=encrypted" json:"encrypted,omitempty"`
	// An unsynced field for use internally on the client. This field should
	// never be set in any network-based communications because it contains
	// unencrypted material.
	ClientOnlyEncryptedData *PasswordSpecificsData `protobuf:"bytes,2,opt,name=client_only_encrypted_data,json=clientOnlyEncryptedData" json:"client_only_encrypted_data,omitempty"`
	// Password related metadata, which is sent to the server side. The field
	// should never be set for full encryption users. If encryption is enabled,
	// this field must be cleared.
	UnencryptedMetadata *PasswordSpecificsMetadata `protobuf:"bytes,3,opt,name=unencrypted_metadata,json=unencryptedMetadata" json:"unencrypted_metadata,omitempty"`
	// An encrypted backup of the notes field inside the PasswordSpecificsData.
	// The Sync server preserves the contents of this field across commits from
	// legacy clients that don't set this field. It is the responsibility of Sync
	// clients to populate the contents of PasswordSpecificsData notes fields
	// using the contents of this field. This should be deprecated together with
	// the logic for preserving it on the server when clients without support for
	// the |notes| field are no longer allowed by the server (below support
	// version horizon).
	//
	// Encryption key considerations:
	// a) For commits, the client must use the same key for both encrypted blobs.
	// b) For handling getupdates, the two keys may NOT necessarily match the
	//    encryption key used, as in theory the new blob could be "behind" if key
	//    rotation took place. As of today, it is safe to assume that if
	//    |encrypted| is decryptable by a client, then |encrypted_notes_backup|
	//    must be decryptable too (i.e. the Nigori keybag should include older
	//    versions of the key). But not the other way round.
	//
	// If both `encrypted_notes_backup` and the `notes` in `encrypted` are
	// populated, the one in notes is considered the authoritative value.
	EncryptedNotesBackup *EncryptedData `protobuf:"bytes,5,opt,name=encrypted_notes_backup,json=encryptedNotesBackup" json:"encrypted_notes_backup,omitempty"`
}

func (x *PasswordSpecifics) Reset() {
	*x = PasswordSpecifics{}
	if protoimpl.UnsafeEnabled {
		mi := &file_password_specifics_proto_msgTypes[3]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *PasswordSpecifics) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PasswordSpecifics) ProtoMessage() {}

func (x *PasswordSpecifics) ProtoReflect() protoreflect.Message {
	mi := &file_password_specifics_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 PasswordSpecifics.ProtoReflect.Descriptor instead.
func (*PasswordSpecifics) Descriptor() ([]byte, []int) {
	return file_password_specifics_proto_rawDescGZIP(), []int{3}
}

func (x *PasswordSpecifics) GetEncrypted() *EncryptedData {
	if x != nil {
		return x.Encrypted
	}
	return nil
}

func (x *PasswordSpecifics) GetClientOnlyEncryptedData() *PasswordSpecificsData {
	if x != nil {
		return x.ClientOnlyEncryptedData
	}
	return nil
}

func (x *PasswordSpecifics) GetUnencryptedMetadata() *PasswordSpecificsMetadata {
	if x != nil {
		return x.UnencryptedMetadata
	}
	return nil
}

func (x *PasswordSpecifics) GetEncryptedNotesBackup() *EncryptedData {
	if x != nil {
		return x.EncryptedNotesBackup
	}
	return nil
}

type PasswordIssues_PasswordIssue struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Timestamp set by a client detecting the issue for the first time.
	// Number of microseconds since Windows epoch (1601).
	// This can be unset even if is_muted is set in a few cases in
	// storage (for a time mutes were written without setting this
	// field - fixed starting 2021-11-10).
	DateFirstDetectionWindowsEpochMicros *uint64 `protobuf:"varint,1,opt,name=date_first_detection_windows_epoch_micros,json=dateFirstDetectionWindowsEpochMicros" json:"date_first_detection_windows_epoch_micros,omitempty"`
	// Whether the issue was muted by user.
	IsMuted *bool `protobuf:"varint,2,opt,name=is_muted,json=isMuted" json:"is_muted,omitempty"`
	// Whether the backend should notify the user about this issue.
	// Set to true if the user hasn't already seen a client notification for
	// this issue (e.g. a leak detection prompt in Chrome). The backend sending
	// notifications does not reset this field. All other sources can write this
	// in both `PasswordSpecificsData` and `PasswordSpecificsMetadata` and do
	// so.
	TriggerNotificationFromBackendOnDetection *bool `protobuf:"varint,3,opt,name=trigger_notification_from_backend_on_detection,json=triggerNotificationFromBackendOnDetection" json:"trigger_notification_from_backend_on_detection,omitempty"`
}

func (x *PasswordIssues_PasswordIssue) Reset() {
	*x = PasswordIssues_PasswordIssue{}
	if protoimpl.UnsafeEnabled {
		mi := &file_password_specifics_proto_msgTypes[4]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *PasswordIssues_PasswordIssue) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PasswordIssues_PasswordIssue) ProtoMessage() {}

func (x *PasswordIssues_PasswordIssue) ProtoReflect() protoreflect.Message {
	mi := &file_password_specifics_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 PasswordIssues_PasswordIssue.ProtoReflect.Descriptor instead.
func (*PasswordIssues_PasswordIssue) Descriptor() ([]byte, []int) {
	return file_password_specifics_proto_rawDescGZIP(), []int{0, 0}
}

func (x *PasswordIssues_PasswordIssue) GetDateFirstDetectionWindowsEpochMicros() uint64 {
	if x != nil && x.DateFirstDetectionWindowsEpochMicros != nil {
		return *x.DateFirstDetectionWindowsEpochMicros
	}
	return 0
}

func (x *PasswordIssues_PasswordIssue) GetIsMuted() bool {
	if x != nil && x.IsMuted != nil {
		return *x.IsMuted
	}
	return false
}

func (x *PasswordIssues_PasswordIssue) GetTriggerNotificationFromBackendOnDetection() bool {
	if x != nil && x.TriggerNotificationFromBackendOnDetection != nil {
		return *x.TriggerNotificationFromBackendOnDetection
	}
	return false
}

type PasswordSpecificsData_Notes struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Note []*PasswordSpecificsData_Notes_Note `protobuf:"bytes,1,rep,name=note" json:"note,omitempty"`
}

func (x *PasswordSpecificsData_Notes) Reset() {
	*x = PasswordSpecificsData_Notes{}
	if protoimpl.UnsafeEnabled {
		mi := &file_password_specifics_proto_msgTypes[5]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *PasswordSpecificsData_Notes) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PasswordSpecificsData_Notes) ProtoMessage() {}

func (x *PasswordSpecificsData_Notes) ProtoReflect() protoreflect.Message {
	mi := &file_password_specifics_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 PasswordSpecificsData_Notes.ProtoReflect.Descriptor instead.
func (*PasswordSpecificsData_Notes) Descriptor() ([]byte, []int) {
	return file_password_specifics_proto_rawDescGZIP(), []int{1, 0}
}

func (x *PasswordSpecificsData_Notes) GetNote() []*PasswordSpecificsData_Notes_Note {
	if x != nil {
		return x.Note
	}
	return nil
}

type PasswordSpecificsData_Notes_Note struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The display name must be unique within the scope of a password.
	UniqueDisplayName *string `protobuf:"bytes,1,opt,name=unique_display_name,json=uniqueDisplayName" json:"unique_display_name,omitempty"`
	// The user-defined value of the note.
	Value *string `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"`
	// The creation time of the note. Number of microseconds since 1601.
	DateCreatedWindowsEpochMicros *int64 `protobuf:"varint,3,opt,name=date_created_windows_epoch_micros,json=dateCreatedWindowsEpochMicros" json:"date_created_windows_epoch_micros,omitempty"`
	// Whether the value of the note is not displayed in plain text by
	// default.
	HideByDefault *bool `protobuf:"varint,4,opt,name=hide_by_default,json=hideByDefault" json:"hide_by_default,omitempty"`
}

func (x *PasswordSpecificsData_Notes_Note) Reset() {
	*x = PasswordSpecificsData_Notes_Note{}
	if protoimpl.UnsafeEnabled {
		mi := &file_password_specifics_proto_msgTypes[6]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *PasswordSpecificsData_Notes_Note) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PasswordSpecificsData_Notes_Note) ProtoMessage() {}

func (x *PasswordSpecificsData_Notes_Note) ProtoReflect() protoreflect.Message {
	mi := &file_password_specifics_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 PasswordSpecificsData_Notes_Note.ProtoReflect.Descriptor instead.
func (*PasswordSpecificsData_Notes_Note) Descriptor() ([]byte, []int) {
	return file_password_specifics_proto_rawDescGZIP(), []int{1, 0, 0}
}

func (x *PasswordSpecificsData_Notes_Note) GetUniqueDisplayName() string {
	if x != nil && x.UniqueDisplayName != nil {
		return *x.UniqueDisplayName
	}
	return ""
}

func (x *PasswordSpecificsData_Notes_Note) GetValue() string {
	if x != nil && x.Value != nil {
		return *x.Value
	}
	return ""
}

func (x *PasswordSpecificsData_Notes_Note) GetDateCreatedWindowsEpochMicros() int64 {
	if x != nil && x.DateCreatedWindowsEpochMicros != nil {
		return *x.DateCreatedWindowsEpochMicros
	}
	return 0
}

func (x *PasswordSpecificsData_Notes_Note) GetHideByDefault() bool {
	if x != nil && x.HideByDefault != nil {
		return *x.HideByDefault
	}
	return false
}

var File_password_specifics_proto protoreflect.FileDescriptor

var file_password_specifics_proto_rawDesc = []byte{
	0x0a, 0x18, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69,
	0x66, 0x69, 0x63, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x07, 0x73, 0x79, 0x6e, 0x63,
	0x5f, 0x70, 0x62, 0x1a, 0x10, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e,
	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe3, 0x04, 0x0a, 0x0e, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f,
	0x72, 0x64, 0x49, 0x73, 0x73, 0x75, 0x65, 0x73, 0x12, 0x59, 0x0a, 0x15, 0x6c, 0x65, 0x61, 0x6b,
	0x65, 0x64, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x5f, 0x69, 0x73, 0x73, 0x75,
	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x70,
	0x62, 0x2e, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x49, 0x73, 0x73, 0x75, 0x65, 0x73,
	0x2e, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x13,
	0x6c, 0x65, 0x61, 0x6b, 0x65, 0x64, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x49, 0x73,
	0x73, 0x75, 0x65, 0x12, 0x59, 0x0a, 0x15, 0x72, 0x65, 0x75, 0x73, 0x65, 0x64, 0x5f, 0x70, 0x61,
	0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x5f, 0x69, 0x73, 0x73, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x70, 0x62, 0x2e, 0x50, 0x61, 0x73,
	0x73, 0x77, 0x6f, 0x72, 0x64, 0x49, 0x73, 0x73, 0x75, 0x65, 0x73, 0x2e, 0x50, 0x61, 0x73, 0x73,
	0x77, 0x6f, 0x72, 0x64, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x13, 0x72, 0x65, 0x75, 0x73, 0x65,
	0x64, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x49, 0x73, 0x73, 0x75, 0x65, 0x12, 0x55,
	0x0a, 0x13, 0x77, 0x65, 0x61, 0x6b, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x5f,
	0x69, 0x73, 0x73, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x79,
	0x6e, 0x63, 0x5f, 0x70, 0x62, 0x2e, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x49, 0x73,
	0x73, 0x75, 0x65, 0x73, 0x2e, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x49, 0x73, 0x73,
	0x75, 0x65, 0x52, 0x11, 0x77, 0x65, 0x61, 0x6b, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64,
	0x49, 0x73, 0x73, 0x75, 0x65, 0x12, 0x5b, 0x0a, 0x16, 0x70, 0x68, 0x69, 0x73, 0x68, 0x65, 0x64,
	0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x5f, 0x69, 0x73, 0x73, 0x75, 0x65, 0x18,
	0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x70, 0x62, 0x2e,
	0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x49, 0x73, 0x73, 0x75, 0x65, 0x73, 0x2e, 0x50,
	0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x14, 0x70, 0x68,
	0x69, 0x73, 0x68, 0x65, 0x64, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x49, 0x73, 0x73,
	0x75, 0x65, 0x1a, 0xe6, 0x01, 0x0a, 0x0d, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x49,
	0x73, 0x73, 0x75, 0x65, 0x12, 0x57, 0x0a, 0x29, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x66, 0x69, 0x72,
	0x73, 0x74, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x77, 0x69, 0x6e,
	0x64, 0x6f, 0x77, 0x73, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x6d, 0x69, 0x63, 0x72, 0x6f,
	0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x24, 0x64, 0x61, 0x74, 0x65, 0x46, 0x69, 0x72,
	0x73, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x69, 0x6e, 0x64, 0x6f,
	0x77, 0x73, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x12, 0x19, 0x0a,
	0x08, 0x69, 0x73, 0x5f, 0x6d, 0x75, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52,
	0x07, 0x69, 0x73, 0x4d, 0x75, 0x74, 0x65, 0x64, 0x12, 0x61, 0x0a, 0x2e, 0x74, 0x72, 0x69, 0x67,
	0x67, 0x65, 0x72, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x5f, 0x6f, 0x6e,
	0x5f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08,
	0x52, 0x29, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x72, 0x6f, 0x6d, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64,
	0x4f, 0x6e, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xcf, 0x0b, 0x0a, 0x15,
	0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63,
	0x73, 0x44, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x12, 0x21, 0x0a,
	0x0c, 0x73, 0x69, 0x67, 0x6e, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x61, 0x6c, 0x6d, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x69, 0x67, 0x6e, 0x6f, 0x6e, 0x52, 0x65, 0x61, 0x6c, 0x6d,
	0x12, 0x16, 0x0a, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69,
	0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e,
	0x12, 0x29, 0x0a, 0x10, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x65, 0x6c, 0x65,
	0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x75, 0x73, 0x65, 0x72,
	0x6e, 0x61, 0x6d, 0x65, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x75,
	0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x06, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x0d, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x56, 0x61, 0x6c,
	0x75, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x5f, 0x65,
	0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x61,
	0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x25, 0x0a,
	0x0e, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
	0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x56,
	0x61, 0x6c, 0x75, 0x65, 0x12, 0x1f, 0x0a, 0x09, 0x73, 0x73, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x69,
	0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x73, 0x73, 0x6c,
	0x56, 0x61, 0x6c, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72,
	0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x09, 0x70, 0x72,
	0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x61, 0x74, 0x65, 0x5f,
	0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x64,
	0x61, 0x74, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x62, 0x6c,
	0x61, 0x63, 0x6b, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52,
	0x0b, 0x62, 0x6c, 0x61, 0x63, 0x6b, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x12, 0x12, 0x0a, 0x04,
	0x74, 0x79, 0x70, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65,
	0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x18, 0x0e,
	0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x55, 0x73, 0x65, 0x64, 0x12,
	0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
	0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61,
	0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x5f, 0x75, 0x72, 0x6c,
	0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x55, 0x72,
	0x6c, 0x12, 0x25, 0x0a, 0x0e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f,
	0x75, 0x72, 0x6c, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x66, 0x65, 0x64, 0x65, 0x72,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x24, 0x0a, 0x0e, 0x64, 0x61, 0x74, 0x65,
	0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, 0x03,
	0x52, 0x0c, 0x64, 0x61, 0x74, 0x65, 0x4c, 0x61, 0x73, 0x74, 0x55, 0x73, 0x65, 0x64, 0x12, 0x40,
	0x0a, 0x0f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x5f, 0x69, 0x73, 0x73, 0x75, 0x65,
	0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x70,
	0x62, 0x2e, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x49, 0x73, 0x73, 0x75, 0x65, 0x73,
	0x52, 0x0e, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x49, 0x73, 0x73, 0x75, 0x65, 0x73,
	0x12, 0x5b, 0x0a, 0x2b, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72,
	0x64, 0x5f, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f,
	0x77, 0x73, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x18,
	0x14, 0x20, 0x01, 0x28, 0x03, 0x52, 0x26, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77,
	0x6f, 0x72, 0x64, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x57, 0x69, 0x6e, 0x64, 0x6f,
	0x77, 0x73, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x12, 0x3a, 0x0a,
	0x05, 0x6e, 0x6f, 0x74, 0x65, 0x73, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73,
	0x79, 0x6e, 0x63, 0x5f, 0x70, 0x62, 0x2e, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x53,
	0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x73, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x4e, 0x6f, 0x74,
	0x65, 0x73, 0x52, 0x05, 0x6e, 0x6f, 0x74, 0x65, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x6e,
	0x64, 0x65, 0x72, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x17, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x0b, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x1f, 0x0a, 0x0b,
	0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x18, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x0a, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x4a, 0x0a,
	0x22, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x5f, 0x77,
	0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x6d, 0x69, 0x63,
	0x72, 0x6f, 0x73, 0x18, 0x19, 0x20, 0x01, 0x28, 0x03, 0x52, 0x1e, 0x64, 0x61, 0x74, 0x65, 0x52,
	0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x45, 0x70,
	0x6f, 0x63, 0x68, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x12, 0x44, 0x0a, 0x1e, 0x73, 0x68, 0x61,
	0x72, 0x69, 0x6e, 0x67, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x5f, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x18, 0x1a, 0x20, 0x01, 0x28,
	0x08, 0x52, 0x1c, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69,
	0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x12,
	0x37, 0x0a, 0x18, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c,
	0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x1b, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x15, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65,
	0x49, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x72, 0x6c, 0x1a, 0x87, 0x02, 0x0a, 0x05, 0x4e, 0x6f, 0x74,
	0x65, 0x73, 0x12, 0x3d, 0x0a, 0x04, 0x6e, 0x6f, 0x74, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
	0x32, 0x29, 0x2e, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x70, 0x62, 0x2e, 0x50, 0x61, 0x73, 0x73, 0x77,
	0x6f, 0x72, 0x64, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x73, 0x44, 0x61, 0x74, 0x61,
	0x2e, 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x2e, 0x4e, 0x6f, 0x74, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x74,
	0x65, 0x1a, 0xbe, 0x01, 0x0a, 0x04, 0x4e, 0x6f, 0x74, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x75, 0x6e,
	0x69, 0x71, 0x75, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d,
	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x44,
	0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61,
	0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
	0x12, 0x48, 0x0a, 0x21, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64,
	0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x6d,
	0x69, 0x63, 0x72, 0x6f, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x1d, 0x64, 0x61, 0x74,
	0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x45,
	0x70, 0x6f, 0x63, 0x68, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x68, 0x69,
	0x64, 0x65, 0x5f, 0x62, 0x79, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x04, 0x20,
	0x01, 0x28, 0x08, 0x52, 0x0d, 0x68, 0x69, 0x64, 0x65, 0x42, 0x79, 0x44, 0x65, 0x66, 0x61, 0x75,
	0x6c, 0x74, 0x22, 0x63, 0x0a, 0x06, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x12, 0x0f, 0x0a, 0x0b,
	0x53, 0x43, 0x48, 0x45, 0x4d, 0x45, 0x5f, 0x48, 0x54, 0x4d, 0x4c, 0x10, 0x00, 0x12, 0x10, 0x0a,
	0x0c, 0x53, 0x43, 0x48, 0x45, 0x4d, 0x45, 0x5f, 0x42, 0x41, 0x53, 0x49, 0x43, 0x10, 0x01, 0x12,
	0x11, 0x0a, 0x0d, 0x53, 0x43, 0x48, 0x45, 0x4d, 0x45, 0x5f, 0x44, 0x49, 0x47, 0x45, 0x53, 0x54,
	0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x43, 0x48, 0x45, 0x4d, 0x45, 0x5f, 0x4f, 0x54, 0x48,
	0x45, 0x52, 0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x55, 0x53, 0x45, 0x52, 0x4e, 0x41, 0x4d, 0x45,
	0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x15, 0x10, 0x16, 0x22, 0xf2, 0x01,
	0x0a, 0x19, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66,
	0x69, 0x63, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x75,
	0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x20, 0x0a,
	0x0b, 0x62, 0x6c, 0x61, 0x63, 0x6b, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x08, 0x52, 0x0b, 0x62, 0x6c, 0x61, 0x63, 0x6b, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x12,
	0x4b, 0x0a, 0x23, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65,
	0x64, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f,
	0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x1e, 0x64, 0x61,
	0x74, 0x65, 0x4c, 0x61, 0x73, 0x74, 0x55, 0x73, 0x65, 0x64, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77,
	0x73, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x12, 0x40, 0x0a, 0x0f,
	0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x5f, 0x69, 0x73, 0x73, 0x75, 0x65, 0x73, 0x18,
	0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x70, 0x62, 0x2e,
	0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x49, 0x73, 0x73, 0x75, 0x65, 0x73, 0x52, 0x0e,
	0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x49, 0x73, 0x73, 0x75, 0x65, 0x73, 0x12, 0x12,
	0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x79,
	0x70, 0x65, 0x22, 0xd1, 0x02, 0x0a, 0x11, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x53,
	0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x73, 0x12, 0x34, 0x0a, 0x09, 0x65, 0x6e, 0x63, 0x72,
	0x79, 0x70, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x79,
	0x6e, 0x63, 0x5f, 0x70, 0x62, 0x2e, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x44,
	0x61, 0x74, 0x61, 0x52, 0x09, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x12, 0x5b,
	0x0a, 0x1a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x5f, 0x65, 0x6e,
	0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x70, 0x62, 0x2e, 0x50, 0x61, 0x73,
	0x73, 0x77, 0x6f, 0x72, 0x64, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x73, 0x44, 0x61,
	0x74, 0x61, 0x52, 0x17, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4f, 0x6e, 0x6c, 0x79, 0x45, 0x6e,
	0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x12, 0x55, 0x0a, 0x14, 0x75,
	0x6e, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64,
	0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x73, 0x79, 0x6e, 0x63,
	0x5f, 0x70, 0x62, 0x2e, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x53, 0x70, 0x65, 0x63,
	0x69, 0x66, 0x69, 0x63, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x13, 0x75,
	0x6e, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61,
	0x74, 0x61, 0x12, 0x4c, 0x0a, 0x16, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x5f,
	0x6e, 0x6f, 0x74, 0x65, 0x73, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x18, 0x05, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x70, 0x62, 0x2e, 0x45, 0x6e, 0x63,
	0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x14, 0x65, 0x6e, 0x63, 0x72,
	0x79, 0x70, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70,
	0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x42, 0x36, 0x0a, 0x25, 0x6f, 0x72, 0x67, 0x2e, 0x63, 0x68,
	0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74,
	0x73, 0x2e, 0x73, 0x79, 0x6e, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x48,
	0x03, 0x50, 0x01, 0x5a, 0x09, 0x2e, 0x2f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x70, 0x62,
}

var (
	file_password_specifics_proto_rawDescOnce sync.Once
	file_password_specifics_proto_rawDescData = file_password_specifics_proto_rawDesc
)

func file_password_specifics_proto_rawDescGZIP() []byte {
	file_password_specifics_proto_rawDescOnce.Do(func() {
		file_password_specifics_proto_rawDescData = protoimpl.X.CompressGZIP(file_password_specifics_proto_rawDescData)
	})
	return file_password_specifics_proto_rawDescData
}

var file_password_specifics_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
var file_password_specifics_proto_msgTypes = make([]protoimpl.MessageInfo, 7)
var file_password_specifics_proto_goTypes = []interface{}{
	(PasswordSpecificsData_Scheme)(0),        // 0: sync_pb.PasswordSpecificsData.Scheme
	(*PasswordIssues)(nil),                   // 1: sync_pb.PasswordIssues
	(*PasswordSpecificsData)(nil),            // 2: sync_pb.PasswordSpecificsData
	(*PasswordSpecificsMetadata)(nil),        // 3: sync_pb.PasswordSpecificsMetadata
	(*PasswordSpecifics)(nil),                // 4: sync_pb.PasswordSpecifics
	(*PasswordIssues_PasswordIssue)(nil),     // 5: sync_pb.PasswordIssues.PasswordIssue
	(*PasswordSpecificsData_Notes)(nil),      // 6: sync_pb.PasswordSpecificsData.Notes
	(*PasswordSpecificsData_Notes_Note)(nil), // 7: sync_pb.PasswordSpecificsData.Notes.Note
	(*EncryptedData)(nil),                    // 8: sync_pb.EncryptedData
}
var file_password_specifics_proto_depIdxs = []int32{
	5,  // 0: sync_pb.PasswordIssues.leaked_password_issue:type_name -> sync_pb.PasswordIssues.PasswordIssue
	5,  // 1: sync_pb.PasswordIssues.reused_password_issue:type_name -> sync_pb.PasswordIssues.PasswordIssue
	5,  // 2: sync_pb.PasswordIssues.weak_password_issue:type_name -> sync_pb.PasswordIssues.PasswordIssue
	5,  // 3: sync_pb.PasswordIssues.phished_password_issue:type_name -> sync_pb.PasswordIssues.PasswordIssue
	1,  // 4: sync_pb.PasswordSpecificsData.password_issues:type_name -> sync_pb.PasswordIssues
	6,  // 5: sync_pb.PasswordSpecificsData.notes:type_name -> sync_pb.PasswordSpecificsData.Notes
	1,  // 6: sync_pb.PasswordSpecificsMetadata.password_issues:type_name -> sync_pb.PasswordIssues
	8,  // 7: sync_pb.PasswordSpecifics.encrypted:type_name -> sync_pb.EncryptedData
	2,  // 8: sync_pb.PasswordSpecifics.client_only_encrypted_data:type_name -> sync_pb.PasswordSpecificsData
	3,  // 9: sync_pb.PasswordSpecifics.unencrypted_metadata:type_name -> sync_pb.PasswordSpecificsMetadata
	8,  // 10: sync_pb.PasswordSpecifics.encrypted_notes_backup:type_name -> sync_pb.EncryptedData
	7,  // 11: sync_pb.PasswordSpecificsData.Notes.note:type_name -> sync_pb.PasswordSpecificsData.Notes.Note
	12, // [12:12] is the sub-list for method output_type
	12, // [12:12] is the sub-list for method input_type
	12, // [12:12] is the sub-list for extension type_name
	12, // [12:12] is the sub-list for extension extendee
	0,  // [0:12] is the sub-list for field type_name
}

func init() { file_password_specifics_proto_init() }
func file_password_specifics_proto_init() {
	if File_password_specifics_proto != nil {
		return
	}
	file_encryption_proto_init()
	if !protoimpl.UnsafeEnabled {
		file_password_specifics_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PasswordIssues); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_password_specifics_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PasswordSpecificsData); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_password_specifics_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PasswordSpecificsMetadata); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_password_specifics_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PasswordSpecifics); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_password_specifics_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PasswordIssues_PasswordIssue); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_password_specifics_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PasswordSpecificsData_Notes); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_password_specifics_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PasswordSpecificsData_Notes_Note); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_password_specifics_proto_rawDesc,
			NumEnums:      1,
			NumMessages:   7,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_password_specifics_proto_goTypes,
		DependencyIndexes: file_password_specifics_proto_depIdxs,
		EnumInfos:         file_password_specifics_proto_enumTypes,
		MessageInfos:      file_password_specifics_proto_msgTypes,
	}.Build()
	File_password_specifics_proto = out.File
	file_password_specifics_proto_rawDesc = nil
	file_password_specifics_proto_goTypes = nil
	file_password_specifics_proto_depIdxs = nil
}
