#include <iostream>
#include <complex>
using namespace std;
const double EPS = 1e-10;
typedef complex<double> P;
inline bool eql(double a, double b) { return abs(b - a) < EPS; }
inline bool eql(P a, P b) { return eql(a.real(), b.real()) && eql (a.imag(), b.imag());}
inline double dot(P a, P b) { return a.real()*b.real() + a.imag()*b.imag(); }
inline bool orthogp(P a, P b) { return eql(dot(a, b), 0.0); }

int main(int argc, char **argv)
{
  double xa, ya, xb, yb, xc, yc, xd, yd;
  while (cin >> xa >> ya >> xb >> yb >> xc >> yc >> xd >> yd) {
    if (orthogp(P(xa, ya) - P(xb, yb), P(xc, yc) - P(xd, yd)))
      cout << "YES" << endl;
    else
      cout << "NO" << endl;
  }
  return 0;
}