text:
package google_appengine_v1

import proto "github.com/gogo/protobuf/proto"
import fmt "fmt"
import math "math"
import _ "go.pedge.io/pb/gogo/google/api"
import google_protobuf1 "github.com/gogo/protobuf/types"

// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf

// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package

// Actions to take when the user is not logged in.
type AuthFailAction int32

const (
	// Not specified. `AUTH_FAIL_ACTION_REDIRECT` is assumed.
	AuthFailAction_AUTH_FAIL_ACTION_UNSPECIFIED AuthFailAction = 0
	// Redirects user to "accounts.google.com". The user is redirected back to the
	// application URL after signing in or creating an account.
	AuthFailAction_AUTH_FAIL_ACTION_REDIRECT AuthFailAction = 1
	// Rejects request with a `401` HTTP status code and an error
	// message.
	AuthFailAction_AUTH_FAIL_ACTION_UNAUTHORIZED AuthFailAction = 2
)

var AuthFailAction_name = map[int32]string{
	0: "AUTH_FAIL_ACTION_UNSPECIFIED",
	1: "AUTH_FAIL_ACTION_REDIRECT",
	2: "AUTH_FAIL_ACTION_UNAUTHORIZED",
}
var AuthFailAction_value = map[string]int32{
	"AUTH_FAIL_ACTION_UNSPECIFIED":  0,
	"AUTH_FAIL_ACTION_REDIRECT":     1,
	"AUTH_FAIL_ACTION_UNAUTHORIZED": 2,
}

func (x AuthFailAction) String() string {
	return proto.EnumName(AuthFailAction_name, int32(x))
}
func (AuthFailAction) EnumDescriptor() ([]byte, []int) { return fileDescriptorAppYaml, []int{0} }

// Methods to restrict access to a URL based on login status.
type LoginRequirement int32

const (
	// Not specified. `LOGIN_OPTIONAL` is assumed.
	LoginRequirement_LOGIN_UNSPECIFIED LoginRequirement = 0
	// Does not require that the user is signed in.
	LoginRequirement_LOGIN_OPTIONAL LoginRequirement = 1
	// If the user is not signed in, the `auth_fail_action` is taken.
	// In addition, if the user is not an administrator for the
	// application, they are given an error message regardless of
	// `auth_fail_action`. If the user is an administrator, the handler
	// proceeds.
	LoginRequirement_LOGIN_ADMIN LoginRequirement = 2
	// If the user has signed in, the handler proceeds normally. Otherwise, the
	// auth_fail_action is taken.
	LoginRequirement_LOGIN_REQUIRED LoginRequirement = 3
)

var LoginRequirement_name = map[int32]string{
	0: "LOGIN_UNSPECIFIED",
	1: "LOGIN_OPTIONAL",
	2: "LOGIN_ADMIN",
	3: "LOGIN_REQUIRED",
}
var LoginRequirement_value = map[string]int32{
	"LOGIN_UNSPECIFIED": 0,
	"LOGIN_OPTIONAL":    1,
	"LOGIN_ADMIN":       2,
	"LOGIN_REQUIRED":    3,
}

func (x LoginRequirement) String() string {
	return proto.EnumName(LoginRequirement_name, int32(x))
}
func (LoginRequirement) EnumDescriptor() ([]byte, []int) { return fileDescriptorAppYaml, []int{1} }

// Methods to enforce security (HTTPS) on a URL.
type SecurityLevel int32

const (
	// Not specified.
	SecurityLevel_SECURE_UNSPECIFIED SecurityLevel = 0
	// Both HTTP and HTTPS requests with URLs that match the handler succeed
	// without redirects. The application can examine the request to determine
	// which protocol was used, and respond accordingly.
	SecurityLevel_SECURE_DEFAULT SecurityLevel = 0
	// Requests for a URL that match this handler that use HTTPS are automatically
	// redirected to the HTTP equivalent URL.
	SecurityLevel_SECURE_NEVER SecurityLevel = 1
	// Both HTTP and HTTPS requests with URLs that match the handler succeed
	// without redirects. The application can examine the request to determine
	// which protocol was used and respond accordingly.
	SecurityLevel_SECURE_OPTIONAL SecurityLevel = 2
	// Requests for a URL that match this handler that do not use HTTPS are
	// automatically redirected to the HTTPS URL with the same path. Query
	// parameters are reserved for the redirect.
	SecurityLevel_SECURE_ALWAYS SecurityLevel = 3
)

var SecurityLevel_name = map[int32]string{
	0: "SECURE_UNSPECIFIED",
	// Duplicate value: 0: "SECURE_DEFAULT",
	1: "SECURE_NEVER",
	2: "SECURE_OPTIONAL",
	3: "SECURE_ALWAYS",
}
var SecurityLevel_value = map[string]int32{
	"SECURE_UNSPECIFIED": 0,
	"SECURE_DEFAULT":     0,
	"SECURE_NEVER":       1,
	"SECURE_OPTIONAL":    2,
	"SECURE_ALWAYS":      3,
}

func (x SecurityLevel) String() string {
	return proto.EnumName(SecurityLevel_name, int32(x))
}
func (SecurityLevel) EnumDescriptor() ([]byte, []int) { return fileDescriptorAppYaml, []int{2} }

// Error codes.
type ErrorHandler_ErrorCode int32

const (
	// Not specified. ERROR_CODE_DEFAULT is assumed.
	ErrorHandler_ERROR_CODE_UNSPECIFIED ErrorHandler_ErrorCode = 0
	// All other error types.
	ErrorHandler_ERROR_CODE_DEFAULT ErrorHandler_ErrorCode = 0
	// Application has exceeded a resource quota.
	ErrorHandler_ERROR_CODE_OVER_QUOTA ErrorHandler_ErrorCode = 1
	// Client blocked by the application's Denial of Service protection
	// configuration.
	ErrorHandler_ERROR_CODE_DOS_API_DENIAL ErrorHandler_ErrorCode = 2
	// Deadline reached before the application responds.
	ErrorHandler_ERROR_CODE_TIMEOUT ErrorHandler_ErrorCode = 3
)

var ErrorHandler_ErrorCode_name = map[int32]string{
	0: "ERROR_CODE_UNSPECIFIED",
	// Duplicate value: 0: "ERROR_CODE_DEFAULT",
	1: "ERROR_CODE_OVER_QUOTA",
	2: "ERROR_CODE_DOS_API_DENIAL",
	3: "ERROR_CODE_TIMEOUT",
}
var ErrorHandler_ErrorCode_value = map[string]int32{
	"ERROR_CODE_UNSPECIFIED":    0,
	"ERROR_CODE_DEFAULT":        0,
	"ERROR_CODE_OVER_QUOTA":     1,
	"ERROR_CODE_DOS_API_DENIAL": 2,
	"ERROR_CODE_TIMEOUT":        3,
}

func (x ErrorHandler_ErrorCode) String() string {
	return proto.EnumName(ErrorHandler_ErrorCode_name, int32(x))
}
func (ErrorHandler_ErrorCode) EnumDescriptor() ([]byte, []int) {
	return fileDescriptorAppYaml, []int{1, 0}
}

// Redirect codes.
type UrlMap_RedirectHttpResponseCode int32

const (
	// Not specified. `302` is assumed.
	UrlMap_REDIRECT_HTTP_RESPONSE_CODE_UNSPECIFIED UrlMap_RedirectHttpResponseCode = 0
	// `301 Moved Permanently` code.
	UrlMap_REDIRECT_HTTP_RESPONSE_CODE_301 UrlMap_RedirectHttpResponseCode = 1
	// `302 Moved Temporarily` code.
	UrlMap_REDIRECT_HTTP_RESPONSE_CODE_302 UrlMap_RedirectHttpResponseCode = 2
	// `303 See Other` code.
	UrlMap_REDIRECT_HTTP_RESPONSE_CODE_303 UrlMap_RedirectHttpResponseCode = 3
	// `307 Temporary Redirect` code.
	UrlMap_REDIRECT_HTTP_RESPONSE_CODE_307 UrlMap_RedirectHttpResponseCode = 4
)

var UrlMap_RedirectHttpResponseCode_name = map[int32]string{
	0: "REDIRECT_HTTP_RESPONSE_CODE_UNSPECIFIED",
	1: "REDIRECT_HTTP_RESPONSE_CODE_301",
	2: "REDIRECT_HTTP_RESPONSE_CODE_302",
	3: "REDIRECT_HTTP_RESPONSE_CODE_303",
	4: "REDIRECT_HTTP_RESPONSE_CODE_307",
}
var UrlMap_RedirectHttpResponseCode_value = map[string]int32{
	"REDIRECT_HTTP_RESPONSE_CODE_UNSPECIFIED": 0,
	"REDIRECT_HTTP_RESPONSE_CODE_301":         1,
	"REDIRECT_HTTP_RESPONSE_CODE_302":         2,
	"REDIRECT_HTTP_RESPONSE_CODE_303":         3,
	"REDIRECT_HTTP_RESPONSE_CODE_307":         4,
}

func (x UrlMap_RedirectHttpResponseCode) String() string {
	return proto.EnumName(UrlMap_RedirectHttpResponseCode_name, int32(x))
}
func (UrlMap_RedirectHttpResponseCode) EnumDescriptor() ([]byte, []int) {
	return fileDescriptorAppYaml, []int{2, 0}
}

// [Google Cloud Endpoints](https://cloud.google.com/appengine/docs/python/endpoints/)
// configuration for API handlers.
type ApiConfigHandler struct {
	// Action to take when users access resources that require
	// authentication. Defaults to `redirect`.
	AuthFailAction AuthFailAction `protobuf:"varint,1,opt,name=auth_fail_action,json=authFailAction,proto3,enum=google.appengine.v1.AuthFailAction" json:"auth_fail_action,omitempty"`
	// Level of login required to access this resource. Defaults to
	// `optional`.
	Login LoginRequirement `protobuf:"varint,2,opt,name=login,proto3,enum=google.appengine.v1.LoginRequirement" json:"login,omitempty"`
	// Path to the script from the application root directory.
	Script string `protobuf:"bytes,3,opt,name=script,proto3" json:"script,omitempty"`
	// Security (HTTPS) enforcement for this URL.
	SecurityLevel SecurityLevel `protobuf:"varint,4,opt,name=security_level,json=securityLevel,proto3,enum=google.appengine.v1.SecurityLevel" json:"security_level,omitempty"`
	// URL to serve the endpoint at.
	Url string `protobuf:"bytes,5,opt,name=url,proto3" json:"url,omitempty"`
}

func (m *ApiConfigHandler) Reset()                    { *m = ApiConfigHandler{} }
func (m *ApiConfigHandler) String() string            { return proto.CompactTextString(m) }
func (*ApiConfigHandler) ProtoMessage()               {}
func (*ApiConfigHandler) Descriptor() ([]byte, []int) { return fileDescriptorAppYaml, []int{0} }

func (m *ApiConfigHandler) GetAuthFailAction() AuthFailAction {
	if m != nil {
		return m.AuthFailAction
	}
	return AuthFailAction_AUTH_FAIL_ACTION_UNSPECIFIED
}

func (m *ApiConfigHandler) GetLogin() LoginRequirement {
	if m != nil {
		return m.Login
	}
	return LoginRequirement_LOGIN_UNSPECIFIED
}

func (m *ApiConfigHandler) GetScript() string {
	if m != nil {
		return m.Script
	}
	return ""
}

func (m *ApiConfigHandler) GetSecurityLevel() SecurityLevel {
	if m != nil {
		return m.SecurityLevel
	}
	return SecurityLevel_SECURE_UNSPECIFIED
}

func (m *ApiConfigHandler) GetUrl() string {
	if m != nil {
		return m.Url
	}
	return ""
}

// Custom static error page to be served when an error occurs.
type ErrorHandler struct {
	// Error condition this handler applies to.
	ErrorCode ErrorHandler_ErrorCode `protobuf:"varint,1,opt,name=error_code,json=errorCode,proto3,enum=google.appengine.v1.ErrorHandler_ErrorCode" json:"error_code,omitempty"`
	// Static file content to be served for this error.
	StaticFile string `protobuf:"bytes,2,opt,name=static_file,json=staticFile,proto3" json:"static_file,omitempty"`
	// MIME type of file. Defaults to `text/html`.
	MimeType string `protobuf:"bytes,3,opt,name=mime_type,json=mimeType,proto3" json:"mime_type,omitempty"`
}

func (m *ErrorHandler) Reset()                    { *m = ErrorHandler{} }
func (m *ErrorHandler) String() string            { return proto.CompactTextString(m) }
func (*ErrorHandler) ProtoMessage()               {}
func (*ErrorHandler) Descriptor() ([]byte, []int) { return fileDescriptorAppYaml, []int{1} }

func (m *ErrorHandler) GetErrorCode() ErrorHandler_ErrorCode {
	if m != nil {
		return m.ErrorCode
	}
	return ErrorHandler_ERROR_CODE_UNSPECIFIED
}

func (m *ErrorHandler) GetStaticFile() string {
	if m != nil {
		return m.StaticFile
	}
	return ""
}

func (m *ErrorHandler) GetMimeType() string {
	if m != nil {
		return m.MimeType
	}
	return ""
}

// URL pattern and description of how the URL should be handled. App Engine can
// handle URLs by executing application code or by serving static files
// uploaded with the version, such as images, CSS, or JavaScript.
type UrlMap struct {
	// URL prefix. Uses regular expression syntax, which means regexp
	// special characters must be escaped, but should not contain groupings.
	// All URLs that begin with this prefix are handled by this handler, using the
	// portion of the URL after the prefix as part of the file path.
	UrlRegex string `protobuf:"bytes,1,opt,name=url_regex,json=urlRegex,proto3" json:"url_regex,omitempty"`
	// Type of handler for this URL pattern.
	//
	// Types that are valid to be assigned to HandlerType:
	//	*UrlMap_StaticFiles
	//	*UrlMap_Script
	//	*UrlMap_ApiEndpoint
	HandlerType isUrlMap_HandlerType `protobuf_oneof:"handler_type"`
	// Security (HTTPS) enforcement for this URL.
	SecurityLevel SecurityLevel `protobuf:"varint,5,opt,name=security_level,json=securityLevel,proto3,enum=google.appengine.v1.SecurityLevel" json:"security_level,omitempty"`
	// Level of login required to access this resource.
	Login LoginRequirement `protobuf:"varint,6,opt,name=login,proto3,enum=google.appengine.v1.LoginRequirement" json:"login,omitempty"`
	// Action to take when users access resources that require
	// authentication. Defaults to `redirect`.
	AuthFailAction AuthFailAction `protobuf:"varint,7,opt,name=auth_fail_action,json=authFailAction,proto3,enum=google.appengine.v1.AuthFailAction" json:"auth_fail_action,omitempty"`
	// `30x` code to use when performing redirects for the `secure` field.
	// Defaults to `302`.
	RedirectHttpResponseCode UrlMap_RedirectHttpResponseCode `protobuf:"varint,8,opt,name=redirect_http_response_code,json=redirectHttpResponseCode,proto3,enum=google.appengine.v1.UrlMap_RedirectHttpResponseCode" json:"redirect_http_response_code,omitempty"`
}

func (m *UrlMap) Reset()                    { *m = UrlMap{} }
func (m *UrlMap) String() string            { return proto.CompactTextString(m) }
func (*UrlMap) ProtoMessage()               {}
func (*UrlMap) Descriptor() ([]byte, []int) { return fileDescriptorAppYaml, []int{2} }

type isUrlMap_HandlerType interface {
	isUrlMap_HandlerType()
}

type UrlMap_StaticFiles struct {
	StaticFiles *StaticFilesHandler `protobuf:"bytes,2,opt,name=static_files,json=staticFiles,oneof"`
}
type UrlMap_Script struct {
	Script *ScriptHandler `protobuf:"bytes,3,opt,name=script,oneof"`
}
type UrlMap_ApiEndpoint struct {
	ApiEndpoint *ApiEndpointHandler `protobuf:"bytes,4,opt,name=api_endpoint,json=apiEndpoint,oneof"`
}

func (*UrlMap_StaticFiles) isUrlMap_HandlerType() {}
func (*UrlMap_Script) isUrlMap_HandlerType()      {}
func (*UrlMap_ApiEndpoint) isUrlMap_HandlerType() {}

func (m *UrlMap) GetHandlerType() isUrlMap_HandlerType {
	if m != nil {
		return m.HandlerType
	}
	return nil
}

func (m *UrlMap) GetUrlRegex() string {
	if m != nil {
		return m.UrlRegex
	}
	return ""
}

func (m *UrlMap) GetStaticFiles() *StaticFilesHandler {
	if x, ok := m.GetHandlerType().(*UrlMap_StaticFiles); ok {
		return x.StaticFiles
	}
	return nil
}

func (m *UrlMap) GetScript() *ScriptHandler {
	if x, ok := m.GetHandlerType().(*UrlMap_Script); ok {
		return x.Script
	}
	return nil
}

func (m *UrlMap) GetApiEndpoint() *ApiEndpointHandler {
	if x, ok := m.GetHandlerType().(*UrlMap_ApiEndpoint); ok {
		return x.ApiEndpoint
	}
	return nil
}

func (m *UrlMap) GetSecurityLevel() SecurityLevel {
	if m != nil {
		return m.SecurityLevel
	}
	return SecurityLevel_SECURE_UNSPECIFIED
}

func (m *UrlMap) GetLogin() LoginRequirement {
	if m != nil {
		return m.Login
	}
	return LoginRequirement_LOGIN_UNSPECIFIED
}

func (m *UrlMap) GetAuthFailAction() AuthFailAction {
	if m != nil {
		return m.AuthFailAction
	}
	return AuthFailAction_AUTH_FAIL_ACTION_UNSPECIFIED
}

func (m *UrlMap) GetRedirectHttpResponseCode() UrlMap_RedirectHttpResponseCode {
	if m != nil {
		return m.RedirectHttpResponseCode
	}
	return UrlMap_REDIRECT_HTTP_RESPONSE_CODE_UNSPECIFIED
}

// XXX_OneofFuncs is for the internal use of the proto package.
func (*UrlMap) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
	return _UrlMap_OneofMarshaler, _UrlMap_OneofUnmarshaler, _UrlMap_OneofSizer, []interface{}{
		(*UrlMap_StaticFiles)(nil),
		(*UrlMap_Script)(nil),
		(*UrlMap_ApiEndpoint)(nil),
	}
}

func _UrlMap_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
	m := msg.(*UrlMap)
	// handler_type
	switch x := m.HandlerType.(type) {
	case *UrlMap_StaticFiles:
		_ = b.EncodeVarint(2<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.StaticFiles); err != nil {
			return err
		}
	case *UrlMap_Script:
		_ = b.EncodeVarint(3<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.Script); err != nil {
			return err
		}
	case *UrlMap_ApiEndpoint:
		_ = b.EncodeVarint(4<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.ApiEndpoint); err != nil {
			return err
		}
	case nil:
	default:
		return fmt.Errorf("UrlMap.HandlerType has unexpected type %T", x)
	}
	return nil
}

func _UrlMap_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
	m := msg.(*UrlMap)
	switch tag {
	case 2: // handler_type.static_files
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(StaticFilesHandler)
		err := b.DecodeMessage(msg)
		m.HandlerType = &UrlMap_StaticFiles{msg}
		return true, err
	case 3: // handler_type.script
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(ScriptHandler)
		err := b.DecodeMessage(msg)
		m.HandlerType = &UrlMap_Script{msg}
		return true, err
	case 4: // handler_type.api_endpoint
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(ApiEndpointHandler)
		err := b.DecodeMessage(msg)
		m.HandlerType = &UrlMap_ApiEndpoint{msg}
		return true, err
	default:
		return false, nil
	}
}

func _UrlMap_OneofSizer(msg proto.Message) (n int) {
	m := msg.(*UrlMap)
	// handler_type
	switch x := m.HandlerType.(type) {
	case *UrlMap_StaticFiles:
		s := proto.Size(x.StaticFiles)
		n += proto.SizeVarint(2<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(s))
		n += s
	case *UrlMap_Script:
		s := proto.Size(x.Script)
		n += proto.SizeVarint(3<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(s))
		n += s
	case *UrlMap_ApiEndpoint:
		s := proto.Size(x.ApiEndpoint)
		n += proto.SizeVarint(4<<3 | proto.WireBytes)
		n += proto.SizeVarint(uint64(s))
		n += s
	case nil:
	default:
		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
	}
	return n
}

// Files served directly to the user for a given URL, such as images, CSS
// stylesheets, or JavaScript source files. Static file handlers describe which
// files in the application directory are static files, and which URLs serve
// them.
type StaticFilesHandler struct {
	// Path to the static files matched by the URL pattern, from the
	// application root directory. The path can refer to text matched in groupings
	// in the URL pattern.
	Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"`
	// Regular expression that matches the file paths for all files that should be
	// referenced by this handler.
	UploadPathRegex string `protobuf:"bytes,2,opt,name=upload_path_regex,json=uploadPathRegex,proto3" json:"upload_path_regex,omitempty"`
	// HTTP headers to use for all responses from these URLs.
	HttpHeaders map[string]string `protobuf:"bytes,3,rep,name=http_headers,json=httpHeaders" json:"http_headers,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	// MIME type used to serve all files served by this handler.
	//
	// Defaults to file-specific MIME types, which are derived from each file's
	// filename extension.
	MimeType string `protobuf:"bytes,4,opt,name=mime_type,json=mimeType,proto3" json:"mime_type,omitempty"`
	// Time a static file served by this handler should be cached
	// by web proxies and browsers.
	Expiration *google_protobuf1.Duration `protobuf:"bytes,5,opt,name=expiration" json:"expiration,omitempty"`
	// Whether this handler should match the request if the file
	// referenced by the handler does not exist.
	RequireMatchingFile bool `protobuf:"varint,6,opt,name=require_matching_file,json=requireMatchingFile,proto3" json:"require_matching_file,omitempty"`
	// Whether files should also be uploaded as code data. By default, files
	// declared in static file handlers are uploaded as static
	// data and are only served to end users; they cannot be read by the
	// application. If enabled, uploads are charged against both your code and
	// static data storage resource quotas.
	ApplicationReadable bool `protobuf:"varint,7,opt,name=application_readable,json=applicationReadable,proto3" json:"application_readable,omitempty"`
}

func (m *StaticFilesHandler) Reset()                    { *m = StaticFilesHandler{} }
func (m *StaticFilesHandler) String() string            { return proto.CompactTextString(m) }
func (*StaticFilesHandler) ProtoMessage()               {}
func (*StaticFilesHandler) Descriptor() ([]byte, []int) { return fileDescriptorAppYaml, []int{3} }

func (m *StaticFilesHandler) GetPath() string {
	if m != nil {
		return m.Path
	}
	return ""
}

func (m *StaticFilesHandler) GetUploadPathRegex() string {
	if m != nil {
		return m.UploadPathRegex
	}
	return ""
}

func (m *StaticFilesHandler) GetHttpHeaders() map[string]string {
	if m != nil {
		return m.HttpHeaders
	}
	return nil
}

func (m *StaticFilesHandler) GetMimeType() string {
	if m != nil {
		return m.MimeType
	}
	return ""
}

func (m *StaticFilesHandler) GetExpiration() *google_protobuf1.Duration {
	if m != nil {
		return m.Expiration
	}
	return nil
}

func (m *StaticFilesHandler) GetRequireMatchingFile() bool {
	if m != nil {
		return m.RequireMatchingFile
	}
	return false
}

func (m *StaticFilesHandler) GetApplicationReadable() bool {
	if m != nil {
		return m.ApplicationReadable
	}
	return false
}

// Executes a script to handle the request that matches the URL pattern.
type ScriptHandler struct {
	// Path to the script from the application root directory.
	ScriptPath string `protobuf:"bytes,1,opt,name=script_path,json=scriptPath,proto3" json:"script_path,omitempty"`
}

func (m *ScriptHandler) Reset()                    { *m = ScriptHandler{} }
func (m *ScriptHandler) String() string            { return proto.CompactTextString(m) }
func (*ScriptHandler) ProtoMessage()               {}
func (*ScriptHandler) Descriptor() ([]byte, []int) { return fileDescriptorAppYaml, []int{4} }

func (m *ScriptHandler) GetScriptPath() string {
	if m != nil {
		return m.ScriptPath
	}
	return ""
}

// Uses Google Cloud Endpoints to handle requests.
type ApiEndpointHandler struct {
	// Path to the script from the application root directory.
	ScriptPath string `protobuf:"bytes,1,opt,name=script_path,json=scriptPath,proto3" json:"script_path,omitempty"`
}

func (m *ApiEndpointHandler) Reset()                    { *m = ApiEndpointHandler{} }
func (m *ApiEndpointHandler) String() string            { return proto.CompactTextString(m) }
func (*ApiEndpointHandler) ProtoMessage()               {}
func (*ApiEndpointHandler) Descriptor() ([]byte, []int) { return fileDescriptorAppYaml, []int{5} }

func (m *ApiEndpointHandler) GetScriptPath() string {
	if m != nil {
		return m.ScriptPath
	}
	return ""
}

// Health checking configuration for VM instances. Unhealthy instances
// are killed and replaced with new instances. Only applicable for
// instances in App Engine flexible environment.
type HealthCheck struct {
	// Whether to explicitly disable health checks for this instance.
	DisableHealthCheck bool `protobuf:"varint,1,opt,name=disable_health_check,json=disableHealthCheck,proto3" json:"disable_health_check,omitempty"`
	// Host header to send when performing an HTTP health check.
	// Example: "myapp.appspot.com"
	Host string `protobuf:"bytes,2,opt,name=host,proto3" json:"host,omitempty"`
	// Number of consecutive successful health checks required before receiving
	// traffic.
	HealthyThreshold uint32 `protobuf:"varint,3,opt,name=healthy_threshold,json=healthyThreshold,proto3" json:"healthy_threshold,omitempty"`
	// Number of consecutive failed health checks required before removing
	// traffic.
	UnhealthyThreshold uint32 `protobuf:"varint,4,opt,name=unhealthy_threshold,json=unhealthyThreshold,proto3" json:"unhealthy_threshold,omitempty"`
	// Number of consecutive failed health checks required before an instance is
	// restarted.
	RestartThreshold uint32 `protobuf:"varint,5,opt,name=restart_threshold,json=restartThreshold,proto3" json:"restart_threshold,omitempty"`
	// Interval between health checks.
	CheckInterval *google_protobuf1.Duration `protobuf:"bytes,6,opt,name=check_interval,json=checkInterval" json:"check_interval,omitempty"`
	// Time before the health check is considered failed.
	Timeout *google_protobuf1.Duration `protobuf:"bytes,7,opt,name=timeout" json:"timeout,omitempty"`
}

func (m *HealthCheck) Reset()                    { *m = HealthCheck{} }
func (m *HealthCheck) String() string            { return proto.CompactTextString(m) }
func (*HealthCheck) ProtoMessage()               {}
func (*HealthCheck) Descriptor() ([]byte, []int) { return fileDescriptorAppYaml, []int{6} }

func (m *HealthCheck) GetDisableHealthCheck() bool {
	if m != nil {
		return m.DisableHealthCheck
	}
	return false
}

func (m *HealthCheck) GetHost() string {
	if m != nil {
		return m.Host
	}
	return ""
}

func (m *HealthCheck) GetHealthyThreshold() uint32 {
	if m != nil {
		return m.HealthyThreshold
	}
	return 0
}

func (m *HealthCheck) GetUnhealthyThreshold() uint32 {
	if m != nil {
		return m.UnhealthyThreshold
	}
	return 0
}

func (m *HealthCheck) GetRestartThreshold() uint32 {
	if m != nil {
		return m.RestartThreshold
	}
	return 0
}

func (m *HealthCheck) GetCheckInterval() *google_protobuf1.Duration {
	if m != nil {
		return m.CheckInterval
	}
	return nil
}

func (m *HealthCheck) GetTimeout() *google_protobuf1.Duration {
	if m != nil {
		return m.Timeout
	}
	return nil
}

// Third-party Python runtime library that is required by the application.
type Library struct {
	// Name of the library. Example: "django".
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// Version of the library to select, or "latest".
	Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"`
}

func (m *Library) Reset()                    { *m = Library{} }
func (m *Library) String() string            { return proto.CompactTextString(m) }
func (*Library) ProtoMessage()               {}
func (*Library) Descriptor() ([]byte, []int) { return fileDescriptorAppYaml, []int{7} }

func (m *Library) GetName() string {
	if m != nil {
		return m.Name
	}
	return ""
}

func (m *Library) GetVersion() string {
	if m != nil {
		return m.Version
	}
	return ""
}

func init() {
	proto.RegisterType((*ApiConfigHandler)(nil), "google.appengine.v1.ApiConfigHandler")
	proto.RegisterType((*ErrorHandler)(nil), "google.appengine.v1.ErrorHandler")
	proto.RegisterType((*UrlMap)(nil), "google.appengine.v1.UrlMap")
	proto.RegisterType((*StaticFilesHandler)(nil), "google.appengine.v1.StaticFilesHandler")
	proto.RegisterType((*ScriptHandler)(nil), "google.appengine.v1.ScriptHandler")
	proto.RegisterType((*ApiEndpointHandler)(nil), "google.appengine.v1.ApiEndpointHandler")
	proto.RegisterType((*HealthCheck)(nil), "google.appengine.v1.HealthCheck")
	proto.RegisterType((*Library)(nil), "google.appengine.v1.Library")
	proto.RegisterEnum("google.appengine.v1.AuthFailAction", AuthFailAction_name, AuthFailAction_value)
	proto.RegisterEnum("google.appengine.v1.LoginRequirement", LoginRequirement_name, LoginRequirement_value)
	proto.RegisterEnum("google.appengine.v1.SecurityLevel", SecurityLevel_name, SecurityLevel_value)
	proto.RegisterEnum("google.appengine.v1.ErrorHandler_ErrorCode", ErrorHandler_ErrorCode_name, ErrorHandler_ErrorCode_value)
	proto.RegisterEnum("google.appengine.v1.UrlMap_RedirectHttpResponseCode", UrlMap_RedirectHttpResponseCode_name, UrlMap_RedirectHttpResponseCode_value)
}

func init() { proto.RegisterFile("google/appengine/v1/app_yaml.proto", fileDescriptorAppYaml) }

var fileDescriptorAppYaml = []byte{
	// 1205 bytes of a gzipped FileDescriptorProto
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x56, 0xdd, 0x6e, 0xdb, 0x36,
	0x14, 0xae, 0xec, 0xfc, 0x1e, 0x3b, 0xae, 0xc2, 0xb4, 0x9d, 0x93, 0xb6, 0x6b, 0xe6, 0x62, 0x68,
	0x97, 0x00, 0x4e, 0x93, 0x6c, 0x68, 0xf7, 0x83, 0x61, 0xaa, 0xad, 0xcc, 0x1a, 0x9c, 0xd8, 0xa5,
	0xed, 0x0e, 0xdd, 0x2e, 0x08, 0xc6, 0x66, 0x2c, 0xa1, 0xb2, 0xa4, 0x51, 0x94, 0x51, 0x3f, 0xc7,
	0xb0, 0xf7, 0xe8, 0xed, 0x1e, 0x64, 0x57, 0x7b, 0x99, 0x81, 0x14, 0xfd, 0x97, 0x38, 0xcd, 0x90,
	0x3b, 0x9e, 0x73, 0xbe, 0xef, 0x88, 0xe7, 0x97, 0x82, 0x52, 0x3f, 0x0c, 0xfb, 0x3e, 0x3b, 0xa0,
	0x51, 0xc4, 0x82, 0xbe, 0x17, 0xb0, 0x83, 0xe1, 0xa1, 0x14, 0xc8, 0x88, 0x0e, 0xfc, 0x72, 0xc4,
	0x43, 0x11, 0xa2, 0xad, 0x14, 0x53, 0x9e, 0x60, 0xca, 0xc3, 0xc3, 0x9d, 0x47, 0x13, 0xa2, 0x77,
	0x40, 0x83, 0x20, 0x14, 0x54, 0x78, 0x61, 0x10, 0xa7, 0x94, 0x9d, 0xcf, 0xb5, 0x55, 0x49, 0xe7,
	0xc9, 0xc5, 0x41, 0x2f, 0xe1, 0x0a, 0x90, 0xda, 0x4b, 0x7f, 0x66, 0xc0, 0xb4, 0x22, 0xaf, 0x12,
	0x06, 0x17, 0x5e, 0xbf, 0x46, 0x83, 0x9e, 0xcf, 0x38, 0x3a, 0x05, 0x93, 0x26, 0xc2, 0x25, 0x17,
	0xd4, 0xf3, 0x09, 0xed, 0x4a, 0x78, 0xd1, 0xd8, 0x35, 0x9e, 0x17, 0x8e, 0x9e, 0x96, 0x17, 0x5c,
	0xa1, 0x6c, 0x25, 0xc2, 0x3d, 0xa1, 0x9e, 0x6f, 0x29, 0x28, 0x2e, 0xd0, 0x39, 0x19, 0x7d, 0x0f,
	0xcb, 0x7e, 0xd8, 0xf7, 0x82, 0x62, 0x46, 0xf9, 0xf8, 0x72, 0xa1, 0x8f, 0xba, 0x44, 0x60, 0xf6,
	0x47, 0xe2, 0x71, 0x36, 0x60, 0x81, 0xc0, 0x29, 0x07, 0x3d, 0x80, 0x95, 0xb8, 0xcb, 0xbd, 0x48,
	0x14, 0xb3, 0xbb, 0xc6, 0xf3, 0x75, 0xac, 0x25, 0xe4, 0x40, 0x21, 0x66, 0xdd, 0x84, 0x7b, 0x62,
	0x44, 0x7c, 0x36, 0x64, 0x7e, 0x71, 0x49, 0x79, 0x2f, 0x2d, 0xf4, 0xde, 0xd2, 0xd0, 0xba, 0x44,
	0xe2, 0x8d, 0x78, 0x56, 0x44, 0x26, 0x64, 0x13, 0xee, 0x17, 0x97, 0x95, 0x7f, 0x79, 0x2c, 0x7d,
	0xcc, 0x40, 0xde, 0xe6, 0x3c, 0xe4, 0xe3, 0x8c, 0xfc, 0x02, 0xc0, 0xa4, 0x4c, 0xba, 0x61, 0x8f,
	0xe9, 0x5c, 0xec, 0x2f, 0xfc, 0xd2, 0x2c, 0x2d, 0x15, 0x2a, 0x61, 0x8f, 0xe1, 0x75, 0x36, 0x3e,
	0xa2, 0x27, 0x90, 0x8b, 0x65, 0x91, 0xba, 0xe4, 0xc2, 0xf3, 0x99, 0x4a, 0xca, 0x3a, 0x86, 0x54,
	0x75, 0xe2, 0xf9, 0x0c, 0x3d, 0x84, 0xf5, 0x81, 0x37, 0x60, 0x44, 0x8c, 0x22, 0xa6, 0xa3, 0x5e,
	0x93, 0x8a, 0xf6, 0x28, 0x62, 0xa5, 0xbf, 0x0c, 0x58, 0x9f, 0xb8, 0x45, 0x3b, 0xf0, 0xc0, 0xc6,
	0xb8, 0x81, 0x49, 0xa5, 0x51, 0xb5, 0x49, 0xe7, 0xac, 0xd5, 0xb4, 0x2b, 0xce, 0x89, 0x63, 0x57,
	0xcd, 0x3b, 0xe8, 0x01, 0xa0, 0x19, 0x5b, 0xd5, 0x3e, 0xb1, 0x3a, 0xf5, 0xb6, 0x79, 0x07, 0x6d,
	0xc3, 0xfd, 0x19, 0x7d, 0xe3, 0xad, 0x8d, 0xc9, 0x9b, 0x4e, 0xa3, 0x6d, 0x99, 0x06, 0x7a, 0x0c,
	0xdb, 0xb3, 0x94, 0x46, 0x8b, 0x58, 0x4d, 0x87, 0x54, 0xed, 0x33, 0xc7, 0xaa, 0x9b, 0x99, 0x4b,
	0x1e, 0xdb, 0xce, 0xa9, 0xdd, 0xe8, 0xb4, 0xcd, 0xec, 0x4e, 0xc6, 0x34, 0x4a, 0x7f, 0xaf, 0xc0,
	0x4a, 0x87, 0xfb, 0xa7, 0x34, 0x92, 0xf7, 0x4f, 0xb8, 0x4f, 0x38, 0xeb, 0xb3, 0x0f, 0x2a, 0x57,
	0xeb, 0x78, 0x2d, 0xe1, 0x3e, 0x96, 0x32, 0xaa, 0x43, 0x7e, 0x26, 0xfa, 0x58, 0x85, 0x9f, 0x3b,
	0x7a, 0xb6, 0xb8, 0x6a, 0x93, 0x9c, 0xc4, 0x3a, 0xa3, 0xb5, 0x3b, 0x38, 0x37, 0xcd, 0x54, 0x8c,
	0x7e, 0x98, 0xeb, 0x8e, 0xdc, 0x75, 0xd5, 0x57, 0x90, 0xa9, 0x8b, 0x71, 0x0f, 0xd5, 0x21, 0x4f,
	0x23, 0x8f, 0xb0, 0xa0, 0x17, 0x85, 0x5e, 0x20, 0x54, 0x07, 0x5d, 0x77, 0x17, 0x2b, 0xf2, 0x6c,
	0x8d, 0x9b, 0xb9, 0x0b, 0x9d, 0x6a, 0x17, 0x74, 0xe4, 0xf2, 0x6d, 0x3b, 0x72, 0x32, 0x31, 0x2b,
	0xb7, 0x98, 0x98, 0x45, 0xd3, 0xbb, 0x7a, 0xfb, 0xe9, 0x8d, 0xe1, 0x21, 0x67, 0x3d, 0x8f, 0xb3,
	0xae, 0x20, 0xae, 0x10, 0x11, 0xe1, 0x2c, 0x8e, 0xc2, 0x20, 0x66, 0xe9, 0x2c, 0xac, 0x29, 0xcf,
	0x5f, 0x2f, 0xf4, 0x9c, 0xf6, 0x43, 0x19, 0x6b, 0x7a, 0x4d, 0x88, 0x08, 0x6b, 0xb2, 0x1a, 0x8a,
	0x22, 0xbf, 0xc6, 0x52, 0xfa, 0xd7, 0x80, 0xe2, 0x75, 0x34, 0xb4, 0x0f, 0xcf, 0xb0, 0x5d, 0x75,
	0xb0, 0x5d, 0x69, 0x93, 0x5a, 0xbb, 0xdd, 0x24, 0xd8, 0x6e, 0x35, 0x1b, 0x67, 0x2d, 0x7b, 0xd1,
	0x14, 0x3c, 0x85, 0x27, 0x9f, 0x02, 0x1f, 0xbf, 0x38, 0x34, 0x8d, 0x9b, 0x41, 0x47, 0x66, 0xe6,
	0x66, 0xd0, 0xb1, 0x99, 0xbd, 0x19, 0xf4, 0xd2, 0x5c, 0x7a, 0x5d, 0x80, 0xbc, 0x9b, 0xf6, 0x90,
	0x9a, 0xf1, 0xd2, 0xc7, 0x2c, 0xa0, 0xab, 0xbd, 0x8e, 0x10, 0x2c, 0x45, 0x54, 0xb8, 0x7a, 0x84,
	0xd4, 0x19, 0xed, 0xc1, 0x66, 0x12, 0xf9, 0x21, 0xed, 0x11, 0x29, 0xea, 0x19, 0x4b, 0x57, 0xc8,
	0xdd, 0xd4, 0xd0, 0xa4, 0xc2, 0x4d, 0x47, 0xed, 0x77, 0xc8, 0xab, 0x82, 0xb9, 0x8c, 0xf6, 0x18,
	0x8f, 0x8b, 0xd9, 0xdd, 0xec, 0xf3, 0xdc, 0xd1, 0xab, 0xff, 0x39, 0x6a, 0x65, 0x99, 0xf7, 0x5a,
	0x4a, 0xb5, 0x03, 0xc1, 0x47, 0x38, 0xe7, 0x4e, 0x35, 0xf3, 0x4b, 0x6a, 0x69, 0x7e, 0x49, 0xa1,
	0x6f, 0x01, 0xd8, 0x87, 0xc8, 0x4b, 0x5f, 0x1a, 0x35, 0x06, 0xb9, 0xa3, 0xed, 0xf1, 0x77, 0xc7,
	0x4f, 0x51, 0xb9, 0xaa, 0x9f, 0x22, 0x3c, 0x03, 0x46, 0x47, 0x70, 0x9f, 0xa7, 0x3d, 0x4d, 0x06,
	0x54, 0x74, 0x5d, 0x2f, 0xe8, 0xa7, 0x7b, 0x52, 0x8e, 0xc2, 0x1a, 0xde, 0xd2, 0xc6, 0x53, 0x6d,
	0x53, 0x0b, 0xf3, 0x10, 0xee, 0xd1, 0x28, 0xf2, 0xbd, 0xae, 0x72, 0x41, 0x38, 0xa3, 0x3d, 0x7a,
	0xee, 0x33, 0xd5, 0xf5, 0x6b, 0x78, 0x6b, 0xc6, 0x86, 0xb5, 0x69, 0xe7, 0x47, 0x30, 0x2f, 0xc7,
	0x27, 0xdf, 0x81, 0xf7, 0x6c, 0xa4, 0xd3, 0x2d, 0x8f, 0xe8, 0x1e, 0x2c, 0x0f, 0xa9, 0x9f, 0x8c,
	0x97, 0x74, 0x2a, 0x7c, 0x97, 0x79, 0x65, 0x94, 0x5e, 0xc0, 0xc6, 0xdc, 0x56, 0x51, 0x5b, 0x5d,
	0x29, 0xc8, 0x4c, 0xcd, 0x20, 0x55, 0xc9, 0x92, 0x94, 0xbe, 0x01, 0x74, 0x75, 0x87, 0xdc, 0x4c,
	0xfb, 0x27, 0x03, 0xb9, 0x1a, 0xa3, 0xbe, 0x70, 0x2b, 0x2e, 0xeb, 0xbe, 0x47, 0x2f, 0xe0, 0x5e,
	0xcf, 0x8b, 0x65, 0x0c, 0xb2, 0xae, 0xbe, 0x70, 0x49, 0x57, 0xea, 0x15, 0x73, 0x0d, 0x23, 0x6d,
	0x9b, 0x65, 0x20, 0x58, 0x72, 0xc3, 0x58, 0xe8, 0x18, 0xd4, 0x19, 0xed, 0xc3, 0x66, 0xca, 0x1e,
	0x11, 0xe1, 0x72, 0x16, 0xbb, 0xa1, 0xdf, 0x53, 0x2b, 0x74, 0x03, 0x9b, 0xda, 0xd0, 0x1e, 0xeb,
	0xd1, 0x01, 0x6c, 0x25, 0xc1, 0x55, 0xf8, 0x92, 0x82, 0xa3, 0x89, 0x69, 0x4a, 0xd8, 0x87, 0x4d,
	0xce, 0x62, 0x41, 0xb9, 0x98, 0x81, 0x2f, 0xa7, 0xde, 0xb5, 0x61, 0x0a, 0xfe, 0x09, 0x0a, 0x2a,
	0x02, 0xe2, 0x05, 0x82, 0xf1, 0x21, 0xf5, 0x55, 0xa5, 0x3f, 0xd9, 0x2f, 0x1b, 0x8a, 0xe0, 0x68,
	0x3c, 0x3a, 0x86, 0x55, 0xe1, 0x0d, 0x58, 0x98, 0x08, 0x55, 0xf1, 0x4f, 0x52, 0xc7, 0xc8, 0xd2,
	0x4b, 0x58, 0xad, 0x7b, 0xe7, 0x9c, 0xf2, 0x91, 0x4c, 0x50, 0x40, 0x07, 0x6c, 0x3c, 0x67, 0xf2,
	0x8c, 0x8a, 0xb0, 0x3a, 0x64, 0x3c, 0x96, 0xed, 0x9b, 0xe6, 0x6d, 0x2c, 0xee, 0x09, 0x28, 0xcc,
	0x6f, 0x4c, 0xb4, 0x0b, 0x8f, 0xac, 0x4e, 0xbb, 0x46, 0x4e, 0x2c, 0xa7, 0x4e, 0xac, 0x4a, 0xdb,
	0x69, 0x9c, 0x5d, 0x5a, 0x42, 0x8f, 0x61, 0xfb, 0x0a, 0x62, 0xbc, 0x26, 0x4c, 0x03, 0x7d, 0x01,
	0x8f, 0x17, 0x38, 0x90, 0xaa, 0x06, 0x76, 0x7e, 0xb3, 0xab, 0x66, 0x66, 0xef, 0x1c, 0xcc, 0xcb,
	0xfb, 0x1e, 0xdd, 0x87, 0xcd, 0x7a, 0xe3, 0x67, 0xe7, 0xf2, 0xc7, 0x10, 0x14, 0x52, 0x75, 0xa3,
	0x29, 0x3d, 0x59, 0x75, 0xd3, 0x40, 0x77, 0x21, 0x97, 0xea, 0xac, 0xea, 0xa9, 0x73, 0x66, 0x66,
	0xa6, 0x20, 0x6c, 0xbf, 0xe9, 0x38, 0xd8, 0xae, 0x9a, 0xd9, 0xbd, 0x11, 0x6c, 0xcc, 0xbd, 0x4a,
	0xf2, 0xbd, 0x6f, 0xd9, 0x95, 0x0e, 0xb6, 0xaf, 0x7e, 0x41, 0xeb, 0xa7, 0x7f, 0x15, 0x26, 0xe4,
	0xb5, 0xee, 0xcc, 0x7e, 0x6b, 0x63, 0xd3, 0x40, 0x5b, 0x70, 0x57, 0x6b, 0x26, 0x17, 0xc9, 0xa0,
	0x4d, 0xd8, 0xd0, 0x4a, 0xab, 0xfe, 0xab, 0xf5, 0xae, 0x95, 0xfe, 0x3d, 0xbc, 0xfe, 0x0a, 0x3e,
	0xeb, 0x86, 0x83, 0x45, 0x9b, 0xe9, 0x75, 0xde, 0x8a, 0xa2, 0x77, 0x74, 0xe0, 0x37, 0x65, 0x2d,
	0x9b, 0xc6, 0xf9, 0x8a, 0x2a, 0xea, 0xf1, 0x7f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xda, 0x2d, 0x20,
	0xdc, 0x31, 0x0b, 0x00, 0x00,
}


text:
namespace syncer {

SyncCycleEvent::SyncCycleEvent(EventCause cause) : what_happened(cause) {
}

SyncCycleEvent::~SyncCycleEvent() {}

}  // namespace syncer

redpajama_set_name: RedPajamaGithub


text:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="ru.nixan.android.requestloaders"
    android:versionCode="1"
    android:versionName="1.0">

    <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="19" />
    <application />
</manifest>


text:
package io.skysail.server.app.notes.resources;

import java.util.List;

import io.skysail.api.links.Link;
import io.skysail.server.ResourceContextId;
import io.skysail.server.app.notes.NotesResource;

public class MyNotesResource extends NotesResource {

    public MyNotesResource() {
        super(MyNoteResource.class);
        addToContext(ResourceContextId.LINK_TITLE, "list Notes");
    }

    @Override
    public List<Link> getLinks() {
        return super.getLinks(MyPostNoteResource.class  );
    }

}


text:
using System;
using System.Configuration.Install;
using System.IO;
using System.Reflection;
using System.ServiceProcess;
using JetBrains.Annotations;

namespace ZebraDeploy.Service {
    static class Program {
        static void Main(string[] args) {
            AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;

            if(Environment.UserInteractive) {
                string parameter = string.Concat(args);
                switch(parameter) {
                    case "--install":
                        ManagedInstallerClass.InstallHelper(new[] { Assembly.GetExecutingAssembly().Location });
                        break;
                    case "--uninstall":
                        ManagedInstallerClass.InstallHelper(new[] { "/u", Assembly.GetExecutingAssembly().Location });
                        break;
                }
            } else {
                ServiceBase[] servicesToRun = {
                    new ZebraDeploy()
                };
                ServiceBase.Run(servicesToRun);
            }
        }

        private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) {
            var ex = e.ExceptionObject as Exception;
            using(var writer = new StreamWriter(GetPathToFile($"UnhandledException-{DateTime.Now:yyyy-MM-dd HHmmss}.txt"), false)) {
                WriteException(writer, ex);
            }
        }

        [NotNull]
        private static String GetPathToFile([NotNull] String file) {
            var executingAssembly = Assembly.GetExecutingAssembly();
            var executingAssemblyPath = executingAssembly.Location;
            var directoryName = new FileInfo(executingAssemblyPath).DirectoryName;
            var result = Path.Combine(directoryName, file);

            return result;
        }

        private static void WriteException([NotNull] TextWriter writer, [CanBeNull] Exception ex) {
            if(ex == null) {
                writer.WriteLine("Application crashed but no exception was provided.");
                writer.Flush();
                return;
            }
            writer.WriteLine("Type: {0}", ex.GetType().Name);
            writer.WriteLine("Message: {0}", ex.Message);
            writer.WriteLine("Stacktrace:");
            writer.WriteLine(ex.StackTrace);
            writer.Flush();

            if(ex.InnerException != null) {
                writer.WriteLine();
                WriteException(writer, ex.InnerException);
            }
        }
    }
}


text:
package net.reindiegames.lib.util.interfaces;

/**
 * Marks any Object that can be represented by a Name Literal.
 *
 * @author Nils
 * @version Valid (Last Change: 04.05.2017)
 * @since 04.05.2017
 */
public interface Nameable {
    /**
     * @return Returns the Name of this Object.
     */
    public abstract String getName();
}


text:
class AddColumnNewDateToCiProjectDelay < ActiveRecord::Migration
	def self.up
		add_column :ci_project_delays, :new_date, :date
	end

	def self.down
		remove_column :ci_project_delays, :new_date
	end
end


text:
<!DOCTYPE html>

        <title>Subject - Edit</title>

Edit Subject

                  <form role="form" th:action="@{/subjects/{id}(id=${subject.id})}" th:object="${subject}" method="post"  enctype="multipart/form-data">

Incorrect data

                      Email
                      <input type="text" class="form-control" name="name" th:field="*{email}" readonly="readonly"/>

                      Age
                      <input type="number" class="form-control" name="age" th:field="*{age}"  placeholder="Enter Product Age"/>

Incorrect data

                      Gender
                      <input type="text" class="form-control" name="gender" th:field="*{gender}" placeholder="Enter Product Gender"/>

Incorrect data

	                    <button type="submit" class="btn btn-primary">Submit</button>

                  </form>


text:
package framework

import (
	"context"
	"io"
	"log"
	"os"
	"os/exec"
	"strconv"
	"sync"

	"github.com/kopia/kopia/tests/robustness"
	"github.com/kopia/kopia/tests/robustness/snapmeta"
)

// MultiClientSnapshotter manages a set of client Snapshotter instances and
// implements the Snapshotter interface itself. Snapshotter methods must be
// provided with a client-wrapped context so the MultiClientSnapshotter can
// delegate to a specific client Snapshotter.
type MultiClientSnapshotter struct {
	baseDirPath string
	server      Server

	// Map of client ID to ClientSnapshotter and associated lock
	clients map[string]ClientSnapshotter
	mu      sync.RWMutex

	// Function used to generate new ClientSnapshotters
	newClientSnapshotter newClientFn
}

// MultiClientSnapshotter implements robustness.Snapshotter.
var _ robustness.Snapshotter = (*MultiClientSnapshotter)(nil)

type newClientFn func(string) (ClientSnapshotter, error)

// NewMultiClientSnapshotter returns a MultiClientSnapshotter that is
// responsible for delegating Snapshotter method calls to a specific client's
// Snapshotter instance. ConnectOrCreateRepo must be invoked to start the server.
func NewMultiClientSnapshotter(baseDirPath string, f newClientFn) (*MultiClientSnapshotter, error) {
	s, err := snapmeta.NewSnapshotter(baseDirPath)
	if err != nil {
		return nil, err
	}

	return &MultiClientSnapshotter{
		newClientSnapshotter: f,
		server:               s,
		clients:              map[string]ClientSnapshotter{},
		baseDirPath:          baseDirPath,
	}, nil
}

// ConnectOrCreateRepo makes the MultiClientSnapshotter ready for use. It will
// connect to an existing repository if possible or create a new one, and
// start a repository server.
func (mcs *MultiClientSnapshotter) ConnectOrCreateRepo(repoPath string) error {
	if err := mcs.server.ConnectOrCreateRepo(repoPath); err != nil {
		return err
	}

	_, _, err := mcs.server.Run("policy", "set", "--global", "--keep-latest", strconv.Itoa(1<<31-1), "--compression", "s2-default")

	return err
}

// ServerCmd returns the server command.
func (mcs *MultiClientSnapshotter) ServerCmd() *exec.Cmd {
	return mcs.server.ServerCmd()
}

// CreateSnapshot delegates to a specific client's Snapshotter.
func (mcs *MultiClientSnapshotter) CreateSnapshot(ctx context.Context, sourceDir string, opts map[string]string) (snapID string, fingerprint []byte, snapStats *robustness.CreateSnapshotStats, err error) {
	ks, err := mcs.createOrGetSnapshotter(ctx)
	if err != nil {
		return "", nil, nil, err
	}

	return ks.CreateSnapshot(ctx, sourceDir, opts)
}

// RestoreSnapshot delegates to a specific client's Snapshotter.
func (mcs *MultiClientSnapshotter) RestoreSnapshot(ctx context.Context, snapID, restoreDir string, opts map[string]string) (fingerprint []byte, err error) {
	ks, err := mcs.createOrGetSnapshotter(ctx)
	if err != nil {
		return nil, err
	}

	return ks.RestoreSnapshot(ctx, snapID, restoreDir, opts)
}

// RestoreSnapshotCompare delegates to a specific client's Snapshotter.
func (mcs *MultiClientSnapshotter) RestoreSnapshotCompare(ctx context.Context, snapID, restoreDir string, validationData []byte, reportOut io.Writer, opts map[string]string) (err error) {
	ks, err := mcs.createOrGetSnapshotter(ctx)
	if err != nil {
		return err
	}

	return ks.RestoreSnapshotCompare(ctx, snapID, restoreDir, validationData, reportOut, opts)
}

// DeleteSnapshot delegates to a specific client's Snapshotter.
func (mcs *MultiClientSnapshotter) DeleteSnapshot(ctx context.Context, snapID string, opts map[string]string) error {
	ks, err := mcs.createOrGetSnapshotter(ctx)
	if err != nil {
		return err
	}

	return ks.DeleteSnapshot(ctx, snapID, opts)
}

// RunGC runs garbage collection on the server repository directly since clients
// are not authorized to do this.
func (mcs *MultiClientSnapshotter) RunGC(ctx context.Context, opts map[string]string) error {
	return mcs.server.RunGC(ctx, opts)
}

// ListSnapshots delegates to a specific client's Snapshotter.
func (mcs *MultiClientSnapshotter) ListSnapshots(ctx context.Context) ([]string, error) {
	ks, err := mcs.createOrGetSnapshotter(ctx)
	if err != nil {
		return nil, err
	}

	return ks.ListSnapshots(ctx)
}

// Cleanup cleans up the server and all remaining clients. It delegates to a
// specific client's Snapshotter Cleanup method, but also disconnects the client
// from the server, removes the client from the server's user list, and removes
// the ClientSnapshotter from MultiClientSnapshotter.
func (mcs *MultiClientSnapshotter) Cleanup() {
	for clientID, s := range mcs.clients {
		s.DisconnectClient(clientID)
		s.Cleanup()
		mcs.server.RemoveClient(clientID)

		delete(mcs.clients, clientID)
	}

	mcs.server.Cleanup()
}

// CleanupClient cleans up a given client. It delegates to the client's
// Snapshotter Cleanup method, but also disconnects the client from the server,
// removes the client from the server's user list, and removes the
// ClientSnapshotter from MultiClientSnapshotter.
func (mcs *MultiClientSnapshotter) CleanupClient(ctx context.Context) {
	c := UnwrapContext(ctx)
	if c == nil {
		log.Println("Context does not contain a client")
		return
	}

	mcs.mu.Lock()
	s := mcs.clients[c.ID]
	delete(mcs.clients, c.ID)
	mcs.mu.Unlock()

	if s == nil {
		return
	}

	s.DisconnectClient(c.ID)
	s.Cleanup()
	mcs.server.RemoveClient(c.ID)
}

// createOrGetSnapshotter gets a client's Snapshotter from the given context if
// possible or creates a new ClientSnapshotter.
func (mcs *MultiClientSnapshotter) createOrGetSnapshotter(ctx context.Context) (robustness.Snapshotter, error) {
	c := UnwrapContext(ctx)
	if c == nil {
		log.Println("Context does not contain a client")
		return nil, robustness.ErrKeyNotFound
	}

	log.Printf("Issuing Kopia command for client: %s\n", c.ID)

	// Get existing ClientSnapshotter if available
	mcs.mu.RLock()
	cs, ok := mcs.clients[c.ID]
	mcs.mu.RUnlock()

	if ok {
		return cs, nil
	}

	// Create new ClientSnapshotter
	clientDir, err := os.MkdirTemp(mcs.baseDirPath, "client-")
	if err != nil {
		return nil, err
	}

	cs, err = mcs.newClientSnapshotter(clientDir)
	if err != nil {
		return nil, err
	}

	// Register client with server and create connection
	mcs.mu.Lock()
	err = mcs.server.AuthorizeClient(c.ID)
	mcs.mu.Unlock()

	if err != nil {
		return nil, err
	}

	if err := cs.ConnectClient(mcs.server.ServerFingerprint(), c.ID); err != nil {
		return nil, err
	}

	// Register new client snapshotter with MultiClientSnapshotter
	mcs.mu.Lock()
	defer mcs.mu.Unlock()

	mcs.clients[c.ID] = cs

	return cs, nil
}


text:
class ExhibitTwo < DisplayCase::Exhibit
  def self.applicable_to?(*args); true; end
  def dont_change_this
    "unchanged"
  end
end


text:
title: Select rows using radio buttons
description: JavaScript solution for selecting rows using radio buttons.
type: how-to
page_title: Select rows with Radio button on client side - RadGrid
slug: grid-select-row-with-radiobutton-client-side
position:
tags:
ticketid: 1435991
res_type: kb
---

## Environment

			Product
			RadGrid for ASP.NET AJAX

## Description

Use Radio button to select rows in RadGrid and only select one at a time.

For example:

![](images/grid-select-rows-radiobutton-client-side.gif)

## Solution

````JavaScript
<script type="text/javascript">
    // When RadioButton is Checked
    function RadioButtonCheckedChanged(sender, args) {
        if (args.get_checked() == true) {
            var radioButton = sender.get_element();
            var currentRow = $telerik.$(radioButton).closest('tr')[0];

            if (currentRow) {
                var table = $telerik.$(currentRow).closest('table')[0];

                if (table && table.control) {
                    var masterTable = table.control;
                    // select the row
                    masterTable.selectItem(currentRow)
                }
            }
        }
    }
    // When a row is about to be selected
    function OnRowSelecting(sender, args) {
        // if the select event fires due to clicking on the row
        if (args.get_domEvent().type && args.get_domEvent().type == "click") {
            // cancel the event
            args.set_cancel(true);
        }
    }
    // When a row is about to be deselected, uncheck its RadioButton in it
    function OnRowDeselecting(sender, args) {
        // if the select event fires due to clicking on the row
        if (args.get_domEvent().type && args.get_domEvent().type == "click") {
            // cancel the event
            args.set_cancel(true);
        } else {
            // access the RadioButton
            var radioButton = $telerik.findControl(args.get_gridDataItem().get_cell("RadioButtonColumn"), "RadRadioButton1");
            // Unchecked the RadioButton
            radioButton.set_checked(false);
        }
    }
</script>
````
````CSS
<style type="text/css">
    .rgSelectedRow .RadRadioButton .rbText,
    .rgSelectedRow .RadRadioButton .rbToggleRadioChecked {
        color: white;
    }
</style>
````
````ASP.NET
<telerik:RadGrid ID="RadGrid1" runat="server" OnNeedDataSource="RadGrid1_NeedDataSource" Width="400px">
    <ClientSettings>
        <Selecting AllowRowSelect="true" />
        <ClientEvents OnRowSelecting="OnRowSelecting" OnRowDeselecting="OnRowDeselecting" />
    </ClientSettings>
    <MasterTableView AutoGenerateColumns="false">
        <Columns>
            <telerik:GridNumericColumn DataField="ID" HeaderText="ID"></telerik:GridNumericColumn>
            <telerik:GridNumericColumn DataField="Description" HeaderText="Description"></telerik:GridNumericColumn>
            <telerik:GridTemplateColumn UniqueName="RadioButtonColumn">
                <ItemTemplate>
                    <telerik:RadRadioButton ID="RadRadioButton1" runat="server" Text="Select" AutoPostBack="false" OnClientCheckedChanged="RadioButtonCheckedChanged"></telerik:RadRadioButton>
                </ItemTemplate>
            </telerik:GridTemplateColumn>
        </Columns>
    </MasterTableView>
</telerik:RadGrid>
````
````C#
protected void RadGrid1_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
{
    (sender as RadGrid).DataSource = Enumerable.Range(1, 3).Select(x => new
    {
        ID = x,
        Description = "Item Description " + x
    });
}
````
````VB
Protected Sub RadGrid1_NeedDataSource(sender As Object, e As GridNeedDataSourceEventArgs)
    DirectCast(sender, RadGrid).DataSource = Enumerable.Range(1, 3).Select(Function(x) New With {
        Key .ID = x,
            .Description = "Item Description " + x
    })
End Sub
````

## See Also


text:
import App from "../app";
import {gql, withFilter} from "apollo-server-express";
import {pubsub} from "../helpers/subscriptionManager";
const mutationHelper = require("../helpers/mutationHelper").default;
// We define a schema that encompasses all of the types
// necessary for the functionality in this file.
const schema = gql`
  type ShortRangeComm implements SystemInterface {
    id: ID
    simulatorId: ID
    type: String
    power: Power
    damage: Damage
    name: String
    displayName: String
    upgradeName: String
    upgraded: Boolean
    stealthFactor: Float
    heat: Float
    coolant: Float
    frequency: Float
    amplitude: Float
    #One of 'idle', 'hailing', 'connected'
    state: String
    arrows: [CommArrow]
    signals: [CommSignal]
    locations: [Room]
  }

  type ShortRangeCommExtended {
    id: ID
    simulatorId: ID
    type: String
    power: Power
    damage: Damage
    name: String
    frequency: Float
    amplitude: Float
    #One of 'idle', 'hailing', 'connected'
    state: String
    arrows: [CommArrow]
    signals: [CommSignal]
  }

  type CommArrow {
    id: ID
    signal: ID
    frequency: Float
    connected: Boolean
    muted: Boolean
  }

  type CommSignal {
    id: ID
    image: String
    name: String
    range: CommRange
    color: String
  }

  type CommArrowExtended {
    id: ID
    signal: ID
    range: String
    frequency: Float
    connected: Boolean
  }

  type CommSignalExtended {
    id: ID
    color: String
    image: String
    name: String
    ranges: CommRanges
  }

  type CommRanges {
    military: CommRange
    commercial: CommRange
    priority: CommRange
    emergency: CommRange
  }

  type CommRange {
    lower: Float
    upper: Float
  }

  input RangeInput {
    upper: Float
    lower: Float
  }
  input CommSignalInput {
    id: ID
    image: String
    name: String
    range: RangeInput
    color: String
  }

  input CommArrowInput {
    id: ID
    signal: ID
    frequency: Float
    connected: Boolean
  }

  input CommUpdateInput {
    state: String
    frequency: Float
    amplitude: Float
  }
  extend type Query {
    shortRangeComm(simulatorId: ID!): [ShortRangeComm]
  }
  extend type Mutation {
    commAddSignal(id: ID!, commSignalInput: CommSignalInput!): String
    commUpdateSignal(id: ID!, commSignalInput: CommSignalInput!): String

    """
    Macro: Short Range: Set Signals
    Requires:
     - Cards:CommShortRange
     - Systems:ShortRangeComm
    """
    commUpdateSignals(id: ID!, signals: [CommSignalInput]!): String
    commRemoveSignal(id: ID!, signalId: ID!): String
    commAddArrow(id: ID!, commArrowInput: CommArrowInput!): String
    commRemoveArrow(id: ID!, arrowId: ID!): String
    commConnectArrow(id: ID!, arrowId: ID!): String
    commDisconnectArrow(id: ID!, arrowId: ID!): String
    commUpdate(id: ID!, commUpdateInput: CommUpdateInput!): String
    commHail(id: ID!): String
    cancelHail(id: ID!, core: Boolean): String
    connectHail(id: ID!): String

    """
    Macro: Short Range: Add Signal
    Requires:
     - Cards:CommShortRange
     - Systems:ShortRangeComm
    """
    addShortRangeComm(
      simulatorId: ID!
      frequency: Float
      signalName: String
    ): String

    """
    Macro: Short Range: Remove Signal
    Requires:
     - Cards:CommShortRange
     - Systems:ShortRangeComm
    """
    removeShortRangeComm(
      simulatorId: ID!
      frequency: Float
      signalName: String
    ): String

    muteShortRangeComm(id: ID!, arrowId: ID!, mute: Boolean!): String
  }
  extend type Subscription {
    shortRangeCommUpdate(simulatorId: ID!): [ShortRangeComm]
  }
`;

const resolver = {
  ShortRangeComm: {
    locations(rootValue) {
      return rootValue.locations.map(r =>
        App.rooms.find(room => room.id === r),
      );
    },
  },
  Query: {
    shortRangeComm(root, {simulatorId}) {
      let returnVal = App.systems.filter(s => s.type === "ShortRangeComm");
      if (simulatorId)
        returnVal = returnVal.filter(s => s.simulatorId === simulatorId);
      return returnVal;
    },
  },
  Mutation: mutationHelper(schema),
  Subscription: {
    shortRangeCommUpdate: {
      resolve(rootValue, {simulatorId}) {
        if (simulatorId) {
          return rootValue.filter(s => s.simulatorId === simulatorId);
        }
        return rootValue;
      },
      subscribe: withFilter(
        () => pubsub.asyncIterator("shortRangeCommUpdate"),
        rootValue => !!(rootValue && rootValue.length),
      ),
    },
  },
};

export default {schema, resolver};


text:
    <meta http-equiv="Content-Type" content="text/html; charset=Windows-1252" />
    <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5" />
    <title>GetSoundSource Method</title>
    <xml>
    </xml>
    <link rel="stylesheet" type="text/css" href="MSDN.css" />

            IrrKlang.NET

ISoundEngine.GetSoundSource Method

Overload List

        public ISoundSource GetSoundSource(string);

        public ISoundSource GetSoundSource(string,bool);

See Also

        ISoundEngine Class | IrrKlang Namespace

          The irrKlang Sound Engine Documentation © 2003-2010 by Nikolaus Gebhardt.


text:
Version 8.1-SNAPSHOT
-------------

Version 8
-------------

CHANGED:

- update to jdk version 11
- rename of main package from 'io.github.astrapi69.crypto.*' to new 'io.github.astrapi69.mystic.crypt.*'
- update gradle to new version 7.5.1
- update of gradle-plugin dependency 'com.diffplug.spotless:spotless-plugin-gradle' to new minor version 6.10.0
- update of crypt-api dependency version to 8.3
- update of crypt-data dependency version to 8.1
- update of dependency file-worker to new version to 11.1
- update of dependency silly-collection to new version to 20
- update of test dependency test-object to new version 7.1
- update of test dependency jobj-core to new version 6.1
- update of test dependency checksum-up to new version 2.1

Version 7.11
-------------

ADDED:

- new constructor with private key in class PrivateKeyDecryptor
- new constructor with private key in class PrivateKeyGenericDecryptor
- new constructor with public key in class PublicKeyEncryptor
- new constructor with public key in class PublicKeyGenericEncryptor

CHANGED:

- update gradle to new version 7.4
- update of dependency randomizer to new version 8.5
- refactored class PublicKeyHexEncryptor and PrivateKeyHexDecryptor and removed deprecated status

Version 7.10
-------------

ADDED:

- new workflow for build repository with github action 'Java CI with Gradle'
- new gradle-plugin dependency of 'com.diffplug.spotless:spotless-plugin-gradle' for format source code
- new gradle-plugin dependency of 'org.ajoberstar.grgit:grgit-gradle' for create git release tags

CHANGED:

- update gradle to new version 7.3.3
- update gradle-plugin dependency of com.github.ben-manes.versions.gradle.plugin to new version 0.42.0
- update of crypt-api dependency version to 7.7
- update of crypt-data dependency version to 7.11.1
- update of dependency jobj-core to new version 5.3
- update of dependency bouncycastle to new version 1.70
- update of test dependency test-objects to new version 5.7
- update of test dependency silly-io to new version 1.7
- update of test dependency testng to new version to 7.5

Version 7.9
-------------

ADDED:

- new encryptor class CharacterSetEncryptor that can encrypt string objects with the character set key
- new decryptor class CharacterSetDecryptor that can decrypt integer list with the character set key algorithm
- new dependency silly-strings in new version 8.1
- improve gradle build performance by adding new gradle parameters for caching, parallel, configure on demand and file
  watch

CHANGED:

- update gradle to new version 7.3
- update of crypt-api dependency version to 7.6.1
- update of crypt-data dependency version to 7.9
- update of dependency file-worker to new version 8.1

Version 7.8
-------------

ADDED:

- new encryptor class OneTimePadEncryptor that can encrypt byte array with the one time pad algorithm
- new decryptor class OneTimePadDecryptor that can decrypt byte array with the one time pad algorithm
- new generic encryptor class PublicKeyGenericEncryptor that can encrypt serializable objects
- new generic decryptor class PrivateKeyGenericDecryptor that can decrypt the byte array back to the serializable object
- new encryptor class BaseByteArrayEncryptor that can encrypt byte array
- new decryptor class BaseByteArrayDecryptor that can decrypt byte array
- new test dependency json-extensions in version 1.1
- new field in class PBEFileEncryptor for set a custom file extension for the encrypted file
- new flag field in class PBEFileEncryptor if true the given file that will be given for encryption will be deleted
- new field in class PBEFileDecryptor for set a custom file extension for the decrypted file
- new flag field in class PBEFileDecryptor if true the given encrypted file that will be given for decryption will be deleted

CHANGED:

- update gradle to new version 7.1
- changed all dependencies from groupid de.alpharogroup to new groupid io.github.astrapi69
- update gradle-plugin dependency of gradle.plugin.com.hierynomus.gradle.plugins:license-gradle-plugin to new version 0.16.1
- update of dependency randomizer version to 8.3
- update of dependency file-worker to new version 5.9
- update of dependency jobj-core to new version 3.9
- update of dependency crypt-data to new version 7.7
- update of test dependency test-objects to new version 5.5
- update of dependency commons-io to new version 2.11.0
- removed unused test dependency xml-extensions

Version 7.7
-------------

ADDED:

- new encryptor classes that can encrypt byte arrays with a password and the counterpart of it the decryptor
- new encryptor classes that can encrypt String object with a password and the counterpart of it the decryptor
- new encryptor classes that can encrypt File object with a password and the counterpart of it the decryptor

CHANGED:

- update of crypt-api dependency version to 7.5
- update of crypt-data dependency version to 7.6
- update of dependency commons-io dependency version to 2.10.0

Version 7.6
-------------

ADDED:

- new dependency guava in version 30.1.1-jre
- new methods created for most common operations on a keystore object in class KeyStoreExtensions
- new dependency commons-io in version 2.9.0
- new dependency commons-lang3 in version 3.12.0
- new dependency silly-beans in version 1.1

CHANGED:

- update of gradle version to 6.9
- changed to new package io.github.astrapi69
- update of file-worker dependency version to 5.7
- update of crypt-api dependency version to 7.4
- update of crypt-data dependency version to 7.5
- update of checksum-up dependency to version 1.2
- update of bouncycastle dependency version to 1.69
- update of xml-extensions test dependency version to 7.1
- update of testng test dependency version to 7.4.0
- update of test-objects test dependency version to 5.4
- update of com.github.ben-manes.versions.gradle.plugin to new version 0.39.0

Version 7.5
-------------

ADDED:

- new class DigitalSignaturesExtensions that signs and verify byte arrays with MessageDigest
- new class SignatureExtensions that signs and verify byte arrays with Signature
- new class KeyStoreExtensions for handle issues with keyStore objects
- new area 'gradle-plugins versions' for hold the versions of the gradle plugins in gradle.properties
- new jar task for build manifest file

CHANGED:

- update of gradle version to 6.7
- update of commons-codec version to 1.15
- update of silly-collections version to 8.4
- update of bouncycastle version to 1.66
- update of jobj-core version to 3.6
- update of randomizer version to 8
- update of testng test dependency version to 7.3.0
- update of checksum-up test dependency version to 1.1
- update of com.github.ben-manes.versions.gradle.plugin to new version 0.34.0
- extracted project gradle plugin versions to gradle.properties

Version 7.4
-------------

CHANGED:

- removed all lombok dependent imports
- update of silly-collections version to 8
- update of randomizer version to 6.8
- update of file-worker dependency version to 5.5
- update of jobj-core version to 3.5
- update of testng test dependency version to 7.1.1
- removed of junit test dependency
- removed of mockito-core test dependency

Version 7.3
-------------

ADDED:

- new idea run configurations for gradle builds created

CHANGED:

- update of silly-collections version to 5.8
- update of randomizer version to 6.4
- update of file-worker dependency version to 5.4
- update of xml-extensions version to 7.1
- update of testng test dependency version to 7.1.0
- update of junit test dependency version to 4.13-rc-2
- update of mockito-core test dependency version to 3.2.0
- moved xml specific classes to project xml-extensions

Version 7.2
-------------

ADDED:

- new encryption and decryption strings with character set over indexes
- new classes created for create checksums for files, serializable and string objects

Version 7.1.2
-------------

CHANGED:

- update of build.gradle and changed from explicit project name with property reference

Version 7.1.1
-------------

CHANGED:

- update of silly-collections version to 5.4
- update of jobj-core version to 3.3
- removed maven related files and directories
- added new gradle plugins for migration of the maven plugins like license update, publish and version check

Version 7.1
-------------

ADDED:

- gradle as build system
- new encryptor class created for encrypting java object in a generic way
- new decryptor class created for decrypt an encrypted {@link File} object that was previously encrypted and return the decrypted result as generic java object
- feature request for decorating crypt objects initial version implemented

CHANGED:

- update of commons-codec version to 1.13
- update of dependency crypt-api version to 7.2
- update of dependency crypt-data version to 7.2
- update of bouncycastle version to 1.64
- update of randomizer version to 6.3
- update of xml-extensions version to 6.2.1

Version 7
-------------

CHANGED:

- removed depracated class CryptConst
- changed from modules to simple project
- moved crypt-api to own project
- moved crypt-data to own project
- moved crypt-core to the top of this project so crypt-core is now mystic-crypt
- new method in the utility class Hasher with private key parameter created

Version 6
-------------

ADDED:

- new dependency jobj-core in version 3.2.1 added
- new dependency jaxb-api in version 2.3.1 added
- new dependency jobj-contract-verifier in version 3.2 added

CHANGED:

- update of parent version to 5.2
- constant class CryptConst tags as deprecated, will be removed in next minor release
- update of guava version to 27.1-jre
- update of commons-codec version to 1.12
- update of bouncycastle version to 1.62
- update of file-worker version to 5.2
- update of jcommons-lang version to 5.2.2
- update of test-objects version to 5.2
- update of silly-collections version to 5.2.1
- update of randomizer version to 6.1
- update of commons-codec version to 1.12
- change provider of code coverage to codecov.io

Version 5.8
-------------

CHANGED:

- update of parent version to 4.6
- update of file-worker version to 5.1
- update of jcommons-lang version to 5.1.1
- update of test-objects version to 5.0.1
- update of silly-collections version to 5.1

Version 5.7
-------------

CHANGED:

- update of parent version to 4.5
- update of file-worker version to 5.0.1
- update of jcommons-lang version to 5.1
- update of silly-collections version to 5
- update of randomizer version to 5.6
- update of guava version to 27.0.1-jre

Version 5.6
-------------

ADDED:

- new enum value NEGATECASE in Operation class that indicates to negate the case of the given character value
- new blockchain classes created for Block, Address and Transaction
- new extension created class for simple obfuscation
- new hash methods created for hash blocks in a blockchain and calculate the merkle root hash
- new obfuscation test data for unit test
- new lombok.config files added to projects

CHANGED:

- moved obfuscation classes to appropriate packages
- update of silly-collections version to 4.34.1
- unit tests extended for improve code coverage
- simple obfuscation implementation improved

Version 5.5
-------------

ADDED:

- new methods for encode and decode string objects in HexExtensions class created
- new enum created that holds union words for chaining algorithms

CHANGED:

- update of parent version to 4.1
- update of file-worker version to 4.23
- update of jcommons-lang version to 4.35
- update of resourcebundle-inspector version to 3
- update of guava version to 26.0-jre

Version 5.4
-------------

ADDED:

- new unit tests created

CHANGED:

- deleted deprecated class
- deleted unit test class deprecated class
- cleaned up of exclude classes in code coverage maven plugin

Version 5.3
-------------

CHANGED:

- javadoc improved and extended
- deleted deprecated methods and classes
- unit tests extended for improve code coverage

Version 5.2
-------------

CHANGED:

- moved auth relevant projects to own [project](https://github.com/astrapi69/auth)
- update of parent version to 4
- removed unneeded .0 at the end of version
- update of file-worker version to 4.22
- update of jcommons-lang version to 4.34
- update of test-objects version to 4.28
- update of silly-collections version to 4.33
- update of jobject-extensions version to 1.12
- update of resourcebundle-inspector version to 2.22
- update of randomizer version to 5.4
- update of bouncycastle version to 1.60
- update of guava version to 25.1-jre
- unit tests extended for improve code coverage

Version 5.1.0
-------------

ADDED:

- moved all left intefaces to the api projects
- moved all enums to the api projects
- provide new package.html for the javadoc of new packages

CHANGED:

- moved random relevant projects to own [project](https://github.com/astrapi69/randomizer)
- update of dependency version of silly-collections
- update of dependency version of jcommons-lang
- update of dependency version of file-worker
- update of dependency version of resourcebundle-inspector
- update of dependency version of jobject-extensions
- unit tests extended for improve code coverage

Version 5.0.0
-------------

ADDED:

- this changelog file
- protect and encrypt private key with password
- write protected private key with password to a file
- paypal button as markdown added
- new classes that declares simple and complex rules for obfuscation of characters
- moved intefaces to new api projects
- added new meanbean dependency for better unit testing of beans
- provide package.html for the javadoc of packages

CHANGED:

- interfaces moved to api projects
- moved several classes to appropriate named packages
- javadoc improved and extended
- deleted deprecated classes
- en- and decryption of file extended
- refactoring: moved classes to appropriate package
- Obfuscation classes uses now guava BiMap

Version 4.24.0
-------------

ADDED:

- new eclipse launch scripts created
- created PULL_REQUEST_TEMPLATE.md file
- created CODE_OF_CONDUCT.md file
- created CONTRIBUTING.md file
- created GoogleMapsUrlSigner class that is a possible solution to that [issue](https://github.com/astrapi69/mystic-crypt/issues/6)
- created new intefaces of blockchain domain
- added guava dependency

CHANGED:

- refactoring of several classes
- update of parent version
- update of dependency version of silly-collections
- update of dependency version of jcommons-lang
- update of dependency version of file-worker
- update of dependency version of test-objects
- sorted pom.xml's

Version 4.23.0
-------------

ADDED:

- new eclipse launch scripts created

CHANGED:

- update of dependency version of silly-collections
- update of dependency version of jcommons-lang
- update of parent version
- update of dependency version of file-worker

Version 4.22.0
-------------

ADDED:

- created new CertificateExtensions, HashExtensions class
- added new reader method for der files
- javadoc image in the READE.md added with a reference to the online javadoc site
- mvn depencencies diagramm image added in the READE.md

CHANGED:

- extended reader and writer methods
- unit tests improved and extended
- javadoc improved and extended
- update of parent version

Version 4.21.0
-------------

ADDED:

- added jsr305 dependency
- new method in CertFactory for create a x509 cert v1
- created new unit tests
- code coverage added
- created new SecureRandomBuilder, CertificateReader and CertificateWriter classes

CHANGED:

- unit tests improved
- javadoc improved and extended

Version 4.20.0
-------------

ADDED:

- created new model class SignInWithRedirectionModel with redirection

CHANGED:

- moved mystic-crypt-ui project to own repository

Version 4.19.0
-------------

ADDED:

- initial version of a obfuscate demo

Version 4.18.0
-------------

ADDED:

- created panels for the demo app
- new enum KeySize created that holds the bit size for private keys
- new class EnableButtonBehavior created for demo project
- create new CipherTypes.dat file that contain ciphers
- generate key pair keys with gui for demo project

CHANGED:

- gui examples extended in the demo project

Version 4.17.0
-------------

ADDED:

- new project mystic-crypt-ui for demos created
- created readers and writers for public and private keys
- new method for resolve the public key from a private key
- new abstract classes for encrypt and decrypt

CHANGED:

- update of license headers
- refactoring: moved several classes to appropriate packages
- optimized factory for cipher creation

Version 4.16.0
-------------

ADDED:

- chainable encryptor and decryptor created
- created new project crypt-data

CHANGED:

- moved all algorithms and enums to the new project crypt-data

Version 4.15.0
-------------

ADDED:

- new classes for encryption and decryption with public and private keys
  that take byte arrays as arguments in the encryption and decryption process
- new class for build a SecureRandom object
- new factory for Certificate object creation
- new inteface Cryptor created for define the operation mode
- new factory class for KeyStore object

CHANGED:

- javadoc extended and improved
- rename of interfaces from encryptor and decryptor
- extended crypt model and adapted related classes
- update of documentation in README.md file

Version 4.14.0
-------------

ADDED:

- new encryptor and decryptor classes for base64 pem files created
- new enum for modes, paddings created
- created new crypt model and extracted all relevant data to the crypt model

CHANGED:

- update of several dependencies versions
- renamed GenericCryptor to AbstractCryptor
- update the abstract cryptor to the new crypt model
- unit tests improved
- javadoc extended and improved

Version 4.13.0
-------------

CHANGED:

- update of several dependencies versions

Version 4.12.0
-------------

ADDED:

- new exception for security created

Version 4.11.0
-------------

ADDED:

- new method for create a random token

CHANGED:

- update of license header from all files

Version 4.10.0
-------------

ADDED:

- create new top25pw.txt for unit tests with WordlistProcessorTest
- create KeyPairAlgorithm class
- create new enum for mac algorithms
- create new interface generators for random data

CHANGED:

- update of Algorithm interface and RandomExtensions class

Version 4.9.0
-------------

ADDED:

- new class Credentials created

CHANGED:

- documentation of README.md file improved and extended
- update of several dependencies versions

Version 4.8.0
-------------

ADDED:

- using git-flow for new releases
- added license header to all files
- new AuthenticationResult class created for authentication

CHANGED:

- documentation of README.md file improved and extended
- javadoc improved and extended

Version 4.7.0
-------------

ADDED:

- New factory classes and new abstract classes for en and decrypting

CHANGED:

- resourcebundle-inspector version upgrade to 2.7.0

Version 4.6.0
-------------

ADDED:

- created new abstract cryptor class with callback methods

CHANGED:

- update of parent version

...

Version 4.2.0
-------------

CHANGED:

- rename of classes to a more appropriate name
- javadoc improved and extended

Version 4.1.0
-------------

CHANGED:

- javadoc improved and extended
- renamed util classes
- deleted depracated classes

Version 4.0.0
-------------

ADDED:

- moved project jaulp.security to mystic-crypt and rename it to auth-security
- created a simple wordlist processor that was requested from an issue

CHANGED:

- new major version 4.0.0 and using new jdk version 8
- altered .travis.yml email address
- update of lombok version to 1.16.6

Version 3.12.0
-------------

ADDED:

- created new maven profile for deploy on sonatype

CHANGED:

- maven-compiler-plugin.version updated to 3.3
- maven-javadoc-plugin.version updated to 2.10.3
- nexus-staging-maven-plugin version updated to version 1.6.5
- Refactoring from method parameters and made method parameters final

Version 3.11.0
-------------

ADDED:

- added flattr image for donations
- added .travis.yml file and build-status image
- moved jaulp.random project as new module project randomizer in parent project mystic-crypt

CHANGED:

- update of lombok version to 1.16.4
- javadoc extended and improved

Version 3.10.0
-------------

ADDED:

- initial version of mystic-crypt
- moved from project jaulp.core
- adoption of version from jaulp.core

CHANGED:

- javadoc extended and improved

-------------

Notable links:
[keep a changelog](http://keepachangelog.com/en/1.0.0/) Don't let your friends dump git logs into changelogs


text:
.class final Lmf/org/apache/xerces/jaxp/validation/XMLSchema;
.super Lmf/org/apache/xerces/jaxp/validation/AbstractXMLSchema;
.source "XMLSchema.java"

# instance fields
.field private final fFullyComposed:Z

.field private final fGrammarPool:Lmf/org/apache/xerces/xni/grammars/XMLGrammarPool;

# direct methods
.method public constructor <init>(Lmf/org/apache/xerces/xni/grammars/XMLGrammarPool;)V
    .locals 1

    const/4 v0, 0x1

    invoke-direct {p0, p1, v0}, Lmf/org/apache/xerces/jaxp/validation/XMLSchema;-><init>(Lmf/org/apache/xerces/xni/grammars/XMLGrammarPool;Z)V

    return-void
.end method

.method public constructor <init>(Lmf/org/apache/xerces/xni/grammars/XMLGrammarPool;Z)V
    .locals 0

    invoke-direct {p0}, Lmf/org/apache/xerces/jaxp/validation/AbstractXMLSchema;-><init>()V

    iput-object p1, p0, Lmf/org/apache/xerces/jaxp/validation/XMLSchema;->fGrammarPool:Lmf/org/apache/xerces/xni/grammars/XMLGrammarPool;

    iput-boolean p2, p0, Lmf/org/apache/xerces/jaxp/validation/XMLSchema;->fFullyComposed:Z

    return-void
.end method

# virtual methods
.method public getGrammarPool()Lmf/org/apache/xerces/xni/grammars/XMLGrammarPool;
    .locals 1

    iget-object v0, p0, Lmf/org/apache/xerces/jaxp/validation/XMLSchema;->fGrammarPool:Lmf/org/apache/xerces/xni/grammars/XMLGrammarPool;

    return-object v0
.end method

.method public isFullyComposed()Z
    .locals 1

    iget-boolean v0, p0, Lmf/org/apache/xerces/jaxp/validation/XMLSchema;->fFullyComposed:Z

    return v0
.end method


text:
{% extends 'base.html' %}

{% load i18n highlight opencommunity %}

{% block extrahead %}
    <link href="{{ STATIC_URL }}search/results_page.css" rel="stylesheet">
{% endblock %}

{% block page_header %} {% trans "Search" %} {% endblock %}

{% block content %}

      {% if type == 'issue' %}

{% trans "All" %}

{% trans "Issues" %}

{% trans "Proposals" %}

      {% elif type == 'proposal' %}

{% trans "All" %}

{% trans "Issues" %}

{% trans "Proposals" %}

      {% else %}

{% trans "All" %}

{% trans "Issues" %}

{% trans "Proposals" %}

      {% endif %}

        {% if query %}

{% trans "Results for" %} '{{ query }}'

			{% if paginator.count %}
                ({% if paginator.num_pages > 1 %}{{ page.start_index }}
                    - {{ page.end_index }}
                {% trans "of" %} {% endif %}{% if type %}{{ real_count }}{% else %}{{ paginator.count }}{% endif %} {% trans "Results" %})
            {% else %}
                {% trans "No Results for" %} '{{ query }}'.
            {% endif %}
            {% for result in page.object_list %}
                {% if result %}

				    {% if result.content_type == 'issues.proposal' %}<li class="drag-icon {% if result.object.type == 1 %}task-icon{% elif result.object.type == 2 %}rule-icon{% elif result.object.type == 3 %}general-icon{% endif %}"
{% endif %}

				    	{{result.object.title}}

				        {% if result.object.type == 1 %}

				            {% if result.object.assigned_to %}
				            {% trans "Assigned to" %}: {{ result.object.assigned_to }}
				            {% endif %}
				            {% if result.object.due_by %}
				            {% trans "Due by" %}: {{ result.object.due_by }}
				            {% endif %}

				        {% endif %}
	                    {% with result.text|striptags as stripped_result_text %}
	                        » {% highlight stripped_result_text with query css_class "highlighted_result" html_tag "span" %}
	                    {% endwith %}

                {% endif %}
            {% empty %}

{% trans "No results found." %}

            {% endfor %}

				{% if page.has_previous %}

					{% trans "Previous" %}

				{% endif %}
				{% if page.has_next %}

					{% trans "Next" %}

				{% endif %}

        {% else %}
            {# Show some example queries to run, maybe query syntax, something else? #}
        {% endif %}
{% endblock %}


text: module.exports = { "default": require("core-js/library/fn/string/ends-with"), __esModule: true };


text:
package com.prelert.job;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.SortedMap;
import java.util.TreeMap;

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.annotation.JsonProperty;

/**
 * Scheduler configuration options.  Describes where to proactively pull input
 * data from.
 *

 * If a value has not been set it will be null.
 * Object wrappers are used around integral types and booleans so they can take
 * null values.
 */
@JsonInclude(Include.NON_NULL)
public class SchedulerConfig implements PasswordStorage
{
    /**
     * Enum of the acceptable data sources.
     */
    public enum DataSource
    {
        FILE, ELASTICSEARCH;

        /**
         * Case-insensitive from string method.
         * Works with ELASTICSEARCH, Elasticsearch, ElasticSearch, etc.
         *
         * @param value String representation
         * @return The data source
         */
        @JsonCreator
        public static DataSource forString(String value)
        {
            String valueUpperCase = value.toUpperCase();
            return DataSource.valueOf(valueUpperCase);
        }
    }

    /**
     * The field name used to specify aggregation fields in Elasticsearch aggregations
     */
    private static final String FIELD = "field";

    /**
     * The field name used to specify document counts in Elasticsearch aggregations
     */
    public static final String DOC_COUNT = "doc_count";

    /**
     * The default query for elasticsearch searches
     */
    private static final String MATCH_ALL_ES_QUERY = "match_all";

    /**
     * Serialisation names
     */
    public static final String DATA_SOURCE = "dataSource";
    public static final String DATA_SOURCE_COMPATIBILITY = "dataSourceCompatibility";
    public static final String QUERY_DELAY = "queryDelay";
    public static final String FREQUENCY = "frequency";
    public static final String FILE_PATH = "filePath";
    public static final String TAIL_FILE = "tailFile";
    public static final String BASE_URL = "baseUrl";
    public static final String USERNAME = "username";
    public static final String PASSWORD = "password";
    public static final String ENCRYPTED_PASSWORD = "encryptedPassword";
    public static final String INDEXES = "indexes";
    public static final String TYPES = "types";
    public static final String QUERY = "query";
    public static final String RETRIEVE_WHOLE_SOURCE = "retrieveWholeSource";
    public static final String SCROLL_SIZE = "scrollSize";
    public static final String AGGREGATIONS = "aggregations";
    public static final String AGGS = "aggs";

    /**
     * Named to match Elasticsearch, hence lowercase_with_underscores instead
     * of camelCase
     */
    public static final String SCRIPT_FIELDS = "script_fields";

    private static final int DEFAULT_SCROLL_SIZE = 1000;
    private static final long DEFAULT_ELASTICSEARCH_QUERY_DELAY = 60L;

    private DataSource m_DataSource;
    private String m_DataSourceCompatibility;

    /**
     * The delay in seconds before starting to query a period of time
     */
    private Long m_QueryDelay;

    /**
     * The frequency in seconds with which queries are executed
     */
    private Long m_Frequency;

    /**
     * These values apply to the FILE data source
     */
    private String m_FilePath;
    private Boolean m_TailFile;

    /**
     * Used for data sources that require credentials.  May be null in the case
     * where credentials are sometimes needed and sometimes not (e.g. Elasticsearch).
     */
    private String m_Username;
    private String m_Password;
    private String m_EncryptedPassword;

    /**
     * These values apply to the ELASTICSEARCH data source
     */
    private String m_BaseUrl;
    private List<String> m_Indexes;
    private List<String> m_Types;
    private Map<String, Object> m_Query;
    private Map<String, Object> m_Aggregations;
    private Map<String, Object> m_Aggs;
    private Map<String, Object> m_ScriptFields;
    private Boolean m_RetrieveWholeSource;
    private Integer m_ScrollSize;

    /**
     * Default constructor
     */
    public SchedulerConfig()
    {
        m_DataSource = DataSource.FILE;
    }

    /**
     * The data source that the scheduler is to pull data from.
     * @return The data source.
     */
    public DataSource getDataSource()
    {
        return m_DataSource;
    }

    public void setDataSource(DataSource dataSource)
    {
        m_DataSource = dataSource;
    }

    /**
     * Gets the compatibility for the data source.
     * @return The data source compatibility.
     */
    public String getDataSourceCompatibility()
    {
        return m_DataSourceCompatibility;
    }

    public void setDataSourceCompatibility(String dataSourceCompatibility)
    {
        m_DataSourceCompatibility = dataSourceCompatibility;
    }

    public Long getQueryDelay()
    {
        return m_QueryDelay;
    }

    public void setQueryDelay(Long delay)
    {
        m_QueryDelay = delay;
    }

    public Long getFrequency()
    {
        return m_Frequency;
    }

    public void setFrequency(Long frequency)
    {
        m_Frequency = frequency;
    }

    /**
     * For the FILE data source only, the path to the file.
     * @return The path to the file, or null if not set.
     */
    public String getFilePath()
    {
        return m_FilePath;
    }

    public void setFilePath(String filePath)
    {
        m_FilePath = filePath;
    }

    /**
     * For the FILE data source only, should the file be tailed?  If not it will
     * just be read from once.
     * @return Should the file be tailed?  (null if not set.)
     */
    public Boolean getTailFile()
    {
        return m_TailFile;
    }

    public void setTailFile(Boolean tailFile)
    {
        m_TailFile = tailFile;
    }

    /**
     * For the ELASTICSEARCH data source only, the base URL to connect to
     * Elasticsearch on.
     * @return The URL, or null if not set.
     */
    public String getBaseUrl()
    {
        return m_BaseUrl;
    }

    public void setBaseUrl(String baseUrl)
    {
        m_BaseUrl = baseUrl;
    }

    /**
     * The username to use to connect to the data source (if any).
     * @return The username, or null if not set.
     */
    public String getUsername()
    {
        return m_Username;
    }

    public void setUsername(String username)
    {
        m_Username = username;
    }

    /**
     * The plain text password to use to connect to the data source (if any).
     * This is likely to return null most of the time, as the
     * intention is that it is only present it initial configurations, and gets
     * replaced with an encrypted password as soon as possible after receipt.
     * @return The password, or null if not set.
     */
    @Override
    public String getPassword()
    {
        return m_Password;
    }

    @Override
    public void setPassword(String password)
    {
        m_Password = password;
    }

    /**
     * The encrypted password to use to connect to the data source (if any).
     * A class outside this package is responsible for encrypting and decrypting
     * the password.
     * @return The password, or null if not set.
     */
    @Override
    public String getEncryptedPassword()
    {
        return m_EncryptedPassword;
    }

    @Override
    public void setEncryptedPassword(String encryptedPassword)
    {
        m_EncryptedPassword = encryptedPassword;
    }

    /**
     * For the ELASTICSEARCH data source only, one or more indexes to search for
     * input data.
     * @return The indexes to search, or null if not set.
     */
    public List<String> getIndexes()
    {
        return m_Indexes;
    }

    public void setIndexes(List<String> indexes)
    {
        m_Indexes = indexes;
    }

    /**
     * For the ELASTICSEARCH data source only, one or more types to search for
     * input data.
     * @return The types to search, or null if not set.
     */
    public List<String> getTypes()
    {
        return m_Types;
    }

    public void setTypes(List<String> types)
    {
        m_Types = types;
    }

    /**
     * For the ELASTICSEARCH data source only, the Elasticsearch query DSL
     * representing the query to submit to Elasticsearch to get the input data.
     * This should not include time bounds, as these are added separately.
     * This class does not attempt to interpret the query.  The map will be
     * converted back to an arbitrary JSON object.
     * @return The search query, or null if not set.
     */
    public Map<String, Object> getQuery()
    {
        return m_Query;
    }

    public void setQuery(Map<String, Object> query)
    {
        m_Query = query;
    }

    /**
     * For the ELASTICSEARCH data source only, should the whole _source document
     * be retrieved for analysis, or just the analysis fields?
     * @return Should the whole of _source be retrieved?  (null if not set.)
     */
    public Boolean getRetrieveWholeSource()
    {
        return m_RetrieveWholeSource;
    }

    public void setRetrieveWholeSource(Boolean retrieveWholeSource)
    {
        m_RetrieveWholeSource = retrieveWholeSource;
    }

    /**
     * For the ELASTICSEARCH data source only, get the size of documents to
     * be retrieved from each shard via a scroll search
     * @return The size of documents to be retrieved from each shard via a scroll search
     */
    public Integer getScrollSize()
    {
        return m_ScrollSize;
    }

    public void setScrollSize(Integer scrollSize)
    {
        m_ScrollSize = scrollSize;
    }

    /**
     * For the ELASTICSEARCH data source only, optional Elasticsearch
     * script_fields to add to the search to be submitted to Elasticsearch to
     * get the input data.  This class does not attempt to interpret the
     * script fields.  The map will be converted back to an arbitrary JSON object.
     * @return The script fields, or null if not set.
     */
    @JsonProperty("script_fields")
    public Map<String, Object> getScriptFields()
    {
        return m_ScriptFields;
    }

    @JsonProperty("script_fields")
    public void setScriptFields(Map<String, Object> scriptFields)
    {
        m_ScriptFields = scriptFields;
    }

    /**
     * For the ELASTICSEARCH data source only, optional Elasticsearch
     * aggregations to apply to the search to be submitted to Elasticsearch to
     * get the input data.  This class does not attempt to interpret the
     * aggregations.  The map will be converted back to an arbitrary JSON object.
     * Synonym for {@link getAggs()} (like Elasticsearch).
     * @return The aggregations, or null if not set.
     */
    public Map<String, Object> getAggregations()
    {
        return m_Aggregations;
    }

    public void setAggregations(Map<String, Object> aggregations)
    {
        // It's only expected that one of aggregations or aggs will be set,
        // having two member variables makes it easier to remember which the
        // user used so their input can be recreated
        m_Aggregations = aggregations;
    }

    /**
     * For the ELASTICSEARCH data source only, optional Elasticsearch
     * aggregations to apply to the search to be submitted to Elasticsearch to
     * get the input data.  This class does not attempt to interpret the
     * aggregations.  The map will be converted back to an arbitrary JSON object.
     * Synonym for {@link getAggregations()} (like Elasticsearch).
     * @return The aggregations, or null if not set.
     */
    public Map<String, Object> getAggs()
    {
        return m_Aggs;
    }

    public void setAggs(Map<String, Object> aggs)
    {
        // It's only expected that one of aggregations or aggs will be set,
        // having two member variables makes it easier to remember which the
        // user used so their input can be recreated
        m_Aggs = aggs;
    }

    /**
     * Convenience method to get either aggregations or aggs.
     * @return The aggregations (whether initially specified in aggregations
     * or aggs), or null if neither are set.
     */
    @JsonIgnore
    public Map<String, Object> getAggregationsOrAggs()
    {
        return (m_Aggregations != null) ? m_Aggregations : m_Aggs;
    }

    /**
     * Build the list of fields expected in the output from aggregations
     * submitted to Elasticsearch.
     * @return The list of fields, or empty list if there are no aggregations.
     */
    public List<String> buildAggregatedFieldList()
    {
        Map<String, Object> aggs = getAggregationsOrAggs();
        if (aggs == null)
        {
            return Collections.emptyList();
        }

        SortedMap<Integer, String> orderedFields = new TreeMap<>();

        scanSubLevel(aggs, 0, orderedFields);

        return new ArrayList<>(orderedFields.values());
    }

    @SuppressWarnings("unchecked")
    private void scanSubLevel(Map<String, Object> subLevel, int depth,
            SortedMap<Integer, String> orderedFields)
    {
        for (Map.Entry<String, Object> entry : subLevel.entrySet())
        {
            Object value = entry.getValue();
            if (value instanceof Map<?, ?>)
            {
                scanSubLevel((Map<String, Object>)value, depth + 1, orderedFields);
            }
            else if (value instanceof String && FIELD.equals(entry.getKey()))
            {
                orderedFields.put(depth, (String)value);
            }
        }
    }

    public void fillDefaults()
    {
        switch (m_DataSource)
        {
            case ELASTICSEARCH:
                fillElasticsearchDefaults();
                break;
            case FILE:
                fillFileDefaults();
                break;
            default:
                throw new IllegalStateException();
        }
    }

    private void fillElasticsearchDefaults()
    {
        if (m_Query == null)
        {
            m_Query = new HashMap<>();
            m_Query.put(MATCH_ALL_ES_QUERY, new HashMap<String, Object>());
        }
        if (m_QueryDelay == null)
        {
            m_QueryDelay = DEFAULT_ELASTICSEARCH_QUERY_DELAY;
        }
        if (m_RetrieveWholeSource == null)
        {
            m_RetrieveWholeSource = false;
        }
        if (m_ScrollSize == null)
        {
            m_ScrollSize = DEFAULT_SCROLL_SIZE;
        }
    }

    private void fillFileDefaults()
    {
        if (m_TailFile == null)
        {
            m_TailFile = false;
        }
    }

    /**
     * The lists of indexes and types are compared for equality but they are not
     * sorted first so this test could fail simply because the indexes and types
     * lists are in different orders.
     */
    @Override
    public boolean equals(Object other)
    {
        if (this == other)
        {
            return true;
        }

        if (other instanceof SchedulerConfig == false)
        {
            return false;
        }

        SchedulerConfig that = (SchedulerConfig)other;

        return Objects.equals(this.m_DataSource, that.m_DataSource) &&
                Objects.equals(this.m_DataSourceCompatibility, that.m_DataSourceCompatibility) &&
                Objects.equals(this.m_Frequency, that.m_Frequency) &&
                Objects.equals(this.m_QueryDelay, that.m_QueryDelay) &&
                Objects.equals(this.m_FilePath, that.m_FilePath) &&
                Objects.equals(this.m_TailFile, that.m_TailFile) &&
                Objects.equals(this.m_BaseUrl, that.m_BaseUrl) &&
                Objects.equals(this.m_Username, that.m_Username) &&
                Objects.equals(this.m_Password, that.m_Password) &&
                Objects.equals(this.m_EncryptedPassword, that.m_EncryptedPassword) &&
                Objects.equals(this.m_Indexes, that.m_Indexes) &&
                Objects.equals(this.m_Types, that.m_Types) &&
                Objects.equals(this.m_Query, that.m_Query) &&
                Objects.equals(this.m_RetrieveWholeSource, that.m_RetrieveWholeSource) &&
                Objects.equals(this.m_ScrollSize, that.m_ScrollSize) &&
                Objects.equals(this.getAggregationsOrAggs(), that.getAggregationsOrAggs()) &&
                Objects.equals(this.m_ScriptFields, that.m_ScriptFields);
    }

    @Override
    public int hashCode()
    {
        return Objects.hash(m_DataSource, m_DataSourceCompatibility, m_Frequency, m_QueryDelay,
                m_FilePath, m_TailFile, m_BaseUrl, m_Username, m_Password, m_EncryptedPassword,
                m_Indexes, m_Types, m_Query, m_RetrieveWholeSource, m_ScrollSize,
                getAggregationsOrAggs(), m_ScriptFields);
    }
}


text:
{% extends "layout.html" %} {% block page_title %} Example - Forms {% endblock %} {% block content %}

  {% include "includes/phase_banner_alpha.html" %}

  {% include "custom_inc/backlink.html" %}

      <form method="get" action="/design_patterns/routing_questions/phone_questions/scaffolding_ladders" class="form">

      {{formData | safe}}

          Are you building a structure for animal welfare or cleaning gravel for fish spawning?

        <fieldset>
          <legend class="visuallyhidden">
            Are you building a structure for animal welfare or cleaning gravel for fish spawning?
          </legend>

              <input type="radio" name="animal_welfare" value="yes">
              Yes

              <input type="radio" name="animal_welfare" value="no">
              No

        </fieldset>

          <input type="submit" class="button" value="Continue" />

      </form>

{% endblock %}


text:
<?php

declare(strict_types=1);

namespace KejawenLab\Application\SemartHris\Controller\Admin;

use KejawenLab\Application\SemartHris\Component\Salary\StateType;
use KejawenLab\Application\SemartHris\Component\Setting\Service\Setting;
use KejawenLab\Application\SemartHris\Component\Setting\SettingKey;
use KejawenLab\Application\SemartHris\Repository\SalaryComponentRepository;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;

/**
 * @author Muhamad Surya Iksanudin <surya.iksanudin@gmail.com>
 */
class SalaryComponentController extends AdminController
{
    /**
     * @Route("/salary-component", name="salary_component", options={"expose"=true})
     * @Method("GET")
     *
     * @param Request $request
     *
     * @return JsonResponse
     */
    public function findByStateAction(Request $request)
    {
        $this->denyAccessUnlessGranted($this->container->get(Setting::class)->get(SettingKey::SECURITY_PAYROLL_MENU));

        return new JsonResponse(['components' => $this->container->get(SalaryComponentRepository::class)->findByState($request->query->get('state', StateType::STATE_PLUS))]);
    }

    /**
     * @Route("/salary-component/fixed", name="fixed_component", options={"expose"=true})
     * @Method("GET")
     *
     * @return Response
     */
    public function findFixedAction()
    {
        $this->denyAccessUnlessGranted($this->container->get(Setting::class)->get(SettingKey::SECURITY_PAYROLL_MENU));

        return new JsonResponse(['components' => $this->container->get(SalaryComponentRepository::class)->findFixed()]);
    }
}