alloy

alloy

  • Docs

›Getting Started

Getting Started

  • Studio
  • Language
  • Released Functions
  • Upcoming Functions
  • Execution
  • SDLC
  • Cube
  • Graph
  • Services
  • Legal
  • Contribute

Upcoming Functions

abs

abs(number: Number[1]): Number[1]
  • Parameters
    • number: Number[1]
  • Returns
    • Number[1]

acos

acos(number: Number[1]): Float[1]
  • Parameters
    • number: Number[1]
  • Returns
    • Float[1]

asin

asin(number: Number[1]): Float[1]
  • Parameters
    • number: Number[1]
  • Returns
    • Float[1]

atan

atan(number: Number[1]): Float[1]
  • Parameters
    • number: Number[1]
  • Returns
    • Float[1]

atan2

atan2(number1: Number[1], number2: Number[1]): Float[1]
  • Parameters
    • number1: Number[1]
    • number2: Number[1]
  • Returns
    • Float[1]

ceiling

ceiling(number: Number[1]): Integer[1]
  • Parameters
    • number: Number[1]
  • Returns
    • Integer[1]

columnProjectionsFromRoot

columnProjectionsFromRoot(a: Any[*], relation: NamedRelation[1], columnNames: String[*], distinct: Boolean[0..1], limit: Integer[0..1]): RelationData[1]
  • Parameters
    • a: Any[*]
    • relation: NamedRelation[1]
    • columnNames: String[*]
    • distinct: Boolean[0..1]
    • limit: Integer[0..1]
  • Returns
    • RelationData[1]

concatenate

Append the rows from the second TDS to the rows in the first TDS. N.B. The column must be the same for the two input TDSs
concatenate(tds1: TabularDataSet[1], tds2: TabularDataSet[1]): TabularDataSet[1]
  • Parameters
    • tds1: TabularDataSet[1]
    • tds2: TabularDataSet[1]
  • Returns
    • TabularDataSet[1]

cos

cos(number: Number[1]): Float[1]
  • Parameters
    • number: Number[1]
  • Returns
    • Float[1]

dateDiff

dateDiff(d1: Date[1], d2: Date[1], du: DurationUnit[1]): Integer[1]
  • Parameters
    • d1: Date[1]
    • d2: Date[1]
    • du: DurationUnit[1]
  • Returns
    • Integer[1]

datePart

datePart(d: Date[1]): Date[1]
  • Parameters
    • d: Date[1]
  • Returns
    • Date[1]

dayOfMonth

dayOfMonth(d: Date[1]): Integer[1]
  • Parameters
    • d: Date[1]
  • Returns
    • Integer[1]

dayOfWeekNumber

dayOfWeekNumber(d: Date[1]): Integer[1]
  • Parameters
    • d: Date[1]
  • Returns
    • Integer[1]

deepFetchGetAll

deepFetchGetAll<T>(type: Class<T<[1], dfTT: DeepFetchTempTable[1]): T[*]
  • Parameters
    • type: Class<T<[1]
    • dfTT: DeepFetchTempTable[1]
  • Returns
    • T[*]

distinct

Remove duplicate rows from the priovded TDS
distinct(tds: TabularDataSet[1]): TabularDataSet[1]
  • Parameters
    • tds: TabularDataSet[1]
  • Returns
    • TabularDataSet[1]

drop

Reduce the number of rows in the provided TDS, dropping the first set of rows based on the specified size
drop(tds: TabularDataSet[1], size: Integer[1]): TabularDataSet[1]
  • Parameters
    • tds: TabularDataSet[1]
    • size: Integer[1]
  • Returns
    • TabularDataSet[1]

eq

eq(left: Any[1], right: Any[1]): Boolean[1]
  • Parameters
    • left: Any[1]
    • right: Any[1]
  • Returns
    • Boolean[1]

eval

eval<T, V>(func: Function<{T[n]->V[m]}<[1], param: T[n]): V[m]
  • Parameters
    • func: Function<{T[n]->V[m]}<[1]
    • param: T[n]
  • Returns
    • V[m]
eval<V>(func: Function<{->V[m]}<[1]): V[m]
  • Parameters
    • func: Function<{->V[m]}<[1]
  • Returns
    • V[m]

exp

exp(exponent: Number[1]): Float[1]
  • Parameters
    • exponent: Number[1]
  • Returns
    • Float[1]

extend

Add additional new calculated columns to the provided TDS
extend(tds: TabularDataSet[1], newColumnFunctions: BasicColumnSpecification<TDSRow<[*]): TabularDataSet[1]
  • Parameters
    • tds: TabularDataSet[1]
    • newColumnFunctions: BasicColumnSpecification<TDSRow<[*]
  • Returns
    • TabularDataSet[1]

extractEnumValue

extractEnumValue<T>(enum: Enumeration<T<[1], value: String[1]): T[1]
  • Parameters
    • enum: Enumeration<T<[1]
    • value: String[1]
  • Returns
    • T[1]

filter

Reduce the number of rows in the provided TDS, selecting the set of rows that match the provided filter function
filter(tds: TabularDataSet[1], f: Function<{TDSRow[1]->Boolean[1]}<[1]): TabularDataSet[1]
  • Parameters
    • tds: TabularDataSet[1]
    • f: Function<{TDSRow[1]->Boolean[1]}<[1]
  • Returns
    • TabularDataSet[1]

firstDayOfMonth

firstDayOfMonth(date: Date[1]): Date[1]
  • Parameters
    • date: Date[1]
  • Returns
    • Date[1]

firstDayOfQuarter

firstDayOfQuarter(date: Date[1]): StrictDate[1]
  • Parameters
    • date: Date[1]
  • Returns
    • StrictDate[1]

firstDayOfThisMonth

firstDayOfThisMonth(): Date[1]
  • Returns
    • Date[1]

firstDayOfThisQuarter

firstDayOfThisQuarter(): StrictDate[1]
  • Returns
    • StrictDate[1]

firstDayOfThisYear

firstDayOfThisYear(): Date[1]
  • Returns
    • Date[1]

firstDayOfWeek

firstDayOfWeek(date: Date[1]): Date[1]
  • Parameters
    • date: Date[1]
  • Returns
    • Date[1]

firstDayOfYear

firstDayOfYear(date: Date[1]): Date[1]
  • Parameters
    • date: Date[1]
  • Returns
    • Date[1]

floor

floor(number: Number[1]): Integer[1]
  • Parameters
    • number: Number[1]
  • Returns
    • Integer[1]

getAll

getAll<T>(type: Class<T<[1], milestoningDate: Date[1]): T[*]
  • Parameters
    • type: Class<T<[1]
    • milestoningDate: Date[1]
  • Returns
    • T[*]
getAll<T>(type: Class<T<[1], processingDate: Date[1], businessDate: Date[1]): T[*]
  • Parameters
    • type: Class<T<[1]
    • processingDate: Date[1]
    • businessDate: Date[1]
  • Returns
    • T[*]
getAll<T>(type: Class<T<[1]): T[*]
  • Parameters
    • type: Class<T<[1]
  • Returns
    • T[*]

getAllVersions

getAllVersions<T>(type: Class<T<[1]): T[*]
  • Parameters
    • type: Class<T<[1]
  • Returns
    • T[*]

getAllVersionsInRange

getAllVersionsInRange<T>(type: Class<T<[1], start: Date[1], end: Date[1]): T[*]
  • Parameters
    • type: Class<T<[1]
    • start: Date[1]
    • end: Date[1]
  • Returns
    • T[*]

graphFetch

graphFetch<T>(collection: T[*], graphFetchTree: RootGraphFetchTree<T<[1]): T[*]
  • Parameters
    • collection: T[*]
    • graphFetchTree: RootGraphFetchTree<T<[1]
  • Returns
    • T[*]
graphFetch<T>(collection: T[*], graphFetchTree: RootGraphFetchTree<T<[1], batchSize: Integer[1]): T[*]
  • Parameters
    • collection: T[*]
    • graphFetchTree: RootGraphFetchTree<T<[1]
    • batchSize: Integer[1]
  • Returns
    • T[*]

greaterThan

greaterThan(left: Date[1], right: Date[1]): Boolean[1]
  • Parameters
    • left: Date[1]
    • right: Date[1]
  • Returns
    • Boolean[1]

greaterThanEqual

greaterThanEqual(left: Date[1], right: Date[1]): Boolean[1]
  • Parameters
    • left: Date[1]
    • right: Date[1]
  • Returns
    • Boolean[1]

groupBy

groupBy<K, V, U>(set: K[*], functions: Function<{K[1]->Any[*]}<[*], aggValues: AggregateValue<K,V,U<[*], ids: String[*]): TabularDataSet[1]
  • Parameters
    • set: K[*]
    • functions: Function<{K[1]->Any[*]}<[*]
    • aggValues: AggregateValue<K,V,U<[*]
    • ids: String[*]
  • Returns
    • TabularDataSet[1]
Aggregate the data within the provided TDS using the specified groupings and aggregation functions
groupBy<T, U>(tds: TabularDataSet[1], columns: String[*], aggValues: AggregateValue<T,U<[*]): TabularDataSet[1]
  • Parameters
    • tds: TabularDataSet[1]
    • columns: String[*]
    • aggValues: AggregateValue<T,U<[*]
  • Returns
    • TabularDataSet[1]
  • Usage
{|Person->getAll()->project({p|$p.firstName}, 'firstName')->groupBy('firstName', 'new'->agg({e|$e}, {y|$y->count()}))}

groupByWithWindowSubset

groupByWithWindowSubset<K, V, U>(set: K[*], functions: Function<{K[1]->Any[*]}<[*], aggValues: AggregateValue<K,V,U<[*], ids: String[*], subSelectIds: String[*], subAggIds: String[*]): TabularDataSet[1]
  • Parameters
    • set: K[*]
    • functions: Function<{K[1]->Any[*]}<[*]
    • aggValues: AggregateValue<K,V,U<[*]
    • ids: String[*]
    • subSelectIds: String[*]
    • subAggIds: String[*]
  • Returns
    • TabularDataSet[1]

hour

hour(d: Date[1]): Integer[1]
  • Parameters
    • d: Date[1]
  • Returns
    • Integer[1]

join

Join the two provided TDSs using the specified join type using the specified columns as keys
join(leftTds: TabularDataSet[1], rightTds: TabularDataSet[1], type: JoinType[1], leftTdsCols: String[1..*], rightTdsCols: String[1..*]): TabularDataSet[1]
  • Parameters
    • leftTds: TabularDataSet[1]
    • rightTds: TabularDataSet[1]
    • type: JoinType[1]
    • leftTdsCols: String[1..*]
    • rightTdsCols: String[1..*]
  • Returns
    • TabularDataSet[1]
Join the two provided TDSs using the specified join type and condition
join(tds1: TabularDataSet[1], tds2: TabularDataSet[1], type: JoinType[1], joinCondition: Function<{TDSRow[1],TDSRow[1]->Boolean[1]}<[1]): TabularDataSet[1]
  • Parameters
    • tds1: TabularDataSet[1]
    • tds2: TabularDataSet[1]
    • type: JoinType[1]
    • joinCondition: Function<{TDSRow[1],TDSRow[1]->Boolean[1]}<[1]
  • Returns
    • TabularDataSet[1]

lessThan

lessThan(left: Date[1], right: Date[1]): Boolean[1]
  • Parameters
    • left: Date[1]
    • right: Date[1]
  • Returns
    • Boolean[1]

lessThanEqual

lessThanEqual(left: Date[1], right: Date[1]): Boolean[1]
  • Parameters
    • left: Date[1]
    • right: Date[1]
  • Returns
    • Boolean[1]

limit

Reduce the number of rows in the provided TDS if a size is specified (otherwise returns original rows), taking the first set of rows based on the specified size
limit(tds: TabularDataSet[1], size: Integer[0..1]): TabularDataSet[1]
  • Parameters
    • tds: TabularDataSet[1]
    • size: Integer[0..1]
  • Returns
    • TabularDataSet[1]
Reduce the number of rows in the provided TDS, taking the first set of rows based on the specified size
limit(tds: TabularDataSet[1], size: Integer[1]): TabularDataSet[1]
  • Parameters
    • tds: TabularDataSet[1]
    • size: Integer[1]
  • Returns
    • TabularDataSet[1]

log

log(value: Number[1]): Float[1]
  • Parameters
    • value: Number[1]
  • Returns
    • Float[1]

minute

minute(d: Date[1]): Integer[1]
  • Parameters
    • d: Date[1]
  • Returns
    • Integer[1]

mod

mod(dividend: Integer[1], divisor: Integer[1]): Integer[1]
  • Parameters
    • dividend: Integer[1]
    • divisor: Integer[1]
  • Returns
    • Integer[1]

monthNumber

monthNumber(d: Date[1]): Integer[1]
  • Parameters
    • d: Date[1]
  • Returns
    • Integer[1]

mostRecentDayOfWeek

Returns the most recent instance of the given day of the week that is no later than today.
mostRecentDayOfWeek(day: DayOfWeek[1]): Date[1]
  • Parameters
    • day: DayOfWeek[1]
  • Returns
    • Date[1]
Returns the most recent instance of the given day of the week that is no later than the given date.
mostRecentDayOfWeek(date: Date[1], day: DayOfWeek[1]): Date[1]
  • Parameters
    • date: Date[1]
    • day: DayOfWeek[1]
  • Returns
    • Date[1]

olapGroupBy

olapGroupBy<T>(tds: TabularDataSet[1], operation: OlapOperation<T<[1], columnName: String[1]): TabularDataSet[1]
  • Parameters
    • tds: TabularDataSet[1]
    • operation: OlapOperation<T<[1]
    • columnName: String[1]
  • Returns
    • TabularDataSet[1]
olapGroupBy<T>(tds: TabularDataSet[1], columns: String[*], operation: OlapOperation<T<[1], columnName: String[1]): TabularDataSet[1]
  • Parameters
    • tds: TabularDataSet[1]
    • columns: String[*]
    • operation: OlapOperation<T<[1]
    • columnName: String[1]
  • Returns
    • TabularDataSet[1]
olapGroupBy<T>(tds: TabularDataSet[1], columns: String[*], sortBy: SortInformation[0..1], operation: OlapOperation<T<[1], columnName: String[1]): TabularDataSet[1]
  • Parameters
    • tds: TabularDataSet[1]
    • columns: String[*]
    • sortBy: SortInformation[0..1]
    • operation: OlapOperation<T<[1]
    • columnName: String[1]
  • Returns
    • TabularDataSet[1]
olapGroupBy<T>(tds: TabularDataSet[1], sort: SortInformation[0..1], operation: OlapOperation<T<[1], columnName: String[1]): TabularDataSet[1]
  • Parameters
    • tds: TabularDataSet[1]
    • sort: SortInformation[0..1]
    • operation: OlapOperation<T<[1]
    • columnName: String[1]
  • Returns
    • TabularDataSet[1]

parseDate

parseDate(string: String[1]): Date[1]
  • Parameters
    • string: String[1]
  • Returns
    • Date[1]

pow

pow(base: Number[1], exponent: Number[1]): Number[1]
  • Parameters
    • base: Number[1]
    • exponent: Number[1]
  • Returns
    • Number[1]

previousDayOfWeek

Returns the most recent instance of the given day of the week that is strictly before today.
previousDayOfWeek(day: DayOfWeek[1]): Date[1]
  • Parameters
    • day: DayOfWeek[1]
  • Returns
    • Date[1]
Returns the most recent instance of the given day of the week that is strictly before the given date.
previousDayOfWeek(date: Date[1], day: DayOfWeek[1]): Date[1]
  • Parameters
    • date: Date[1]
    • day: DayOfWeek[1]
  • Returns
    • Date[1]

project

Project the values from the lambda functions specified to create a new TDS
project<K>(set: K[*], functions: Function<{K[1]->Any[*]}<[*], ids: String[*]): TabularDataSet[1]
  • Parameters
    • set: K[*]
    • functions: Function<{K[1]->Any[*]}<[*]
    • ids: String[*]
  • Returns
    • TabularDataSet[1]
Project the values from the property paths specified to create a new TDS
project<T>(set: T[*], paths: Path<T,Any|*>[*]): TabularDataSet[1]
  • Parameters
    • set: T[*]
    • paths: Path<T,Any|*>[*]
  • Returns
    • TabularDataSet[1]
Project the specified calculated columns from the provided TDS. This is similar to extend, but rather than adding the columns it replaces all of the existing ones
project(tds: TableTDS[1], columnFunctions: ColumnSpecification<TDSRow<[*]): TabularDataSet[1]
  • Parameters
    • tds: TableTDS[1]
    • columnFunctions: ColumnSpecification<TDSRow<[*]
  • Returns
    • TabularDataSet[1]
Project the values from the columns specifications provided to create a new TDS
project<T>(set: T[*], columnSpecifications: ColumnSpecification<T<[*]): TabularDataSet[1]
  • Parameters
    • set: T[*]
    • columnSpecifications: ColumnSpecification<T<[*]
  • Returns
    • TabularDataSet[1]
Project the specified calculated columns from the provided TDS. This is similar to extend, but rather than adding the columns it replaces all of the existing ones
project(tds: TabularDataSet[1], columnFunctions: ColumnSpecification<TDSRow<[*]): TabularDataSet[1]
  • Parameters
    • tds: TabularDataSet[1]
    • columnFunctions: ColumnSpecification<TDSRow<[*]
  • Returns
    • TabularDataSet[1]

projectWithColumnSubset

projectWithColumnSubset<T>(set: T[*], columnSpecifications: ColumnSpecification<T<[*], columnList: String[*]): TabularDataSet[1]
  • Parameters
    • set: T[*]
    • columnSpecifications: ColumnSpecification<T<[*]
    • columnList: String[*]
  • Returns
    • TabularDataSet[1]
projectWithColumnSubset<T>(set: T[*], functions: Function<{T[1]->Any[*]}<[*], ids: String[*], columnList: String[*]): TabularDataSet[1]
  • Parameters
    • set: T[*]
    • functions: Function<{T[1]->Any[*]}<[*]
    • ids: String[*]
    • columnList: String[*]
  • Returns
    • TabularDataSet[1]

quarterNumber

quarterNumber(d: Date[1]): Integer[1]
  • Parameters
    • d: Date[1]
  • Returns
    • Integer[1]

renameColumns

Rename the specified columns in the provided TDS to a new name
renameColumns(tds: TabularDataSet[1], columnMappings: Pair<String,String<[*]): TabularDataSet[1]
  • Parameters
    • tds: TabularDataSet[1]
    • columnMappings: Pair<String,String<[*]
  • Returns
    • TabularDataSet[1]

reportDelta

reportDelta<T>(input: T[m], strategy: ReportDeltaStrategy[1]): T[m]
  • Parameters
    • input: T[m]
    • strategy: ReportDeltaStrategy[1]
  • Returns
    • T[m]

restrict

Restrict / reduce the columns from within the provided TDS
restrict(tds: TabularDataSet[1], columnNames: String[*]): TabularDataSet[1]
  • Parameters
    • tds: TabularDataSet[1]
    • columnNames: String[*]
  • Returns
    • TabularDataSet[1]

second

second(d: Date[1]): Integer[1]
  • Parameters
    • d: Date[1]
  • Returns
    • Integer[1]

sin

sin(number: Number[1]): Float[1]
  • Parameters
    • number: Number[1]
  • Returns
    • Float[1]

slice

Reduce the number of rows in the provided TDS, selecting the set of rows in the specified range between start and stop
slice(tds: TabularDataSet[1], start: Integer[1], stop: Integer[1]): TabularDataSet[1]
  • Parameters
    • tds: TabularDataSet[1]
    • start: Integer[1]
    • stop: Integer[1]
  • Returns
    • TabularDataSet[1]

sort

Sort the provided TDS based on the specified column (with ascending direction)
sort(tds: TabularDataSet[1], columns: String[*]): TabularDataSet[1]
  • Parameters
    • tds: TabularDataSet[1]
    • columns: String[*]
  • Returns
    • TabularDataSet[1]
Sort the provided TDS based on the specified column & direction
sort(tds: TabularDataSet[1], column: String[1], direction: SortDirection[1]): TabularDataSet[1]
  • Parameters
    • tds: TabularDataSet[1]
    • column: String[1]
    • direction: SortDirection[1]
  • Returns
    • TabularDataSet[1]
Sort the provided TDS based on the specified information (sorting is based on order of the sort information)
sort(tds: TabularDataSet[1], sortInfo: SortInformation[*]): TabularDataSet[1]
  • Parameters
    • tds: TabularDataSet[1]
    • sortInfo: SortInformation[*]
  • Returns
    • TabularDataSet[1]

sortBy

sortBy<T, U>(col: T[m], key: Function<{T[1]->U[1]}<[0..1]): T[m]
  • Parameters
    • col: T[m]
    • key: Function<{T[1]->U[1]}<[0..1]
  • Returns
    • T[m]

sqrt

sqrt(number: Number[1]): Float[1]
  • Parameters
    • number: Number[1]
  • Returns
    • Float[1]

stdDevPopulation

stdDevPopulation(numbers: Number[*]): Number[1]
  • Parameters
    • numbers: Number[*]
  • Returns
    • Number[1]

stdDevSample

stdDevSample(numbers: Number[*]): Number[1]
  • Parameters
    • numbers: Number[*]
  • Returns
    • Number[1]

subType

subType<T>(source: Any[m], object: T[1]): T[m]
  • Parameters
    • source: Any[m]
    • object: T[1]
  • Returns
    • T[m]

tableToTDS

tableToTDS(table: Table[1]): TableTDS[1]
  • Parameters
    • table: Table[1]
  • Returns
    • TableTDS[1]

take

Reduce the number of rows in the provided TDS, taking the first set of rows based on the specified size
take(tds: TabularDataSet[1], size: Integer[1]): TabularDataSet[1]
  • Parameters
    • tds: TabularDataSet[1]
    • size: Integer[1]
  • Returns
    • TabularDataSet[1]
  • Usage
{|Person->getAll()->project(name)->take(0)}

tan

tan(number: Number[1]): Float[1]
  • Parameters
    • number: Number[1]
  • Returns
    • Float[1]

tdsContains

tdsContains<T>(object: T[1], functions: Function<{T[1]->Any[0..1]}<[*], ids: String[*], tds: TabularDataSet[1], crossOperation: Function<{TDSRow[1],TDSRow[1]->Boolean[1]}<[1]): Boolean[1]
  • Parameters
    • object: T[1]
    • functions: Function<{T[1]->Any[0..1]}<[*]
    • ids: String[*]
    • tds: TabularDataSet[1]
    • crossOperation: Function<{TDSRow[1],TDSRow[1]->Boolean[1]}<[1]
  • Returns
    • Boolean[1]
tdsContains<T>(object: T[1], functions: Function<{T[1]->Any[0..1]}<[*], tds: TabularDataSet[1]): Boolean[1]
  • Parameters
    • object: T[1]
    • functions: Function<{T[1]->Any[0..1]}<[*]
    • tds: TabularDataSet[1]
  • Returns
    • Boolean[1]

tdsRows

tdsRows(tds: TabularDataSet[1]): TDSRow[*]
  • Parameters
    • tds: TabularDataSet[1]
  • Returns
    • TDSRow[*]

weekOfYear

weekOfYear(d: Date[1]): Integer[1]
  • Parameters
    • d: Date[1]
  • Returns
    • Integer[1]

year

year(d: Date[1]): Integer[1]
  • Parameters
    • d: Date[1]
  • Returns
    • Integer[1]
← Released FunctionsExecution →
  • abs
  • acos
  • asin
  • atan
  • atan2
  • ceiling
  • columnProjectionsFromRoot
  • concatenate
  • cos
  • dateDiff
  • datePart
  • dayOfMonth
  • dayOfWeekNumber
  • deepFetchGetAll
  • distinct
  • drop
  • eq
  • eval
  • exp
  • extend
  • extractEnumValue
  • filter
  • firstDayOfMonth
  • firstDayOfQuarter
  • firstDayOfThisMonth
  • firstDayOfThisQuarter
  • firstDayOfThisYear
  • firstDayOfWeek
  • firstDayOfYear
  • floor
  • getAll
  • getAllVersions
  • getAllVersionsInRange
  • graphFetch
  • greaterThan
  • greaterThanEqual
  • groupBy
  • groupByWithWindowSubset
  • hour
  • join
  • lessThan
  • lessThanEqual
  • limit
  • log
  • minute
  • mod
  • monthNumber
  • mostRecentDayOfWeek
  • olapGroupBy
  • parseDate
  • pow
  • previousDayOfWeek
  • project
  • projectWithColumnSubset
  • quarterNumber
  • renameColumns
  • reportDelta
  • restrict
  • second
  • sin
  • slice
  • sort
  • sortBy
  • sqrt
  • stdDevPopulation
  • stdDevSample
  • subType
  • tableToTDS
  • take
  • tan
  • tdsContains
  • tdsRows
  • weekOfYear
  • year
FINOS
Alloy Documentation
FINOS website
FINOS Privacy Policy
Copyright © 2020 PURE/Alloy